问题描述
我正在处理一项任务,但一直坚持从 BGR(蓝色、绿色、红色)到 RGB(红色、绿色、蓝色)的转换我一直在尝试反转代码的位置,请注意未使用十六进制代码的前 2 位,其他六对分别对应于 RGB 或 BGR。这是我一直在构建的代码:
.data
FILENAME: .asciiz "C:/Users/conta/Desktop/mario.ppm"
ERROROPEN: .asciiz "Erro ao abrir o arquivo."
STR: .space 512
.text
li $t7,4 #Número de quebras de linhas no arquivo ppm
li $t8,0x0a # \n
li $t9,0 #contador
la $a0,FILENAME #Nome do arquivo a ser aberto.
li $a1,0 #Sempre zero.
li $a2,0 #0 para leitura 1 para escrita.
li $v0,13 #syscall 13 (open file).
syscall
bltz $v0,end_error #menor que zero significa que nao encontrou o arquivo.
move $a0,$v0 #v0 possui o descritor de arquivo.
la $a1,STR #endereco para armazernar os caracteres lidos.
li $a2,1 #ler apenas 1 byte.
readloopcabecalho:
beq $t9,4,preparacao
li $v0,14 #syscall 14
syscall
lb $t4,0($a1)
beq $t4,$t8,cont
addi $a1,$a1,4 #incrementa para o proximo endereco de $a1.
bnez $v0,readloopcabecalho #enquanto v0 for diferente de 0 continua.
preparacao:
la $a1,0x10040000
j readlooppixel
readlooppixel:
beq $t5,3,zera_pula
li $v0,14 #syscall 14
syscall
addi $a1,1 #incrementa para o proximo endereco de $a1.
j cont2
zera_pula:
move $t5,$zero
addi $a1,1
j readlooppixel
cont2:
addi $t5,$t5,1
bnez $v0,readlooppixel #enquanto v0 for diferente de 0 continua.
j preparacao2
cont:
addi $t9,$t9,1
j readloopcabecalho
preparacao2:
la $a1,0x10040000
j arrumandopixel
arrumandopixel:
lw $t3,0($a1)
sw $t3,0($a1)
addi $a1,4 #incrementa para o proximo endereco de $a1.
bne $a1,0x10080000,arrumandopixel
j printcabecalho
printcabecalho:
la $a0,STR #puxando STR para $a0 para aplicar o syscall
li $v0,4 #syscall para printar o cabeçalho
syscall #porem está printando somente o primeiro caractere que foi gravado no endereço
j end
end_error:
la $a0,ERROROPEN
li $v0,4
syscall
end:
li $v0,10
syscall
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)