簡體   English   中英

MIPS匯編程序不執行生產線

[英]MIPS Assembly Program Not Performing Lines

我當前正在使用MIPS Assembly。 我最近學習了如何同時執行宏和數組(某種),因此我迅速編寫了一個相當簡單的程序來對其進行測試。 但是,在獲取數據並再次顯示之間,我希望輸出一條新消息。 出於某種原因,我的程序似乎沒有執行此操作,即使在逐步執行它的過程中,實際上確實要經過這些行-它只是沒有任何輸出。 在MIPS匯編中是否有任何特定原因為什么不起作用,還是在MARS匯編器中出現故障?

.data
    testlist: .word 50
    request: .asciiz "Enter pi up to 50 digits: 3."
    out: .asciiz "\nPi: 3."
.text
.macro arraygetword(%initaddress,%offset,%storeto)
    la $a1,%initaddress
    mul $a0,%offset,4
    add $a0,$a0,$a1
    lw %storeto,($a0)
.end_macro
.macro arraysetword(%initaddress,%offset,%value)
    la $a1,%initaddress
    mul $a0,%offset,4
    add $a0,$a0,$a1
    sw %value,($a0)
.end_macro
.macro arraygetbyte(%initaddress,%offset,%storeto)
    la $a1,%initaddress
    add $a0,%offset,$a1
    lw %storeto,($a0)
.end_macro
.macro arraysetbyte(%initaddress,%offset,%value)
    la $a1,%initaddress
    add $a0,%offset,$a1
    sw %value,($a0)
.end_macro
main:   
    la $a0,request
    li $v0,4
    syscall
    li $t0,0
    li $t1,50
forloop:
    li $v0,12
    syscall
    arraysetword(testlist,$t0,$v0)# testlist[$t0]=$v0
    addi $t0,$t0,1
    blt $t0,$t1,forloop

    li $t0,0
    li $t1,50

    la $a0,out# This is the part not working.
    li $v0,4#   Why doth this not output anything?
    syscall#    I need some sort of line break. It's awkward otherwise.
output:
    arraygetword(testlist,$t0,$a0)# $a0=testlist[$t0]
    li $v0,11
    syscall
    addi $t0,$t0,1
    blt $t0,$t1,output

    li $v0,10
    syscall

testlist: .word 50 分配50個字,它分配值為50。這樣一個字,你的程序重寫后對它的記憶,其中包含你的字符串進行打印。 當然,到那時您已經打印了request因此不會受到影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM