为什么blt指令不起作用?火星mips装配

时间:2013-06-05 18:12:04

标签: assembly mips mars-simulator

我正在尝试打开一个包含联系人列表的文件,当我验证是否具有正确的格式(名称','数字)时,我使用bgt和blt指令来查看字符是否更大比z还是低于a,所以拒绝了。但是当我这样做时,我的blt指令不起作用。当它执行的跳转执行标签时,如果在我有一个值大于blt的beq之前,他会跳转到。

Maiuscula:
lb $t0,0($a0)       #carrega a0 em t0
#slt $t1, $zero,$t0 #carater de t0 com zero
beq $t0,$zero,END
nop #se t1=0 entao, t0 tem o carater nulo, logo END
li $t3,0x41     # A maiusculo em ascii
li $t4,0x5a     # Z maiusculo em ascii
slt $t5,$t0,$t4
bgt $t0,$t4,Erro    #tinha bgt
nop

blt $t0,$t3,zero    #here is the error
nop

j minuscula
nop

1 个答案:

答案 0 :(得分:0)

删除行slt $t5,$t0,$t4,因为您正在使用已经使用bgt + blt完成任务的伪指令slt / bne。 除此之外,您的代码将:

  • 如果角色是>则分支到Erro; 'A'
  • 如果字符是<则分支为零'Z'
  • 否则,它将分支到minuscula

所以那里似乎有一些逻辑错误......

例如,您应该使用bge代替bgtble代替blt,否则您将无法正确检查“A”和“Z”。 / p>

除此之外,我猜逻辑并没有按照你的意思去做......