[心得] assembly hello world
標題[心得] assembly hello world
時間北極光 (2010/01/29 Fri 22:51:06)
為什麼我會看 assembly 就別問了... 反正就是心血來潮.......(遮臉) 想當年我第一次看到組譯器跟assembly code的時候才國二 , 根本就還不知道那是啥 , 勉強只看得懂 jmp 跟 mov 而已. XDDDD 是說現在看起來豈一個吃力而已 -_-;; 不過這麼 geek 的東西還真的是勾起我的興趣. http://home.educities.edu.tw/wanker742126/index.html 稍微翻了一些入門文件的感想簡單寫一下 , 1.不同環境的組語指令會完全不一樣 , 如 mac / pc 的指令是有差異的 2.基本環境還是從寫code開始 , 再組譯成目標檔(obj) , 最後再link成exe. 3.machine code 跟組譯碼(assembly code)的差別 , 前者僅記憶體位置跟內容 , 後者加入 mov , jmp 這類描述文字 , 稱為助記碼. (註:記憶體由偏移量跟記憶體位置組成 , 因為單一記憶體只能存 2^16 個位元 , 所以用兩組記憶體來構成 2^32 .) 寫 assembly 我猜測第一個門檻在於指令的背誦... 就像是下面這段類 hello world 的寫法 , 09,10,11,12 這四行這種東西應該只能靠背誦或查表了吧 @_@ 今天的精神力就看這麼一點東西就見底了........QQ ;*************************************** ;01 code segment ;02.code 段開始位址 assume cs:code,ds:code ;03.假設程式段及資料段 org 100h ;04.可改成 *.COM 檔 ;--------------------------------------- ;05. start: jmp begin ;06.程式進入點 mes db '...test,Hi, I learn assembly.$' ;07.要印出的訊息 begin: mov dx,offset mes ;08.指向 mes 的位址 mov ah,9 ;09.呼叫DOS服務程式,AH=9/INT 21H 表示印出字串 int 21h ;10.呼叫 DOS 服務程式 mov ax,4c00h ;11.指定要呼叫的服務號碼 int 21h ;12.呼叫 DOS 服務程式 ;--------------------------------------- ;13. code ends ;14.code 段結束 ;*************************************** ;15. end start ;16.使組譯器知道程式進入點 -- ▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮ ◥███████████◣ ╰┼╯=│=│ ◥██████───────◣ *.╯ ╯ ╯ の物語.* ◥███████──────◣~◢◣ ◢◣ ◥██████───────◤ ◥◤* 空白的世界.翼 *◥◤ ◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂~telnet://tony1223.no-ip.info -- ╭═ Origin ─═ 北極光 aurora.twbbs.org κλμ ─╣ ╚─ Author ═─ 220-133-218-161.HINET-IP.
Comments
No approved comments yet.