2013-06-05 135 views
0

我试着用联系人列表打开一个文件,当我验证是否使用正确格式(名称,数字)时,我使用bgt和blt指令来查看字符大于z或低于a,因此被拒绝。但是当我这样做时,我的blt指令不起作用。当它的执行跳跃做标签,并且如果之前我有一个比blt更大的beq,他跳到。为什么blt指令不起作用? Mars mips程序集

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 

回答

0

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

  • 分公司埃罗如果人品>“A”
  • 分公司零如果字符是<“Z”
  • 否则,它会跳转到minuscula

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

例如,你应该使用bge代替bgtble而不是blt,否则您不会正确检查'A'和'Z'。

除此之外,我猜的逻辑是不是做你的意思是做...