Assembly 我做错了什么/试图运行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

这是我写的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

这个程序充满了错误——语法错误和其他错误。下面的
.lrc
底部:看起来像是在编辑过程中意外上移的下一行中的变量名。
绘图框(box*a0,…)
也不是有效的MIPS程序集语法-看起来像是要用作注释,但您忘记了
#
。堆栈帧设置代码(
addi$sp,$sp,-1
)使堆栈指针错位,并将导致存储失败(有趣的是,标签
99:
后面的堆栈帧还原代码看起来正常)。还有其他错误


整个程序看起来像是从几个不同的来源复制粘贴在一起的,完全不了解MIPS汇编语言,这个问题听起来像是家庭作业。首先尝试一个更简单的程序(将两个整数相加,然后编写一个简单的循环,然后编写一个函数来打印以零结尾的字符串,诸如此类)——很明显,您现在对这个问题已经无能为力了。

您做错了什么?首先,对于每个问题报告,您应该包括预期的和实际的行为:-)我尝试对我的程序进行这些更改,但它仍然无法运行。如前所述,提供的源代码中存在更多问题(例如,
move$$a0,$a1
太多了,而独立的
addi
在最后一次
syscall
之后没有任何操作数),但是您仍然没有解释实际出了什么问题(“它不工作”没有切断它),也没有准确说明预期的行为是什么(画一个方框?作为ASCII艺术,或者你有某种视频RAM吗?如果有,在哪里?)。你还没有解释你在什么上面运行代码(系统调用看起来像SPIM,但这并不意味着什么)。