2017-01-30 9 views
1

整数を入力し、バイナリとヘックスの両方で表現したいと思っています。次に、ビット12,13,14、および15を$ a0の最下位ビットに移動し、出力をバイナリと16進数として表現します。例えば、整数1006460についてMIPSで整数をマスキングする(素早く簡単)

.data 
enter: .asciiz "Please enter your integer:\n" 
binaryI: .asciiz "\nHere is the input in binary: " 
hexI: .asciiz "\n\nHere is the input in hexadecimal: " 
binaryO: .asciiz "\n\nHere is the output in binary: " 
hexO: .asciiz "\n\nHere is the output in hexadecimal: " 

.text 

prompt: 
li $v0, 4 
la $a0, enter 
syscall 

li $v0, 5 
syscall 
add $s2, $0, $v0 

li $v0, 4 
la $a0, binaryI 
syscall 

li $v0, 35 
move $a0, $s2 
syscall 

li $v0, 4 
la $a0, hexI 
syscall 

li $v0, 34 
move $a0, $s2 
syscall 

addi $t0, $0, 7 
srl $s0, $s2, 12 
and $s0, $s0, $t0 

li $v0, 4 
la $a0, hexO 
syscall 

li $v0, 35 
move $a0, $s0 
syscall 

li $v0, 4 
la $a0, binaryO 
syscall 

li $v0, 34 
move $a0, $s0 
syscall 

li $v0, 1 
add $a0, $0, $s0 
syscall 

li $v0, 10 
syscall 

完全に入力し、六角出力作業が、バイナリ出力が最後に余分5を持っている:ここでは私のプログラムです。私が手にエラーがこれです:

ここではバイナリで出力されます。この余分な5は、出力の最後にあることを引き起こしている可能性が何0x000000055

答えて

0

どのように私の愚か。削除したはずです

li $v0, 1 
add $a0, $0, $s0 
syscall 

私のコードから。

関連する問題