我是新來的彙編語言,我收到一個奇怪的錯誤。該程序應該顯示用戶輸入的整數的4個最低有效位。它適用於大於8的數字,但對於小於或等於8的數字,它會輸出數字。對於8輸出8000而不是1000,五輸出0401.我不明白爲什麼,有人可以幫忙嗎?彙編語言奇怪的錯誤
.data
inPrompt: .asciiz "Enter an integer: "
outLab: .asciiz "Least significant 4 bits of int entered are "
############################ code segment ################################
.text
.globl main
main:
li $v0, 4
la $a0, inPrompt
syscall # print input prompt
li $v0, 5
syscall # read input integer
move $t0, $v0
li $v0, 4
la $a0, outLab
syscall
li $v0, 1
andi $a0, $t0, 8
syscall
andi $a0, $t0, 4
syscall
andi $a0, $t0, 2
syscall
andi $a0, $t0, 1
syscall
##########################################################
li $v0, 10 # exit
syscall
我試圖實現你的第一個建議,但我只允許使用16行代碼,我無法管理它。因爲如果它是零,我需要輸出這兩個,所以我需要兩個分支?對於你的第二個建議,你是指sll還是sra? – 2013-03-04 06:47:49
@EmilyAnnHall a)如果它是0,它也輸出給定的建議片段;不需要'else':在這兩種情況下我們輸出,唯一的區別是,如果零,我們跳過設置值爲1. b)第二個建議意味着'SRL',即右移邏輯(儘管因爲我們只有正值,'SRA'會有同樣的效果)c)保持東西在16行以下,請參閱編輯。 – mjv 2013-03-04 07:11:48
你的第二個建議完全奏效!你真了不起,我真的很感謝你的幫助。 – 2013-03-04 07:21:27