24h購物| | PChome| 登入
2013-03-10 12:19:32| 人氣14,817| 回應0 | 上一篇 | 下一篇

[組合語言][練習] 九九乘法表

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

練習使用 for 迴圈,同時使用兩層 for 迴圈的操作。

會發現 jump 的指令不能跳躍太多行,網路上查是 -128-127,應該是 byte 為單位的指令長度。

使用 push 暫存第一個迴圈的值,第二個迴圈結束後,在 pop 回來,並且 jump 回去。




TITLE table

INCLUDE Irvine32.inc

.data
x db ?
y db ?
z db ?
str1 db "*", 0
str2 db "=", 0
newline db 0dh, 0ah, 0
.code
main PROC
    mov ecx, 9 ; i = 9
    mov x, 1   ; x = 1
fori:
    mov y, 1   ; y = 1
    push ecx   ; store i
    mov ecx, 9 ; j = 9
forj:
    mov al, x
    mul y      ; AL = AL*y
    mov z, al  ; z = al
    
    mov al, ' '
    call WriteChar
    mov eax, 0
    movzx ax, y  ;
    call WriteDec
    mov edx, OFFSET str1 ; print " * "
    call WriteString
    movzx ax, x  ;
    call WriteDec
    mov edx, OFFSET str2 ; print " = "
    call WriteString
    movzx ax, z  ;
    call WriteDec
    inc y      ; y++
    loop forj
    mov edx, OFFSET newline ; print "\n"
    call WriteString
    pop ecx
    inc x
    loop fori
    ret
main ENDP

END main





 

台長: Morris
人氣(14,817) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: [學習]組合語言 |
此分類下一篇:[MIPS] 輸入、輸出數字範例
此分類上一篇:[組合語言][練習] Hello, World!

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