Post · 2010-02-17 15:10

[心得] assembly hello world

作者Tony1223.bbs@aurora.mis.yzu.edu.tw (沉默是金)
標題[心得] 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.
Replies
0
Likes
0
Reposts
0

Comments

No approved comments yet.