超強瘦性!人氣內搭褲290新手>新婚族選績優龍頭股 輕忽小中風,當心變殘障不捨學生找「槌」 高中...
2013-03-10 12:19:32 人氣(1,399) | 回應(0) | 推薦(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
人氣(1,399) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: [學習]組合語言 |
此分類下一篇:[MIPS] 輸入、輸出數字範例
此分類上一篇:[組合語言][練習] Hello, World!

我要回應
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入以下數字 (ex:123)

(有*為必填)
詳全文