2014-10-05 4 views
1

안녕하세요, ComArch에 새 소식이 있습니다. 나는 숙제를 쓰고있어. 내 질문은 내 루프 내 프로그램을 사용자 int 입력을 10으로 나누고 내 루프를 통해 갈 것입니다 및 나누기 0 때까지 나눕니다. 현재 그것은 내 몫에 대해 0을 출력하지만 나머지는 각 값을 출력합니다. 그렇다면 코드를 수정하여 나누면 남아있는 모든 나머지를 출력 할 수 있습니다.루프 내 값 출력

loop: 
    li $s0, 10 #divisor 

    div $t0,$s0 #divide input by 10 
    mflo $t0 #quotiant 
    mfhi $t3  #remainder 
    sw $t3, ($t1) #stores emainder into address of int_a 
    addi $t1,$t1,4 #increases the pointer 
bne $t0,0,loop 
+0

출력을 인쇄하려면 시스템 호출을해야합니다. – Wajahat

+0

어디에서 발생합니까? 루프 외부? – AbeC

+0

나머지 값의 각 값을 인쇄하므로 루프의 내부에있게됩니다. – Wajahat

답변

0

당신은 MIPS Architecture and Assembly Language Overview에서 찾을 수 섹션 값을 인쇄하는 방법을 자세히 설명 "System Calls and I/O (SPIM Simulator)".

귀하의 경우 루프 내에서 $t3을 인쇄해야합니다.

li $v0, 1   # load appropriate system call code into register $v0; 
        # code for printing integer is 1 
move $a0, $t3 # move integer to be printed into $a0: $a0 = $t3 
syscall    # call operating system to perform operation 
+0

감사합니다. 하나 더. Im은 각 부서별로 각 부서를 인쇄하기 때문입니다. 나머지는 내 정의 된 배열의 주소에 저장됩니까? 모두, 첫 번째 나머지 또는 마지막 나머지? – AbeC

+0

@AbrahamCarmona'$ t3'은 루프가 완료되면 마지막 나머지 만 유지합니다. – VonC

+0

그래서 방향을 바꾸십시오. 나는 상점에서 각각의 주소의 나머지 부분에 새로운 루프를 만들어야 만 할까? 옳은? @vonC – AbeC