2016-02-21 70 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)