0

我试图打开一个包含联系人列表的文件,当我验证格式是否正确(姓名','号码)时,我使用 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
4

1 回答 1

1

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

  • 如果字符 > 'A' 则分支到 Erro
  • 如果字符 < 'Z' 则跳转到零
  • 否则,它将分支到小数

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

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

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

于 2013-06-05T18:44:33.507 回答