1 / 31

第 10 章

第 10 章. 高階語言的聯結. 本章提要. 記憶模式 節區的宣告 組合語言的標準格式 組合語言與 C 的聯結 傳引數 PROC 與 . MODEL 功能. 記憶模式. TINY 模式 SMALL 模式 MEDIUM 模式 COMPACT 模式 LARGE 模式 HUGE 模式 FLAT 模式. SMALL 模式. 簡易的節區宣告. . CODE [name]: 程式節區 .DATA: 已初值化的資料節區 .DATA?: 未初值化的資料節區 .FARDATA [name]: 用來存放已初值化的遠程資料節區

hetal
Download Presentation

第 10 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 10 章 高階語言的聯結

  2. 本章提要 • 記憶模式 • 節區的宣告 • 組合語言的標準格式 • 組合語言與 C 的聯結 • 傳引數 • PROC 與 .MODEL 功能

  3. 記憶模式 • TINY 模式 • SMALL 模式 • MEDIUM 模式 • COMPACT 模式 • LARGE 模式 • HUGE 模式 • FLAT 模式

  4. SMALL 模式

  5. 簡易的節區宣告 • .CODE [name]:程式節區 • .DATA:已初值化的資料節區 • .DATA?:未初值化的資料節區 • .FARDATA [name]:用來存放已初值化的遠程資料節區 • .FARDATA? [name]:用來存放未初值化的遠程資料節區

  6. 簡易的節區宣告 • .CONST:常數節區 • .STACK [size]:堆疊節區

  7. 完整的節區宣告

  8. GROUP 節群

  9. GROUP 節群

  10. 暫存器的初值 • 當 MASM 組譯好程式時, 會在 EXE 檔案內記錄下 cs:ip、ss:ip 等暫存器的初始值, MS-DOS 在載入程式時便會把這些值設給 cs:ip、ss:ip 暫存器 • 至於 ds、es 則是指向 PSP 開頭, 所以要自行以:mov ax,@data 及 mov ds,as 來把 ds 指向 .DATA (或 DGROUP) 開頭

  11. ASSUME 假指令 • 當 MASM 在處理一個標名時, 它必須知道該標名位址是針對於哪個節區來計算的。ASSUME 就是用來通知 MASM 這項訊息的, 其格式如下: ASSUME 節區暫存器名:節區名 [ , 節區暫存器名 :節區名….. ]

  12. 語言的聯結

  13. .DOSSEG • DOSSEG 是一個假指令, 用來通知 MASM 依 Microsoft 之標準來安排各節區的次序

  14. 組合語言副程式的標準格式

  15. 組合語言與 C 的聯結 • 把組合語言副程式以標準格式寫好 • 組合語言副程式名要小寫, 並以 ‘_’ 開頭, 同時要宣告為 PUBLIC • 在 C 程式中, 要把組合語言函式宣告為 extern (注意! 與 MASM 的 EXTRN 差一個字母)

  16. 組合語言與 C 的聯結

  17. 組合語言與 C 的聯結

  18. 把引數值傳入副程式

  19. 由副程式來取引數

  20. 返回值 return value

  21. 實例:傳引數的組合語言函式

  22. 實例:傳引數的組合語言函式

  23. 實例:傳引數的組合語言函式

  24. .MODEL 的主要改進功能 • 可指定所要聯結的語言, 如 .MODEL SMALL, C 就指定要和 C 語言聯結 • 凡是 .MODEL 之後指定聯結語言者, 其副程式名可不用宣告為 PUBLIC • 副程式名前頭不再須要以 ‘_’ 做開頭

  25. PROC 功能 • PROC 格式如下: • USES 可以指定副程式中將要用到的暫存器, MASM 便會自動把這些暫存器存入堆疊, 例如:

  26. 使用 VARARG 的注意事項 • VARARG 只能用在最後一個引數 • 先將 PROC 所要聯結的語言種類設為 C, 才能使用 VARARG

  27. VARARG 的寫法

  28. 區域 (LOCAL) 變數

  29. 區域 (LOCAL) 變數

  30. 區域 (LOCAL) 變數

  31. 表示 buffer 是一個 30 bytes 的區域陣列變數, MASM 會把 sp 自動上移 (減) 30 bytes 以留出空間給 buffer[] 陣列使用: 區域變數也可以是陣列

More Related