2013-06-05 134 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'。

除此之外,我猜的邏輯是不是做你的意思是做...