Mam za zadanie zrobić dithering obrazu 8bpp. Po przekształceniu ma mieć 1bpp. Jedyne co mi się udaje to czarny obraz wyjściowy.

 .data
	filen_in:	.asciiz "in.bmp"
	filen_out:	.asciiz "out.bmp"
	pic_in:		.space 3678
	header:		.space 55
	pic_out:	.space 5119
	quant_error:	.byte 
	
.text

main:
	li	$v0, 13
	la	$a0, filen_in
	li	$a1, 0
	li	$a2, 0
	syscall
	
	move	$t7, $v0
	
	move	$a0, $t7
	li	$v0, 14
	la	$a1, pic_in
	la	$a2, 3678
	syscall
	
	li	$v0, 16
	move	$a0, $t7
	syscall 
	
#================================================================================================================
#	REJESTRY
#	$S0 - ADRES PIC_IN
#	$s1 - LICZNIK 
#	$s2 - WSKAZNIK PIC_OUT
#	$t6 - pomocniczy
#================================================================================================================
	li	$t0, 1
	sb	$t0, pic_in+28 #zapisywanie ustawien monochromatycznych
	
#================================================================================================================
	addiu	$s0, $zero, 58
	addiu	$t6, $s0, 3678
	move	$s2, $zero
loop:
	move	$s1, $zero	#licznik
	move 	$t2, $zero	#rejestr kolorow
change_color:
	lb	$t0, pic_in($s0)
	bgt	$t0, 123, whitepix
	add	$t2, $t2, 1
whitepix:
	sll	$t2, $t2, 1
	addi	$s1, $s1, 1
	addi	$s0, $s0, 1
	beq	$s0, $t6, exit
	bne 	$s1, 8, change_color
	sb	$t2,pic_out($s2)
	addiu	$s2, $s2, 1
	j 	loop
	
	
#==================================================================================	
	
	
exit:
	sb	$t2,pic_out($s2)
	addiu	$s2, $s2, 1
	
	
	#open file
	la	$a0, file_out
	li	$a2, 0
	li	$a1, 1
	li	$v0, 13
	syscall
	move	$t7, $v0
	
	#zapis do pliku
	move	$a0, $t7
	li	$v0, 15
	la	$a1, pic_in 
	li	$a2, 57
	syscall
	
	move	$a0, $t7
	li	$v0, 15
	la	$a1, pic_out
	li	$a2, 1500
	syscall
	
	#zamkniecie pliku
	li	$v0, 16
	move	$a0, $t7
	syscall
	
	li	$v0, 4
	la	$a0, filen_out
	syscall