2016-09-29 3 views
1

그래서 내 질문은 어떻게이 오류를 해결할 수 있습니다. 내 프로그램의 구조인가? 또는 레지스터 사용 방법에 대해 어떻게 생각하십니까?잘못된 프로그램 카운터로 인한 충돌

#JTWILKI - Just The Way I Like It Cooking Assistant 
# Created By: Samuel Buzas 
#For CS2028 Sect.002 
.data 
    preface: .asciiz "Place you Steak in the oven, and kick back. I'll take care of the rest! \n" 
    RED: .asciiz "Steaks Not Ready Yet Come Back Soon! \n" 
    YELLOW: .asciiz "Get Ready to Eat!! \n" 
    GREEN: .asciiz "Were Ready to Go!!! \n Get The Steak Out Now, Before it Burns!\n" 
    BROWN: .asciiz "Quick It's Starting to Burn!! \n Take it Out!!! \n" 
    BLACK: .asciiz "So how about Soup? \n" 

.text 
main: 
# Tell User the program is starting 
    li $v0, 4 
    la $a0, preface 
    syscall 
# Pause for 10 seconds while users places steak in oven, handy MARS Feature 
    li $v0, 32 
    la $a0, 10000 
    syscall 
#Display message,Start Cooking 
    j red 

    addi $s1, $zero, 150000 # Tihs is 2 min 30seconds 
    addi $s0, $zero, 0 

    #Start The cooking Loop 
    jal loop 

loop: beq $s1,$s0,exit # Exit if t9 == t1 
    bge $s0, 120000, yellow # If 30secs from being ready, print yellow warning 
    #Otherwise, Increment 
    addi $s0, $zero, 1000 
    #Pause for 1 sec 
    #li $v0, 32 
    #la $a0, 1000 
    #syscall 
    j loop 

exit: 
#Display message, Cooking complete 
    jal green 
#Wait 30 Seconds, then overcooking 
    li $v0, 32 
    la $a0, 30000 
    syscall 
#Now overcooked 
    jal brown 
#Wait another 30 seconds 
    li $v0, 32 
    la $a0, 30000 
    syscall 
# Now its burned 
    jal black 

# Terminate Program 
    li $v0, 10 
    syscall 
#Progress Update Functions 
red: 
    li $v0, 4 
    la $a0, RED 
    syscall 
    jr $ra 

yellow: 
    li $v0, 4 
    la $a0, YELLOW 
    syscall 
    jr $ra 

green: 
    li $v0, 4 
    la $a0, GREEN 
    syscall 
    jal beep 
    jr $ra 

brown: 
    li $v0, 4 
    la $a0, BROWN 
    syscall 
    jr $ra 

black: 
    li $v0, 4 
    la $a0, BLACK 
    syscall 
    jr $ra 

beep: 
    li $v0, 31 
    li $a0, 112 
    li $a1, 2000 
    li $a2, 10 
    li $a3, 100 
    syscall 
    jr $ra 
+1

정말 오류가 이해가 안 돼요 어셈블리 언어에 새로운. – Applesausce

+0

모든 형식을 지정하지 않고 코드 전체를 게시하고 제목 대신 주석을 사용하면 복사하여 붙여 넣을 수 있으므로 도움이됩니다. – user1274820

+0

그래, Mips는 코드 스 니펫에서 잘하지 못했고, 페이스트 빈을 heres – Applesausce

답변

1

나는 빨간색으로 점프를 연결하지 않는다고 생각합니다. 라인 (34)에 addi $t0, $t0, 1000로 변경 addi $t0, $zero, 1000

라인 (23)에 jal red

변경 j red$t0 1000을 추가하고 저장합니다.

+0

문제가 해결되었습니다. 그러나 그 이후에는 아무 것도 실행되지 않는 것 같습니다. – Applesausce

+0

http://pastebin.com/7xAAPy9c resturcteured and corrected forms를 다시 작성해보십시오. – Applesausce

+0

루프에있는 두 번째 줄과 관련이 있다고 생각합니다. – Applesausce