Assembly 我做错了什么/试图运行MIPS程序来构造/绘制方框
这是我写的MIPS程序。但是我的程序不会构造/绘制一个方框Assembly 我做错了什么/试图运行MIPS程序来构造/绘制方框,assembly,mips,Assembly,Mips,这是我写的MIPS程序。但是我的程序不会构造/绘制一个方框 .data button: .struct xleft: .byte 0 ytop: .byte 0 size: .byte 0 state: .byte 0 label: .space 4 action: .word .data box: .struct ulc: .byte top: .by
.data
button: .struct
xleft: .byte 0
ytop: .byte 0
size: .byte 0
state: .byte 0
label: .space 4
action: .word
.data
box: .struct
ulc: .byte
top: .byte
urc: .byte
left: .byte
right: .byte
llc: .byte
bottom: .lrc
.data
pressed: .byte 201,205,184,186,174,211,196,217 #ASCII codes for program
drawBox(box *a0,byte left,byte top, size a3);
.code
drawBox: addi $sp,$sp,-1
sw $a0,($sp)
sw $a1,4($sp)
addi $t0,$a3,0xf
srl $t9,$a3,4
move $$a0,$a1
move $a1,$a2
syscall $xy
lw $t7,($sp)
syscall $print_char
lbu $a0,box.top($t7)
move $t1,$t8
b 2f
1: syscall $print_char
addi $t1,$t1,-1
2: bnez $t1,1b
lbu $a0,box.urc($t7)
syscall $print_char
move $t1,$t9
b 2f
syscall $print_char
addi
99: addi $sp,$sp,8
jr $ra
这个程序充满了错误——语法错误和其他错误。下面的
.lrc
底部:看起来像是在编辑过程中意外上移的下一行中的变量名。绘图框(box*a0,…)
也不是有效的MIPS程序集语法-看起来像是要用作注释,但您忘记了#
。堆栈帧设置代码(addi$sp,$sp,-1
)使堆栈指针错位,并将导致存储失败(有趣的是,标签99:
后面的堆栈帧还原代码看起来正常)。还有其他错误
整个程序看起来像是从几个不同的来源复制粘贴在一起的,完全不了解MIPS汇编语言,这个问题听起来像是家庭作业。首先尝试一个更简单的程序(将两个整数相加,然后编写一个简单的循环,然后编写一个函数来打印以零结尾的字符串,诸如此类)——很明显,您现在对这个问题已经无能为力了。您做错了什么?首先,对于每个问题报告,您应该包括预期的和实际的行为:-)我尝试对我的程序进行这些更改,但它仍然无法运行。如前所述,提供的源代码中存在更多问题(例如,
move$$a0,$a1
太多了,而独立的addi
在最后一次syscall
之后没有任何操作数),但是您仍然没有解释实际出了什么问题(“它不工作”没有切断它),也没有准确说明预期的行为是什么(画一个方框?作为ASCII艺术,或者你有某种视频RAM吗?如果有,在哪里?)。你还没有解释你在什么上面运行代码(系统调用看起来像SPIM,但这并不意味着什么)。