这是我写的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: .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
答案 0 :(得分:2)
这个程序充满了错误 - 语法错误等等。 .lrc
后面的bottom:
看起来像是来自以下行的变量名,在编辑过程中意外移动了该行。 drawBox(box *a0,...)
也不是有效的MIPS汇编语法 - 看起来它似乎是一个评论,但你忘记了#
。堆栈帧设置代码(addi $sp,$sp,-1
)错位堆栈指针并将导致存储失败(有趣的是,标签99:
后面的堆栈帧恢复代码看起来没问题)。还有其他错误。
整个程序看起来像是复制&从几个不同的来源粘贴在一起,完全不了解MIPS汇编语言,这个问题听起来就像是家庭作业。首先尝试更简单的程序(将几个整数加在一起,然后编写一个简单的循环,然后编写一个函数来打印一个以零结尾的字符串,类似的东西) - 很明显你已经超出了你的深度这个问题现在。