24h購物| | PChome| 登入
2013-03-23 08:28:02| 人氣37,767| 回應0 | 上一篇 | 下一篇

[MIPS] 輸入、輸出數字範例

推薦 0 收藏 0 轉貼0 訂閱站台

程式操作很簡單,輸入十一個數字於陣列中,並將這十一個數字輸出。
使用 QtSpim 操作環境。

#include <stdio.h>

int main() {
    int array[11], size = 11;
    int *t1 = array, t2 = size;
    int t0 = 0, v0;
    int s0 = 0;
inputi:
    scanf("%d", &v0);
    *(t1+t0) = v0;
    t0++;
    s0++;
    if(s0 != t2)
        goto inputi;
    s0 = 0;
    t0 = 0;
outputi:
    printf("%d\n", *(t1+t0));
    t0++;
    s0++;
    if(s0 != t2)
        goto outputi;
    return 0;
}
約略的相同 .cpp
   


MIPS1.PNG


[MIPS] 輸入、輸出數字範例




MIPS2.PNG


[MIPS] 輸入、輸出數字範例




MIPS3.PNG


[MIPS] 輸入、輸出數字範例




MIPS_test.PNG


[MIPS] 輸入、輸出數字範例






#Write Bubble Sort by MIPS instruction
#read 11 numbers to sort(small to larger)

        .text
        .globl main
main:
        addi  $sp, $sp, -12
        sw    $ra, 0($sp)
        sw    $s0, 4($sp)
        sw    $s1, 8($sp)
        
        #start process
        move  $s0, $zero      # i = 0
        li    $t0, 0          # j = 0
        la    $t1, array      # load $t1 = &array
        lw    $t2, size       # load $t2 = size
       
inputi:   #start readinput
        li    $v0, 5          # $v0 function result, call readInt
        syscall               # ReadInt(& $v0)
        add   $t3, $t0, $t1   # $t3 = array + $t0 (array+j)
        sw    $v0, 0($t3)     # array+t3 = v0       
        addi  $t0, $t0, 4     # 4 bytes(word)
        addi  $s0, $s0, 1     # i = i+1
        bne   $s0, $t2, inputi
        #end readinput
       
        #start output
        move  $s0, $zero      # i = 0
        li    $t0, 0          # j = 0 ($t0)
outputi:
        li    $v0, 1          # $v0 function result, call printInt
        add   $t3, $t0, $t1   # $t2 = array + $t0
        lw    $a0, 0($t3)     # printInt($a0)
        syscall       
        li      $v0, 4        # printString
        la      $a0, nl
        syscall
        addi  $t0, $t0, 4     # j += 4, 4 bytes(word)
        addi  $s0, $s0, 1     # i = i+1
        bne   $s0, $t2, outputi
        #end output       
       
        lw    $s1, 8($sp)
        lw    $s0, 4($sp)
        lw    $ra, 0($sp)
        addi  $sp, $sp, 12
        jr    $ra
        #end process
#Note:
        .data
array:    .word 0,0,0,0,0,0,0,0,0,0,0
size:   .word 11
nl:     .asciiz "\n"

台長: Morris
人氣(37,767) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: [學習]組合語言 |
此分類下一篇:[組合語言][作業] convert pattern (binary to string)
此分類上一篇:[組合語言][練習] 九九乘法表

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文