2016-02-21 72 views
-4

读入您的学生ID并将其保存到寄存器,并读取数字“10010000x”作为初始内存地址 。然后将您的学生证号码一次一位移到正确的位置,并将其保存到内存地址为 ,该地址距前一个内存地址为4个字节,直到您的 学生证号码小于1,然后保存您的最终学生其中ID号不小于 1,并保存最后的内存地址,以及多少次迭代到3个不同的内存地址的 地址。打开MARS图形打印输出,其中包含显示学生ID,内存地址和所有寄存器值的MIPS程序代码 ,并在硬拷贝纸上回答 以下三个问题:
(1)多少为了让你的学生证号码小于1,你必须做的右移? (2)你的最后一个不小于1位二进制学生身份证号码是多少? (3)保存最后一个不少于1个学生ID的最后一个内存地址是多少?mips汇编代码以移位位编程

回答

1
li $t0, 0x10010000 
li $t1, student id 
li $s3, 1 
li $s5, 1 
add $s0, $t0, $zero 
add $s1, $t1, $zero 
loop1 : sw $s1, 0($s0) 
srl $s2, $s1, 1 
slt $s4, $s2, $s3 
beq $s4, $s3, L2 
addi $s0, $s0, 4 
add $s1, $s2, $zero 
add $s5,$s5,$s3 
j loop1 
L2 : addi $s0, $s0, 4 
sw $s5, 4($s0) 
sw $s2, 8($s0) 
addi $t3, $s0, -4 
sw $t3, 12($s0)