2011-10-28 3 views
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) 다음에 오는?

+0

그것은''$ V0, 0 ($의 T2)를 SW 당신이 그것을 변경하는 경우 똑같은 말을합니까? – Ivan

+0

또한 add가 추가되지 않아야합니까? – Ivan

+0

많은 오류가 있습니다. 우리가 시도해 볼 수 있도록 다른 오류를 수정하십시오 ... 그리고 사용중인 시뮬레이터를 지정하십시오. – m0skit0

답변

관련 문제