0

我遇到以下问题:

“将余数寄存器左移,将最右边的位设置为 0”

我的尝试: lui $s0, 1 # 将余数寄存器左移 1 位

还是应该是 1*4 = 4 而不是 1 的偏移量?

4

2 回答 2

3

你有指令集参考吗?lui是加载上立即数,它不移动寄存器,它移动立即数,并移动 16 位。所以lui $s0, 1只需加载0x00010000$s0.

要左移,可以使用sll指令,例如sll $s0, $s0, 1

于 2012-11-26T19:46:12.047 回答
0

。数据

prompt_devident: .asciiz "\n 输入你的 Devident :\n "
prompt_devider: .asciiz "输入你的 Devider :\n "
print_quotient: .asciiz "你的商是:"
print_reminder: .asciiz "\n 你的提醒是:"

.text
.globl 主要
主要:

l4: la $a0, prompt_devident
li $v0,4
系统调用

li $v0,5        
syscall        
move $t0,$v0        

la $a0, prompt_devider        
li $v0,4        
syscall        

li $v0,5        
syscall        
move $t1, $v0        

ori $t2,  $zero,0        
ori $t3,  $zero,0        
ori $t4,  $zero,0        
ori $t5,  $zero,32        

循环: sll $t2,$t2,1
bgez $t0,l1
ori $t2,$t2,1

l1: sll $t0,$t0,1
subu $t3,$t2,$t1
bgez $t3,l2

l3: addi $t4,$t4,1
beq $t4,$t5,next
j 循环

l2: move $t2,$t3
ori $t0,1
j l3

next: la $a0, print_quotient
li $v0,4
syscall

    move  $a0,$t0               
    li    $v0,1            
syscall            

la $a0, print_reminder            
li $v0,4            
syscall            

    move  $a0,$t2               
    li    $v0,1            
syscall            
j l4            

li $v0, 10            
syscall            
于 2015-03-14T11:38:47.903 回答