MIPS汇编一个简单的for循环(二)
MIPS assembly a simple for loop (2)
这是我在 MIPS 中学习循环的第一次尝试。
.data
spc: .asciiz ", "
.globl main
main:
li $t0, 0
loop:
bgt $t0, 14, exit # branch if($t0 > 14)
addi $t0, $t0, 1 # $t0++ for loop increment
# print a comma
la $a0, spc # copy spc to $a0 for printing
li $v0, 4 # syscall value for strings
syscall
# repeat loop
j loop
exit:
li $v0, 10 # syscall value for program termination
syscall
输出:
-- program is finished running (dropped off bottom) --
该程序应该在 I/O 控制台中打印 15 个逗号。那没有发生。
可能是什么问题?
参考:MIPS assembly for a simple for loop
您将所有代码组装到 .data
部分;你再也没有切换回 .text
.
如果您使用的是 MARS,则 GUI 不会在反汇编(组装后)中显示任何 asm 指令。这就是为什么。
显然,MARS 并没有因为 main
位于不可执行页面而出错,而是在您启动该程序后立即 "dropped off the bottom" 简单地决定它。
这是我在 MIPS 中学习循环的第一次尝试。
.data
spc: .asciiz ", "
.globl main
main:
li $t0, 0
loop:
bgt $t0, 14, exit # branch if($t0 > 14)
addi $t0, $t0, 1 # $t0++ for loop increment
# print a comma
la $a0, spc # copy spc to $a0 for printing
li $v0, 4 # syscall value for strings
syscall
# repeat loop
j loop
exit:
li $v0, 10 # syscall value for program termination
syscall
输出:
-- program is finished running (dropped off bottom) --
该程序应该在 I/O 控制台中打印 15 个逗号。那没有发生。
可能是什么问题?
参考:MIPS assembly for a simple for loop
您将所有代码组装到 .data
部分;你再也没有切换回 .text
.
如果您使用的是 MARS,则 GUI 不会在反汇编(组装后)中显示任何 asm 指令。这就是为什么。
显然,MARS 并没有因为 main
位于不可执行页面而出错,而是在您启动该程序后立即 "dropped off the bottom" 简单地决定它。