0

私は次のことに問題があります:

「Remainder レジスタを左にシフトし、右端のビットを 0 に設定」

私の試み: lui $s0, 1 # 残りのレジスタを 1 ビット左にシフト

または、オフセットの 1 ではなく 1*4 = 4 にする必要がありますか?

4

2 に答える 2

3

命令セットリファレンスはありますか?luiLoad Upper Immediateであり、レジスタをシフトせず、イミディエートを16ビットシフトします。したがってlui $s0, 1、にロード0x00010000するだけ$s0です。

sll左にシフトするには、次のような命令を使用できますsll $s0, $s0, 1

于 2012-11-26T19:46:12.047 に答える
0

。データ

prompt_devident: .asciiz "\n デバイス ID を 入力
してください:\n "

.text
.globl メイン
メイン:

l4: la $a0, prompt_devident
li $v0,4
syscall

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
サブ $t3,$t2,$t1
bgez $t3,l2

l3: addi $t4,$t4,1
beq $t4,$t5,next
j ループ

l2: $t2,$t3
ori $t0,1
j l3 を動かす

次: 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 に答える