почему инструкция по blt не работает? Сборка mips марс

Я пытаюсь открыть файл со списком контактов, и когда я проверяю, правильно ли он формат (имя ',' число), я использую инструкции bgt и blt, чтобы увидеть, больше ли символы, чем z или ниже, чем а, поэтому отклонено. но когда я это сделаю, моя инструкция по blt не работает. когда его выполненный переход делает метку, и если до этого у меня есть beq со значением больше, чем blt, он переходит к.

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

person Luis Candeias    schedule 05.06.2013    source источник


Ответы (1)


Удалите строку slt $t5,$t0,$t4, поскольку вы используете псевдоинструкцию _2 _ / _ 3_, которая уже использует slt + bne для выполнения задачи. Помимо этого, ваш код будет:

  • Перейти к Erro, если символ> 'A'
  • Переход к нулю, если символ ‹'Z'
  • В противном случае он разветвляется на минускулу.

Так что вроде бы там какие-то логические ошибки ...

Например, вы должны использовать bge вместо bgt и ble вместо blt, потому что в противном случае вы не сможете правильно проверить «A» и «Z».

Кроме того, я полагаю, что логика не делает то, что вы хотели ...

person gusbro    schedule 05.06.2013