2013-03-10 11:30:09Morris

[組合語言][練習] Hello, World!

用 EDI (index register) 記錄 string 的位址。
用 ECX 計數 for 迴圈要跑幾次 (跑 string.length 次)。

每跑一次 EDI += BYTE 的大小。

call WriteChar 印出 AL 裡面的值



TITLE hello_word

INCLUDE Irvine32.inc

.data
string BYTE "Hello, World !", 0
.code
main PROC
    mov edi, OFFSET string   ;pointer to str
    mov ecx, LENGTHOF string ;loop counter
LOOPi:
    mov al, [edi]            ;move str[edi] to AL
    add edi, TYPE string     ;edi++
    call WriteChar           ;write AL as char
    loop LOOPi
    ret
main ENDP
end main