首页 > 解决方案 > MIPS 忽略“Beq”语句

问题描述

所以,我有这个问题,我必须翻译 C 代码:

if (A == 2 || B == 3 && C != 4)
printf(“TRUE”);
else
printf(“FALSE”);

进入 MIPS 程序集。我已经设法将树整数存储在不同的注册器中,但是当我与“beq”进行比较时,我遇到了问题,无论我的输入如何,它总是打印“true”,当我调试时,问题出在第一个“ beq”,他总是跳过我的条件来打印“true”,我不知道为什么,任何帮助都会很明显。那是我的代码:

.data
varA:   .word   2
A:  .asciiz "A: "
B:  .asciiz "B: "
C:  .asciiz "C: "
outputTrue:   .asciiz     "\nTrue"
outputFalse:   .asciiz     "\nFalse"

.text

addi $t0, $zero, 2
addi $t1, $zero, 3
addi $t2, $zero, 4

.globl main

main:
li  $v0, 4
la  $a0, A
syscall

li  $v0, 5
syscall

move    $t3, $v0

li  $v0, 4
la  $a0, B
syscall

li  $v0, 5
syscall

move    $t4, $v0

li  $v0, 4
la  $a0, C
syscall

li  $v0, 5
syscall

move    $t5, $v0
syscall

#t3 = A, $t0 2
#t4 = B, $t1 3
#t5 = C, $t2 4

beq $t3, $t0, outputT
beq $t4, $t1, checkT

outputT:
li $v0, 4
la $a0, outputTrue
syscall
j   EXIT

outputF:
li $v0, 4
la $a0, outputFalse
syscall
j   EXIT

checkT:

beq $t5, $t2, outputF
beq $t4, $t1, outputT

EXIT:
li  $v0, 10
syscall

我是 stackoverflow 和 MIPS 的新手 :(

标签: assemblymips

解决方案


推荐阅读