




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第4章 匯編語言程序設計BISTU Computer School 主要內容:主要內容:v匯編語言源程序的結構匯編語言源程序的結構v匯編語言語句格式匯編語言語句格式v偽指令偽指令v功能調用功能調用BISTU Computer School 4.1 匯編語言源程序匯編語言源程序v了解:了解:v計算機的三種語言計算機的三種語言v源程序的結構源程序的結構v匯編語言語句格式匯編語言語句格式BISTU Computer School 一、計算機設計語言一、計算機設計語言v機器語言機器語言:計算機執行的語言(二進制代碼表示)計算機執行的語言(二進制代碼表示)v匯編語言面向機器的語言(符號表示)匯編語言面向
2、機器的語言(符號表示)v高級語言高級語言機器語言機器語言匯編語言匯編語言高級語言高級語言BISTU Computer School 匯編程序匯編程序v匯編語言源程序用助記符編寫用助記符編寫源程序的編譯程序源程序的編譯程序匯編程序匯編程序匯編語言匯編語言源程序源程序機器語言機器語言目標程序目標程序BISTU Computer School 匯編語言程序設計與執行過程匯編語言程序設計與執行過程v輸入匯編語言源程序輸入匯編語言源程序 源文件源文件 .ASMv匯編(編譯)匯編(編譯) 目標文件目標文件 .OBJv鏈接鏈接 可執行文件可執行文件 .EXEv調試調試 最終程序最終程序BISTU Compu
3、ter School 二、匯編語言源程序結構二、匯編語言源程序結構數據段名數據段名 SEGMENT 數據段名數據段名 ENDS附加段名附加段名 SEGMENT 附加段名附加段名 ENDS堆棧段名堆棧段名 SEGMENT 堆棧段名堆棧段名 ENDS代碼段名代碼段名 SEGMENT 代碼段名代碼段名 ENDS變量定義變量定義對數據段的擴展對數據段的擴展存放程序運行的中間結果存放程序運行的中間結果CPU執行的指令性語句執行的指令性語句BISTU Computer School 三、匯編語言語句類型三、匯編語言語句類型v指令性語句指令性語句v偽指令語句偽指令語句CPU執行的語句,執行的語句,能夠生成目
4、標代碼能夠生成目標代碼CPU不執行,而由匯不執行,而由匯編程序執行的語句,編程序執行的語句,不生成目標代碼不生成目標代碼BISTU Computer School 四、匯編語言語句格式四、匯編語言語句格式v指令性語句格式:指令性語句格式:指令的符號地址,指令的符號地址,標號后要有冒號標號后要有冒號操作碼操作碼注釋前加分號注釋前加分號標號:標號: 指令助記符指令助記符 操作數操作數,操作數操作數 ;注釋;注釋BISTU Computer School v偽指令語句格式偽指令語句格式名字名字 偽指令助記符偽指令助記符 操作數操作數 ,操作數,操作數, ;注釋;注釋變量的符號地址,變量的符號地址,其
5、后不加冒號其后不加冒號偽指令語句中至少偽指令語句中至少有一個操作數有一個操作數BISTU Computer School 標號、名字標號、名字v標號后有冒號,在指令性語句前;名字后不加標號后有冒號,在指令性語句前;名字后不加冒號,在偽指令語句前。冒號,在偽指令語句前。v英文字母、數字及專用字符組成英文字母、數字及專用字符組成,最大長度不能最大長度不能超過超過31個個,且不能由數字打頭且不能由數字打頭,不能用保留字不能用保留字(如如寄存器名寄存器名,指令助記符指令助記符,偽指令偽指令)。 BISTU Computer School 操作碼操作碼v指令助記符指令助記符 命令命令CPU要完成的操作要
6、完成的操作v偽指令助記符偽指令助記符指示匯編程序要完成的操作指示匯編程序要完成的操作用來定義變量用來定義變量, ,分配存儲單元分配存儲單元指示程序開始和結束等指示程序開始和結束等 BISTU Computer School 注釋注釋v用分號作為注釋的開始用分號作為注釋的開始v用于說明程序或語句的功能,用于說明程序或語句的功能,v便于閱讀和理解便于閱讀和理解BISTU Computer School 常量常量v數字常量數字常量v字符串常量:用引號引起的字符或字符串字符串常量:用引號引起的字符或字符串v例:例:A,ABCD匯編時被譯成對應的匯編時被譯成對應的ASCII碼碼二進制數(二進制數(B)十
7、六進制數(十六進制數(H)BISTU Computer School 操作數操作數v寄存器寄存器v存儲器單元存儲器單元v常量常量v變量或標號變量或標號v表達式表達式BISTU Computer School 變量的屬性:變量的屬性:v 段段 值值 : 變量所在段的段基址變量所在段的段基址v 段內偏移地址段內偏移地址 : 變量所在地址與段首地址變量所在地址與段首地址 之間的位移量。之間的位移量。v 類類 型型 : 字節型、字型和雙字型字節型、字型和雙字型BISTU Computer School 標號標號v指令性語句的地址的符號表示指令性語句的地址的符號表示v一般作為轉移指令和一般作為轉移指令和
8、CALL指令的目標操作數指令的目標操作數標號的屬性:標號的屬性:v段段 值值 : 標號所在段的段基址標號所在段的段基址v段內偏移地址段內偏移地址 : 標號所在地址與段首地址標號所在地址與段首地址 之間的位移量。之間的位移量。v類類 型型 : NEAR、FAR段間段間段內段內BISTU Computer School 五、表達式五、表達式運算對象運算對象運算符運算符表達式表達式BISTU Computer School 五、表達式五、表達式算術運算符算術運算符邏輯運算符邏輯運算符關系運算符關系運算符數值返回運算符數值返回運算符修改屬性運算符修改屬性運算符運算符運算符常數常數變量變量標號標號運算對
9、象運算對象BISTU Computer School 算術運算和邏輯運算符算術運算和邏輯運算符v算術運算符算術運算符 +,-,*,/,MOD、SHL、SHRv邏輯運算符邏輯運算符 AND,OR,NOT,XOR 例:例:MOV AL,8 AND 4 MOV AL,8+4-1BISTU Computer School 關系運算符關系運算符v參與關系運算的必須是兩個數值參與關系運算的必須是兩個數值v關系不成立,結果為關系不成立,結果為0;v關系成立,結果為關系成立,結果為0FFH或或0FFFFH。EQNELTGTLEGE關系運算符關系運算符BISTU Computer School 數值返回運算符數
10、值返回運算符OFFSET 獲取變量或標號的偏移地址獲取變量或標號的偏移地址SEG 獲取變量或標號的段地址獲取變量或標號的段地址 TYPE LENGTH SIZE掌握!掌握! 加在變量或標號前加在變量或標號前 返回運算對象的某個屬性值返回運算對象的某個屬性值BISTU Computer School OFFSET SEGOFFSET功能:獲取變量或標號的偏移地址功能:獲取變量或標號的偏移地址格式:格式:OFFSET 變量或標號變量或標號SEG功能:獲取變量或標號的段基址功能:獲取變量或標號的段基址格式:格式:SEG 變量或標號變量或標號BISTU Computer School 數值返回運算符例
11、數值返回運算符例v MOV AX,SEG M1v MOV DS,AX 等價于等價于 M1 DB 1,2,3,4,5,6定義變量定義變量獲取段基址獲取段基址獲取偏移地址獲取偏移地址 MOV AX,SI讀數據讀數據 MOV SI,OFFSET M1 LEA SI,M1BISTU Computer School 數值返回運算符例數值返回運算符例若若BUFFER存儲區是用如下偽指令定義:存儲區是用如下偽指令定義: BUFFER DW 200 DUP(0) 則:則: TYPE BUFFER 等于等于2 LENGTH BUFFER 等于等于200 SIZE BUFFER 等于等于400BISTU Comp
12、uter School 修改屬性運算符修改屬性運算符段操作符段操作符 格式:格式: 段前綴:變量或地址表達式段前綴:變量或地址表達式 功能:用于指定其后存儲器操作數所在的段功能:用于指定其后存儲器操作數所在的段 例:例: MOV AX,ES:BXBISTU Computer School 修改屬性運算符修改屬性運算符-PTR功能:用于指定其后存儲器操作數的類型功能:用于指定其后存儲器操作數的類型格式:格式:類型類型 PTR 變量或標號變量或標號例:例:MOV BYTE PTRBX,12HBISTU Computer School 4.2 偽指令語句偽指令語句掌握:掌握:v偽指令語句的格式及實現
13、的操作偽指令語句的格式及實現的操作v偽指令的應用偽指令的應用v由匯編程序執行的由匯編程序執行的“指令系統指令系統”v用于定義變量、分配存儲區、定義邏輯段、用于定義變量、分配存儲區、定義邏輯段、指示程序開始和結束等指示程序開始和結束等BISTU Computer School 常用偽指令語句常用偽指令語句v數據定義語句數據定義語句v標號賦值語句標號賦值語句v段定義語句段定義語句v段分配語句段分配語句v過程定義語句過程定義語句v結束語句結束語句BISTU Computer School 一、數據定義語句一、數據定義語句v將操作數存入變量名指定的內存單元中,或只將操作數存入變量名指定的內存單元中,或
14、只分配內存空間不存入數據分配內存空間不存入數據v格式:格式: 變量名變量名 偽指令助記符偽指令助記符 操作數,操作數, ;注釋;注釋某些情況某些情況下可省略下可省略可省略可省略BISTU Computer School 數據定義偽指令數據定義偽指令v偽指令助記符偽指令助記符vDB 定義的變量為字節型定義的變量為字節型vDW 定義的變量為字類型(雙字節)定義的變量為字類型(雙字節)vDD 定義的變量為雙字型(定義的變量為雙字型(4字節)字節)vDQ 定義的變量為定義的變量為4字型(字型(8字節)字節)vDT 定義的變量為定義的變量為10字節型字節型掌握!掌握!BISTU Computer Sch
15、ool數據定義偽指令例數據定義偽指令例vDATA1 DB 11H,22H,33H,44HvDATA2 DW 11H,22H,3344HvDATA3 DD 11H,22334455H以上變量在內存以上變量在內存中的存放形式中的存放形式BISTU Computer School 00H11H圖2-1 數據格式存儲DATA1DATA2DATA300H11H33H44H00H22H00H00H11H33H44H22H33H55H22H44H低地址低地址高地址高地址BISTU Computer School 數據定義偽指令數據定義偽指令v定義字符串一般用定義字符串一般用DB偽指令偽指令v例:例:M1 D
16、B ABCD,66HABCD41H42H43H44H66HBISTU Computer School 重復操作符重復操作符DUPv為數據區的各單元設置相同的初值為數據區的各單元設置相同的初值v格式:格式:v 變量名變量名 偽指令助記符偽指令助記符 n DUP(操作數,(操作數,)v例:例:v M1 DW 20 DUP(0)v M2 DB 3 DUP(22H,11H,?),?)保留內保留內存空間存空間初值初值重復次數重復次數BISTU Computer School 用?預留存儲空間用?預留存儲空間vM1 DB 34H,A,?,?,?,?,?,?vM2 DW 20 DUP(?)(?)預留預留40
17、個字節單元個字節單元BISTU Computer School 二、標號賦值語句二、標號賦值語句格式:符號名格式:符號名 EQU 表達式表達式操作:用符號名取代后邊的表達式,不可重新定義操作:用符號名取代后邊的表達式,不可重新定義例:例:COUNT EQU100 VAR EQU 30H+99HEQU說明的表達式不占用內存空間說明的表達式不占用內存空間定義常量定義常量BISTU Computer School 三、段定義偽指令三、段定義偽指令v標識邏輯段的起始和結束標識邏輯段的起始和結束BISTU Computer School 段定義偽指令段定義偽指令v段名段名 SEGMENT 定位類型定位類
18、型 組合類型組合類型 分分類類名名 v段名段名 ENDS說明邏輯說明邏輯段的起點段的起點說明不同模塊中說明不同模塊中同名段的組合連同名段的組合連接方式接方式參數參數BISTU Computer School 定位類型定位類型vPARA: 段的起點從節邊界開始(段的起點從節邊界開始(16個字節為個字節為1節)節)vBYTE: 段的起點從存儲器任何地址開始段的起點從存儲器任何地址開始vWORD:段的起點從偶地址開始:段的起點從偶地址開始vPAGE: 段的起點從頁邊界開始(段的起點從頁邊界開始(256個字節為個字節為1頁)頁)BISTU Computer School 組合類型組合類型v與其它模塊中
19、的同名段在滿足定位類型的前提下具與其它模塊中的同名段在滿足定位類型的前提下具有的組合方式:有的組合方式:vNONE: 不組合不組合vPUBLIC: 依次連接(順序由依次連接(順序由LINK程序確定)程序確定)vCOMMON: 覆蓋連接覆蓋連接vSTACK: 堆棧段的依次連接堆棧段的依次連接vAT 表達式:段起始地址在表達式所指定的節邊界上表達式:段起始地址在表達式所指定的節邊界上vMEMORY: 相應段在同名段的最上層相應段在同名段的最上層BISTU Computer School 分類名分類名v不同模塊連接時將不同模塊連接時將分類名分類名相同相同的段放在連續的內存區域中的段放在連續的內存區域
20、中BISTU Computer School 段定義偽指令例(數據段)段定義偽指令例(數據段)vDATA SEGMENTv MEM1 DB 11H,22HvDATA ENDSBISTU Computer School 四、段分配語句四、段分配語句v說明所定義邏輯段和段寄存器的關系說明所定義邏輯段和段寄存器的關系v格式:格式:ASSUME CS:段名:段名 ,DS:段名,:段名,SS: 段名,段名,ES:段名:段名注:注:4個邏輯段不一定全部要定義,通常代碼段和數據段是必個邏輯段不一定全部要定義,通常代碼段和數據段是必須的須的BISTU Computer School 五、結束偽指令五、結束偽指
21、令v表示源程序結束表示源程序結束v格式:格式: END 標號標號BISTU Computer School 一個完整源程序結構例一個完整源程序結構例DSEG SEGMENT DATA1 DB 1,2, DATA2 DW 1234HDSEG ENDSESEG SEGMENT DB 20 DUP(?)(?)ESEG ENDSSSEG SEGMENT STACK STACK DB 200 DUP(?)(?)SSEG ENDS數據數據段段附加附加段段堆棧堆棧段段BISTU Computer School 一個完整源程序結構例一個完整源程序結構例(續續) CSEG SEGMENT ASSUME CS:C
22、SEG,DS:DSEG, ES:ESEG,SS:SSEG START:MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX MOV AX,SSEG MOV SS,AX CSEG ENDS END START源程序源程序 代碼代碼代碼代碼段段BISTU Computer School 六、過程定義偽指令六、過程定義偽指令用于定義一個過程用于定義一個過程格式:格式: 過程名過程名 PROC NEAR / FAR RET 過程名過程名 ENDP過程入口的過程入口的符號地址符號地址P143例例BISTU Computer School 七、宏命令偽指令七、宏命令偽指令
23、v宏命令宏命令源程序中由匯編程序識別的具源程序中由匯編程序識別的具v有獨立功能的一段程序代碼有獨立功能的一段程序代碼v格式:格式:v 宏命令名宏命令名 MACRO v v v ENDM宏體宏體P198例例BISTU Computer School 例例:vDELAY MACROv MOV CX,1000v D0: LOOP D0v ENDM宏名宏名延時延時BISTU Computer School 八、其他偽指令八、其他偽指令vORG 段內程序代碼或變量的起始偏段內程序代碼或變量的起始偏移地址移地址v格式:格式:v ORG 表達式表達式v例:例:v ORG 2000H計算值為計算值為非負常數非
24、負常數BISTU Computer School 其他偽指令其他偽指令vNAME為目標程序設定一個名字為目標程序設定一個名字v格式:格式:v NAME 模塊名模塊名vTITLE為程序清單指定打印標題為程序清單指定打印標題v格式:格式:v TITLE 標題名標題名可以缺省可以缺省BISTU Computer School 4.3 DOS功能調用和功能調用和BIOS中斷調用中斷調用匯編語言中,通過軟件中斷來調用系統提供給匯編語言中,通過軟件中斷來調用系統提供給用戶的功能,方法:用戶的功能,方法: 給定入口參數給定入口參數 INT n軟件中斷調用包括軟件中斷調用包括DOS 功能調用和功能調用和BIO
25、S中斷中斷調用調用BISTU Computer School4.3 DOS功能調用和功能調用和BIOS中斷調用中斷調用DOS 功能調用功能調用 高級調用,存在系統盤上高級調用,存在系統盤上BIOS中斷調用中斷調用 低級調用,固化在低級調用,固化在ROM中中相當于相當于C中使用庫中使用庫函數函數BISTU Computer School 一、一、DOS 系統功能調用系統功能調用v用軟中斷指令調用(用軟中斷指令調用(INT n)v中斷類型碼固定中斷類型碼固定21Hv包含多個子功能包含多個子功能v各子功能采用功能號來區分各子功能采用功能號來區分附錄附錄F 516頁頁BISTU Computer Sc
26、hool DOS 系統功能調用功能系統功能調用功能v設備管理(設備管理(I/O)調用格式:調用格式: MOV AH,功能號,功能號 INT 21H附錄附錄FP521BISTU Computer School 1.從鍵盤輸入單字符并顯示從鍵盤輸入單字符并顯示調用方法:調用方法: MOV AH,01 INT 21H輸入的字符返回到輸入的字符返回到AL中中BISTU Computer School 單字符輸入例單字符輸入例GET_KEY: MOVAH,1 INT21H CMP AL,Y JZ YES CMP AL,N JZ NO JMP GET_KEY YES: NO: 交互式應交互式應 答程序答程序BISTU Computer School 2. 單字符顯示輸出單字符顯示輸出調用方法:調用方法:AH 功能號功能號02HDL 待輸出字符待輸出字符INT 21H MOVAH,02 MOVDL,41H INT 21H【例】執行結果:執行結果:屏幕顯示屏幕顯示A思考:如思考:如何輸出回何輸出回車、換行車、換行符?符?BISTU Computer School 3. 字符串輸出顯示字符串輸出顯示調用方法:調用方法:AH 功能號功能號09HDS:DX 待輸出字符串的首地址待輸出字符串的首地址INT 21Hv被顯示的字符串必須以被顯示的字符串必須以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程紅磚供銷協議書
- 禁漁合作協議書
- 家庭土地分配協議書
- 愛心幫扶協議書
- 法語合作協議書
- 淘寶全返協議書
- 澤潤增資協議書
- 工程中介合作協議書
- 甲醇購銷協議書
- 工程質量鑒定協議書
- 大眾電子助力轉向EPS 雙齒輪電動助力轉向系統
- 腦卒中患者血壓及血糖管理
- 【醫院管理案例學習】-床單位終末消毒標準的執行
- 能源費用托管型合同能源管理項目
- 退化草地修復親水性聚氨酯復合材料應用技術規范
- 暗挖格柵加工技術交底
- DB5106∕T 01-2019 農村彩鋼棚管理指南
- 2023年安徽省公安機關警務輔助人員條例訓練題庫211題及答案
- LBS支撐平臺LBS-p中移動終端地圖數據格式及數據策略研究的中期報告
- 2023年南昌市外國與學校小升初能力試題
- 護理基礎縱橫知到章節答案智慧樹2023年上海健康醫學院
評論
0/150
提交評論