2017-05-21 11 views
0

나는 왜 내가 십진수를 얻고 있는지 알고 싶습니다. 내가 대답은 4해야 2, 2를 입력하지만 출력이 0.04두 숫자의 Mips 곱하기 함수

.data 
msg1: .asciiz "Please enter a number i " 

msg2:.asciiz "Please enter a number j " 

.text 

.globl main 

main: 

la $a0,msg1 #print message 

li $v0,4 

syscall 

li $v0,5 

syscall 

move $a1,$v0 #i 

la $a0,msg2 #print message 

li $v0,5 

syscall 

move $a2,$v0 #j 

jal cal 

addi $a0,$a0,0 

li $v0,1 #print integer in reg a0 

syscall 

li $v0,10 

syscall 

cal: 

mult $a1,$a2 

mfhi $a0 

syscall 

jr $ra 

답변

0

당신은 다음 - 투 - 마지막 줄, 아니 작동 코드 지정에 syscall이 경우, 예를 들어 - 그것은 아무것도 기본적으로 할 수있는, 그 시점에서 $ v0에 있었던 일에 따라 달라집니다. 2와 2의 테스트 입력을 사용하면 $ v0에 2가 들어갑니다.이 값은 "print float"연산입니다. 따라서 프로그램에서 임의의 의미있는 부동 소수점 값 (0.0 일 수 있음)을 인쇄 한 다음 올바른 결과 인 4이 인쇄되었습니다.