2012-11-20 2 views
0

MIPS에서 10 진수의 이진 표현을 표시하려고합니다. 그러나이 프로그램은 무한 루프에 빠져 있습니다. 문제를 파악할 수 없으므로 잘못된 정보를 알려주고이 프로그램이 숫자의 이진 represenatation을 찾는 데 유효합니다. 여기 코드는 다음과 같습니다MIPS 어셈블리에서 10 진수에서 2 진수로 변환

Loop: 

div $s0,$t1 # t1 is 2 

mflo $s0  # storing quotient in s0 for division 
mfhi $s4 

move $a0,$s4 
li $v0,1 
syscall 

beq $s4,0,Exit 

j Loop 

감사

답변

1

$s4가 현재의 자리 (나머지)입니다. $s0을 0으로 테스트해야합니다. 이것은 디버거/시뮬레이터에서 코드를 단계별로 실행 한 경우에 분명해야합니다. 또한 역순으로 숫자가 인쇄됩니다.

이진 변환 만 필요한 경우 일반적인 방법은 교대조를 사용하는 것입니다.

0

어셈블리에서의 분기에는 위험이 있습니다. 일반적으로 지점이 잡힐 때까지 프로그램을 중단합니다. 이것은 프로그램이 명령 세트에서 다음 명령을 실행하지 못하도록하기 위해 수행됩니다.

beq 명령어 뒤에 noop을 삽입 해보십시오. SLL $0, $0, 0

noop은 프로그램에 영향을 미치지 않거나 이미 매닝이없는 명령입니다.