MIPS输出校准



我已经完成了这项任务的全部代码,但我一生都无法弄清楚如何将其排列成列,以便更好地表示乘法表。通过左对齐或类似性质的东西来寻找一些帮助,使这个输出看起来更可读。

.text
main:
move    $s0 ,   $zero
lw  $s1 ,   MAXROW 
lw  $s2 ,   MAXCOL
li  $t0 ,   1
li  $t1 ,   1
oLoop:
bgt $t1 ,   $s2 ,   done
li  $t0 ,   1
li  $v0 ,   4
la  $a0 ,   break
syscall

iLoop:
bgt     $t0 ,   $s1 ,   oLoop2  
mul $s0 ,   $t0 ,   $t1
li  $v0 ,   1
la  $a0 ,   ($s0)
syscall
li  $v0 ,   4
la  $a0 ,   space
syscall
addi    $t0 ,   $t0 ,   1
b   iLoop
oLoop2:
addi    $t1 ,   $t1 ,   1
j oLoop
done:
li  $v0 ,   10
syscall

.data
MAXROW:        .word    20
MAXCOL:        .word    16
break:         .ascii "n"
space:         .ascii " "

电流输出

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 
4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 
6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 
7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 112 119 126 133 140 
8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 
9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 144 153 162 171 180 
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 
11 22 33 44 55 66 77 88 99 110 121 132 143 154 165 176 187 198 209 220 
12 24 36 48 60 72 84 96 108 120 132 144 156 168 180 192 204 216 228 240 
13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234 247 260 
14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 224 238 252 266 280 
15 30 45 60 75 90 105 120 135 150 165 180 195 210 225 240 255 270 285 300 
16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256 272 288 304 320 

MARS玩具系统对输出的调用没有格式化选项(例如,与Linux MIPS不同,将args传递到printf(如"%5d"(,以将数字填充到5个空格宽(。它们也没有任何光标位置移动或查询功能。

因此,为了实现同样的目的,你需要计算出每个数字中有多少十进制数字,并手动打印正确数量的空格以获得固定的宽度。(例如,从w=1开始,反复乘以10,直到它>你的数字。但对于10的下一次幂不适合寄存器的大数字,这是失败的。(

或者手动将数字格式化为字符串,从填充了空格的固定宽度缓冲区的末尾开始,然后使用MARS打印字符串syscall。(重复除以10的余数,就像"如何在没有从C库打印f的情况下打印汇编级编程中的整数"中的C函数一样?(

(您可能想在每个字段中对齐,这样每个数字的1的位置都在同一列。(

最新更新