0
10 진수를 2 진수로 변환하는 프로그램을 작성하고 싶습니다. 이를 위해 배열을 사용합니다. 아래 주석 라인을보고는 스핌 시뮬레이터가 아닌 명령을mips 프로그램에서 mips/mflo/sw을 알 수 없습니다.
.text
.globl __start
__start:
la $a0,prompt
li $v0,4
syscall
li $v0,5
syscall
move $t1,$v0
li $t0,0
la $t2,bin
#add $t2,$t2,124
lop:
div $t1,$t1,2
mflo $v0
sw $v0,($t2) #right here
add $t2,$t2,4
add $t0,$t0,1
ble $t0,32,lop
j dnn
ads:
la $a0,spc
li $v0,4
syscall
j back
dnn:
la $t0,bin
li $t3,1
la $a0,pr2
li $v0,4
syscall
add $t0,$t0,124
lp2:
lw $t1,($t0)
sub $t0,$t0,4
add $t3,$t3,1
move $a0,$t1
li $v0,5
syscall
div $t4,$t3,4
mflo $t4
ble $t4,0,ads
back:
ble $t3,33,lp2
li $v0,10
syscall
.data
prompt: .asciiz "Enter decimal: "
spc: .asciiz " "
pr2: .asciiz "\nbinary value:\n"
bin: .space 128
편집을 실행하려고 시도 말한다 때문에 작동하지 않을 수 있습니다 이유를 알려주세요 : 지금 모든 등 일부 변경, ADDI의의 '추가의이'만들어
[0x00400020] 0x3c011001 lui $1, 4097 [bin] ; 15: la $t2,bin
[0x00400024] 0x342a0022 ori $10, $1, 34 [bin]
[0x00400028] 0x34010002 ori $1, $0, 2 ; 17: div $t1,$t1,2
[0x0040002c] 0x0121001a div $9, $1
[0x00400030] 0x00004812 mflo $9
[0x00400034] 0x00001012 mflo $2 ; 18: mflo $v0
[0x00400038] 0xad420000 sw $2, 0($10) ; 19: sw $v0,($t2)
왜 엠플로 두 번 수행됩니다 '.align이라는 2'내가 뭔가 흥미로운 것을 눈치 스핌 시뮬레이터도 .DATA (PCSpim) 다음에 오는?
그것은''$ V0, 0 ($의 T2)를 SW 당신이 그것을 변경하는 경우 똑같은 말을합니까? – Ivan
또한 add가 추가되지 않아야합니까? – Ivan
많은 오류가 있습니다. 우리가 시도해 볼 수 있도록 다른 오류를 수정하십시오 ... 그리고 사용중인 시뮬레이터를 지정하십시오. – m0skit0