版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1 第第4 4章章 匯編語言程序設計匯編語言程序設計 2 主要內(nèi)容主要內(nèi)容 n匯編語言源程序的結(jié)構(gòu)匯編語言源程序的結(jié)構(gòu) n匯編語言語句格式匯編語言語句格式 n偽指令偽指令 n功能調(diào)用功能調(diào)用 n匯編語言程序設計匯編語言程序設計 3 4.1 匯編語言源程序匯編語言源程序 了解:了解: n匯編語言源程序的結(jié)構(gòu)匯編語言源程序的結(jié)構(gòu) n匯編語言語句類型及格式匯編語言語句類型及格式 4 一、匯編語言源程序結(jié)構(gòu)一、匯編語言源程序結(jié)構(gòu) 5 1. 匯編語言源程序與匯編程序匯編語言源程序與匯編程序 n匯編語言源程序匯編語言源程序 n匯編程序匯編程序 用助記符編寫用助記符編寫 匯編程序匯編程序 匯編語言匯編語言
2、源程序源程序 機器語言機器語言 目標程序目標程序 源程序的編譯程序源程序的編譯程序 6 2. 匯編語言程序設計與執(zhí)行過程匯編語言程序設計與執(zhí)行過程 n輸入?yún)R編語言源程序(輸入?yún)R編語言源程序(EDIT) n匯編(匯編(MASM) n鏈接(鏈接(LINK) n調(diào)試運行(調(diào)試運行(DEBUG) 源文件源文件 . ASM 目標文件目標文件 .OBJ 可執(zhí)行文件可執(zhí)行文件.EXE 最終程序最終程序 7 3. 匯編語言源程序結(jié)構(gòu)匯編語言源程序結(jié)構(gòu) 數(shù)據(jù)段名數(shù)據(jù)段名 SEGMENT 數(shù)據(jù)段名數(shù)據(jù)段名 ENDS 附加段名附加段名 SEGMENT 附加段名附加段名 ENDS 堆棧段名堆棧段名 SEGMENT 堆
3、棧段名堆棧段名 ENDS 代碼段名代碼段名 SEGMENT 代碼段名代碼段名 ENDS END 8 二、匯編語言語句類型及格式二、匯編語言語句類型及格式 9 1. 匯編語言語句類型匯編語言語句類型 指令性語句指令性語句 指示性語句指示性語句 CPU執(zhí)行的語句,執(zhí)行的語句, 能夠生成目標代碼能夠生成目標代碼 CPU不執(zhí)行,而由匯不執(zhí)行,而由匯 編程序執(zhí)行的語句,編程序執(zhí)行的語句, 不生成目標代碼不生成目標代碼 10 2. 匯編語言語句格式匯編語言語句格式 指令性語句:指令性語句: 標號:標號: 前綴前綴 助記符助記符 操作數(shù)操作數(shù),操作數(shù)操作數(shù) ;注釋;注釋 指令的符號地址指令的符號地址 標號后
4、要有冒號標號后要有冒號 操作碼操作碼 注釋前加分號注釋前加分號 11 指示性語句格式指示性語句格式 名字名字 偽指令助記符偽指令助記符 操作數(shù)操作數(shù) ,操作數(shù),操作數(shù), ;注釋;注釋 變量變量/過程過程/段的符號地址段的符號地址 其后不加冒號其后不加冒號 告訴匯編程序執(zhí)行什么操作告訴匯編程序執(zhí)行什么操作 12 3. 標號、名字標號、名字 n標號后有冒號,在指令性語句前;名字后不加標號后有冒號,在指令性語句前;名字后不加 冒號,在指示性語句前。冒號,在指示性語句前。 n英文字母、數(shù)字及專用字符組成英文字母、數(shù)字及專用字符組成, ,最大長度不最大長度不 能超過能超過3131個個, ,且不能由數(shù)字打
5、頭且不能由數(shù)字打頭, ,不能用保留字不能用保留字 ( (如寄存器名如寄存器名, ,指令助記符指令助記符, ,偽指令偽指令) )。 13 4. 操作碼操作碼 n指令碼指令碼 n偽指令助記符偽指令助記符 n指示匯編程序要完成的操作。指示匯編程序要完成的操作。 n作用:作用: n定義變量定義變量 n分配存儲單元分配存儲單元 n指示程序開始和結(jié)束等指示程序開始和結(jié)束等 命令命令CPU要完成的操作要完成的操作 14 5. 注注 釋釋 n用分號作為注釋的開始;用分號作為注釋的開始; n用于說明程序或語句的功能,以便于閱讀用于說明程序或語句的功能,以便于閱讀 和理解和理解 15 6. 操作數(shù)操作數(shù) 寄存器寄
6、存器 存儲器單元存儲器單元 常量常量 變量或標號變量或標號 表達式表達式 16 常常 量量 n數(shù)字常量數(shù)字常量 n字符串常量字符串常量 n例:例:A nMOV AL,A n例:例:ABCD 匯編時被譯成對應的匯編時被譯成對應的ASCII 碼碼 用單引號引起的字符或字符串用單引號引起的字符或字符串 17 變變 量量 n代表內(nèi)存中的數(shù)據(jù)區(qū),程序中視為存儲器代表內(nèi)存中的數(shù)據(jù)區(qū),程序中視為存儲器 操作數(shù)操作數(shù) n變量的屬性:變量的屬性: 變量所在段的段地址變量所在段的段地址 變量單元地址與段首地址之變量單元地址與段首地址之 間的位移量。間的位移量。 字節(jié)型、字型和雙字型字節(jié)型、字型和雙字型 段段 值值
7、 偏移量偏移量 類類 型型 18 標標 號號 n指令性語句的標號代表存放一條指令的存儲單指令性語句的標號代表存放一條指令的存儲單 元的符號地址。元的符號地址。 n標號的屬性:標號的屬性: 標號所在段的段地址標號所在段的段地址 標號所在段的段首到定義該標號標號所在段的段首到定義該標號 的地址之間的字節(jié)數(shù)。的地址之間的字節(jié)數(shù)。 NEARNEAR、FARFAR 段段 值值 偏移量偏移量 類類 型型 19 表達式表達式 算術(shù)運算算術(shù)運算 邏輯運算邏輯運算 關系運算關系運算 取值運算和屬性運算取值運算和屬性運算 其它運算其它運算 20 算術(shù)運算和邏輯運算符算術(shù)運算和邏輯運算符 n算術(shù)運算符算術(shù)運算符 n
8、+,-,*,/,MOD n邏輯運算符邏輯運算符 nAND,OR,NOT,XOR n例:例: nMOV AL,8+4-1 nMOV AL,0ADH AND 0CCH 21 關系運算符關系運算符 n表示關系是否成立的運算符表示關系是否成立的運算符 n參與關系運算的必須是兩個數(shù)值參與關系運算的必須是兩個數(shù)值 n關系成立,結(jié)果關系成立,結(jié)果=0FFFFH n關系不成立,結(jié)果關系不成立,結(jié)果=0。 n運算符:運算符: nEQ,NE,LT,GT,LE,GE 例:例:MOV AXMOV AX,3 LT 43 LT 4 22 取值運算符取值運算符 取得其后變量或標號的偏移地址取得其后變量或標號的偏移地址 取得
9、其后變量或標號的段地址取得其后變量或標號的段地址 n 用于分析存儲器操作數(shù)的屬性用于分析存儲器操作數(shù)的屬性 OFFSET SEG 23 取值運算符例取值運算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA 等價于等價于 24 屬性運算符屬性運算符 n 用于指定其后存儲器操作數(shù)的類型用于指定其后存儲器操作數(shù)的類型 n 運算符:運算符:PTR n 例:例: MOV BYTE PTR BX,12H 25 其它運算符其它運算符 n方括號:方括號: n段重設符段重設符 段寄存器名:段寄存器名: 方括號中內(nèi)容為操作數(shù)的偏移地址方括號中內(nèi)
10、容為操作數(shù)的偏移地址 用于修改默認的段基地址用于修改默認的段基地址 26 4.2 偽指令偽指令 掌握:掌握: n偽指令的格式及實現(xiàn)的操作偽指令的格式及實現(xiàn)的操作 n偽指令的應用偽指令的應用 27 偽指令偽指令 n由匯編程序執(zhí)行的由匯編程序執(zhí)行的“指令指令” n作用:作用: n定義變量;定義變量; n分配存儲區(qū);分配存儲區(qū); n定義邏輯段;定義邏輯段; n指示程序開始和結(jié)束;指示程序開始和結(jié)束; n定義過程等。定義過程等。 28 常用偽指令常用偽指令 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令 符號定義偽指令符號定義偽指令 段定義偽指令段定義偽指令 結(jié)束偽指令結(jié)束偽指令 過程定義偽指令過程定義偽指令 29 一
11、、數(shù)據(jù)定義偽指令一、數(shù)據(jù)定義偽指令 n用于定義數(shù)據(jù)區(qū)中變量的類型、給變量附初值或給變用于定義數(shù)據(jù)區(qū)中變量的類型、給變量附初值或給變 量分配存儲空間。量分配存儲空間。 n格式:格式: 變量名變量名 偽指令助記符偽指令助記符 操作數(shù),操作數(shù), ;注釋注釋 表示符號地址表示符號地址 定義變量類型定義變量類型 定義變量值定義變量值 及區(qū)域大小及區(qū)域大小 30 1. 數(shù)據(jù)定義偽指令助記符數(shù)據(jù)定義偽指令助記符 nDB 定義的變量為字節(jié)型定義的變量為字節(jié)型 nDW 定義的變量為字類型(雙字節(jié))定義的變量為字類型(雙字節(jié)) nDD 定義的變量為雙字型(定義的變量為雙字型(4字節(jié))字節(jié)) nDQ 定義的變量為定
12、義的變量為4字型(字型(8字節(jié)字節(jié)) nDT 定義的變量為定義的變量為10字節(jié)型字節(jié)型 31 數(shù)據(jù)定義偽指令例數(shù)據(jù)定義偽指令例 nDATA1 DB 11H,22H,33H,44H nDATA2 DW 11H,22H,3344H nDATA3 DD 11H*2,22H,33445566H 以上變量在內(nèi)存以上變量在內(nèi)存 中的存放形式中的存放形式 32 數(shù)據(jù)定義偽指令的幾點說明數(shù)據(jù)定義偽指令的幾點說明 n偽指令的性質(zhì)決定所定義變量的屬性;偽指令的性質(zhì)決定所定義變量的屬性; n定義字符串必須用定義字符串必須用DB偽指令偽指令 n例:例: DATA1 DB ABCD,66H A B C D 41H 42
13、H 43H 44H 66H DATA1 33 2. 重復操作符重復操作符 n作用:作用: n為一個數(shù)據(jù)區(qū)的各單元設置相同的初值為一個數(shù)據(jù)區(qū)的各單元設置相同的初值 n目的:目的: n常用于聲明一個數(shù)據(jù)區(qū)常用于聲明一個數(shù)據(jù)區(qū) n格式:格式: 變量名變量名 偽指令助記符偽指令助記符 n DUP(初值,初值,) n例:例: ABC DW 3 DUP(0) 34 3. “?”的作用的作用 n表示隨機值,用于預留存儲空間表示隨機值,用于預留存儲空間 nMEM1 DB 34H,A,?,? DW 20 DUP(?)(?) 預留預留40個字節(jié)單元,每單元為隨機值個字節(jié)單元,每單元為隨機值 隨機數(shù)隨機數(shù) 占占1個
14、字節(jié)單元個字節(jié)單元 35 數(shù)據(jù)定義偽指令例數(shù)據(jù)定義偽指令例 nM1 DB How are you? nM2 DW 3 DUP(11H),3344H n DB 4 DUP(?)(?) nM3 DB 3 DUP(22H,11H,?),?) 變量在內(nèi)存中的分區(qū)變量在內(nèi)存中的分區(qū) 36 M1H o w a M2 11H 11H 00H 44H 33H r e y o u ? 11H 00H 00H 隨機數(shù)隨機數(shù) M3 11H 22H 11H 22H 11H 22H XX XX XXXX XX XX XX nM1 DB How are you? nM2 DW 3 DUP(11H),3344H n DB
15、4 DUP(?)(?) nM3 DB 3 DUP(22H,11H,?),?) 37 練習練習 n請圖示下面?zhèn)沃噶疃x的數(shù)據(jù)在內(nèi)存中的存放形請圖示下面?zhèn)沃噶疃x的數(shù)據(jù)在內(nèi)存中的存放形 式式 n(1)BUF1DB 12,12, 12H,2*6,-1 n(2)BUF2DW 12,12H,1234H n(3)BUF3 DB 2 DUP(5, ?, 3 DUP(8) 38 二、符號定義偽指令二、符號定義偽指令 n格式:格式: 符號名符號名 EQUEQU 表達式表達式 n操作:操作: 用符號名取代后邊的表達式,不可重新定義用符號名取代后邊的表達式,不可重新定義 n例:例: CONSTANTCONSTANT
16、EQUEQU100100 VAR EQU 30H+99HVAR EQU 30H+99H EQU說明的表達式不占用內(nèi)存空間說明的表達式不占用內(nèi)存空間 39 練習練習 n根據(jù)下面的指令和偽指令序列,執(zhí)行后,根據(jù)下面的指令和偽指令序列,執(zhí)行后,AX 寄存器的內(nèi)容為(寄存器的內(nèi)容為( ) nTABDW 1, 2, 3, 4, 5, 6 nENTRY EQU 3 nMOV BX, OFFSET TAB nADD BX, ENTRY nMOV AX, WORD PTR BX 40 三、段定義偽指令三、段定義偽指令 n功能:功能: 說明邏輯段的起始和結(jié)束說明邏輯段的起始和結(jié)束 n格式:格式: 段名段名 SE
17、GMENT 段名段名 ENDS 41 段定義偽指令例段定義偽指令例 DATA SEGMENT MEM1 DB 11H,22H DATA ENDS 42 四、設定段寄存器偽指令四、設定段寄存器偽指令 n說明所定義邏輯段的性質(zhì)說明所定義邏輯段的性質(zhì) n格式:格式: ASSUME 段寄存器名:段名段寄存器名:段名 ,段寄存器名:段名,段寄存器名:段名, 43 五、結(jié)束偽指令五、結(jié)束偽指令 n表示源程序結(jié)束表示源程序結(jié)束 n格式:格式: END 標號標號 44 一個完整源程序結(jié)構(gòu)例一個完整源程序結(jié)構(gòu)例 DSEG SEGMENT DATA1 DB 1,2, DATA2 DW 1234H DSEG END
18、S ESEG SEGMENT DB 20 DUP(?)(?) ESEG ENDS SSEG SEGMENT DB 200 DUP(?)(?) SSEG ENDS 45 一個完整源程序結(jié)構(gòu)例一個完整源程序結(jié)構(gòu)例 CSEG SEGMENT ASSUME CS:CSEG,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 源程序源程序 代碼代碼 46 編程實例:編程實例: n編寫完整的編寫完整的8086匯編語言程序,將寄
19、匯編語言程序,將寄 存器存器AX的高的高8位傳送到寄存器位傳送到寄存器BL,低,低8 位傳送到寄存器位傳送到寄存器DL。 47 編程實例:編程實例: n編寫完整的匯編語言程序,將編寫完整的匯編語言程序,將MEM1和和 MEM2兩個字節(jié)單元中存放的數(shù)相加,兩個字節(jié)單元中存放的數(shù)相加, 并將結(jié)果送到并將結(jié)果送到MEM3單元單元 48 編程實例:編程實例: n編寫完整的匯編語言程序,將編寫完整的匯編語言程序,將MEM1和和 MEM2兩個字節(jié)單元中存放的壓縮兩個字節(jié)單元中存放的壓縮BCD 相加,并將結(jié)果送到相加,并將結(jié)果送到MEM3單元單元 49 編程實例:編程實例: n求從求從TABLE開始的開始的
20、5個無符號字節(jié)數(shù)的和,結(jié)個無符號字節(jié)數(shù)的和,結(jié) 果放果放SUM字單元中。字單元中。 50 六、過程定義偽指令六、過程定義偽指令 n用于定義一個過程體用于定義一個過程體 n格式:格式: 過程名過程名 PROC NEAR / FAR 過程名過程名 ENDP 過程入口的過程入口的 符號地址符號地址 51 過程調(diào)用和返回過程調(diào)用和返回 n用于調(diào)用一個過程;用于調(diào)用一個過程; n子程序由程序員預先設計子程序由程序員預先設計 并裝入內(nèi)存并裝入內(nèi)存 n子程序執(zhí)行結(jié)束后要返回子程序執(zhí)行結(jié)束后要返回 原調(diào)用處原調(diào)用處 調(diào)用程序調(diào)用程序 斷點斷點 地址地址 入口入口 地址地址 入口地址入口地址 斷點地址斷點地址
21、子程序子程序 CALL RET 52 調(diào)用及返回指令的執(zhí)行過程調(diào)用及返回指令的執(zhí)行過程 n保護斷點;保護斷點; n將調(diào)用指令的下一條指令的地址(斷點)壓入堆棧將調(diào)用指令的下一條指令的地址(斷點)壓入堆棧 n獲取子程序的入口地址;獲取子程序的入口地址; n從調(diào)用指令中獲取子程序第從調(diào)用指令中獲取子程序第1條指令的地址條指令的地址 n執(zhí)行子程序;執(zhí)行子程序; n通過返回指令恢復斷點,返回原程序。通過返回指令恢復斷點,返回原程序。 n將斷點地址由堆棧彈出將斷點地址由堆棧彈出 53 過程調(diào)用過程調(diào)用 段內(nèi)調(diào)用段內(nèi)調(diào)用 段間調(diào)用段間調(diào)用 段內(nèi)直接調(diào)用段內(nèi)直接調(diào)用 段內(nèi)間接調(diào)用段內(nèi)間接調(diào)用 段間直接調(diào)用段
22、間直接調(diào)用 段間間接調(diào)用段間間接調(diào)用 54 1. 段內(nèi)調(diào)用段內(nèi)調(diào)用 n被調(diào)用程序與調(diào)用程序在同一代碼段被調(diào)用程序與調(diào)用程序在同一代碼段 n調(diào)用前只需保護斷點的偏移地址調(diào)用前只需保護斷點的偏移地址 n格式:格式: CALL OPRD n執(zhí)行過程:執(zhí)行過程: 子程序入口偏移地址子程序入口偏移地址 代碼代碼 段段1 調(diào)用程序調(diào)用程序 被調(diào)用程序被調(diào)用程序 代碼代碼 段段1 n 將斷點的偏移地址壓入堆棧將斷點的偏移地址壓入堆棧 n 將子程序入口偏移地址送將子程序入口偏移地址送IP 55 段內(nèi)調(diào)用例段內(nèi)調(diào)用例 (1)CALL TIMRE (2)CALL WORD PTRSI 直接調(diào)用直接調(diào)用 間接調(diào)用間
23、接調(diào)用 44H 33H CALL 代代 碼碼 段段 數(shù)數(shù) 據(jù)據(jù) 段段 設:設:SI=1200H CS=6000H 1200H 執(zhí)行第(執(zhí)行第(2)條指令后:)條指令后: 6000HCS = 3344HIP = 56 2. 段間調(diào)用段間調(diào)用 n子程序與原調(diào)用程序不在同一代碼段子程序與原調(diào)用程序不在同一代碼段 n先將斷點的先將斷點的CS壓棧,再壓入壓棧,再壓入IP。 調(diào)用前需保護斷點的段基地址和偏移地址調(diào)用前需保護斷點的段基地址和偏移地址 57 段間調(diào)用例段間調(diào)用例 n格式:格式: CALL OPRD n格式例:格式例: nCALL FAR PTR TIMRE nCALL DWORD PTRSI
24、XXH XXH CALL 代代 碼碼 段段 數(shù)數(shù) 據(jù)據(jù) 段段 SI XXH XXH CSIP 子程序入口地址子程序入口地址 58 3. 返回指令返回指令 n功能:功能: n從堆棧中彈出斷點地址,返回原程序從堆棧中彈出斷點地址,返回原程序 n格式:格式: RETRET nRETRET指令一般位于子程序的最后。指令一般位于子程序的最后。 59 八、其它偽指令八、其它偽指令 段內(nèi)程序代碼或變量的起始偏移地址段內(nèi)程序代碼或變量的起始偏移地址 n格式:格式: ORG 表達式表達式 n例:例: ORG 2000H A DB 1,2,3 計算值為計算值為 非負常數(shù)非負常數(shù) ORG 60 $的應用的應用 n地
25、址計數(shù)器地址計數(shù)器$用在指令中表示本條指令的起始用在指令中表示本條指令的起始 地址地址 n當當$用在偽指令的操作數(shù)字段時,則和指令中用在偽指令的操作數(shù)字段時,則和指令中 的情況有所不同,它表示地址計數(shù)器的當前值的情況有所不同,它表示地址計數(shù)器的當前值 例:例:jnz $ 相當于相當于 $: jnz $ 例:例:ORG 0100H ARRAY DW 1,2,$+4,3,4,$+4 61 練習練習 n已知已知 nORG 100H nARYDW 3, $+4, 5, 6 nCNT EQU $-ARY n DB 7, 8, CNT, 9 n執(zhí)行指令執(zhí)行指令MOV AX,ARY+2和和 n MOV BX
26、,ARY+10后,后, nAX=( ),),BX=( ) 62 數(shù)據(jù)定義如下,寫出各條指令執(zhí)行后數(shù)據(jù)定義如下,寫出各條指令執(zhí)行后 相應寄存器的內(nèi)容相應寄存器的內(nèi)容 nDATA SEGMENT nX1 DD 12345678H nX3 DW 1234H nORG 100H nX4 EQU $-X1 nDATA ENDS n(1)MOV BX, OFFSET X3 BX=( ) n(2)MOV AX, X4 AX=( ) 63 四、中斷指令四、中斷指令 n中斷(中斷(P138) n中斷源中斷源 n中斷的類型中斷的類型 n中斷指令中斷指令 n引起引起CPU產(chǎn)生一次中斷的指令產(chǎn)生一次中斷的指令 64
27、1. 中斷指令中斷指令 n格式:格式: INT n n說明:說明: n4 中斷類型碼中斷類型碼 n=0 255 n 4 XXH XXH XXH XXH 入口的偏移地址入口的偏移地址 入口的段地址入口的段地址 中斷向量地址中斷向量地址 代代 碼碼 段段 中中 斷斷 向向 量量 表表 0000:00000000:03FFH 中斷向量表中斷向量表 65 中斷指令的執(zhí)行過程中斷指令的執(zhí)行過程 n將將FLAGS壓入堆棧;壓入堆棧; n0 IF,0 TF; n將將CS壓入堆棧、將壓入堆棧、將IP壓入堆棧;壓入堆棧; n由由n4得到得到中斷向量的地址;中斷向量的地址; n將(將(n4+1,n4) IP (n
28、4+3,n4+2) CS; n轉(zhuǎn)入中斷服務程序。轉(zhuǎn)入中斷服務程序。 66 中斷指令的執(zhí)行過程中斷指令的執(zhí)行過程 n4 22H 11H 00H 67H IP CS 6700:1122H MOV代代 碼碼 段段 中中 斷斷 向向 量量 表表 堆堆 棧棧 段段 SP FLAGSH FLAGSL IPH CSL CSH IPL SP SP SP 中斷服務程序中斷服務程序 67 中斷指令例中斷指令例 執(zhí)行程序段:執(zhí)行程序段: CS IP 6200H:0110H INT 21H 6200H:0112H MOV AX,BX 12H 01H 00H 62H SP=1200 FLAGSL FLAGSH SP=1
29、1FA 執(zhí)行執(zhí)行INT 指令后指令后 堆堆 棧棧 段段 68 中斷指令例中斷指令例 n執(zhí)行執(zhí)行INT 21H指令后指令后 IP=21H4 CS= (21H4)+2 0084H 23H 11H 00H 20H IP CS 中中 斷斷 向向 量量 表表 代代 碼碼 段段 XX2000H:1123H 中斷服務程序中斷服務程序 69 2. 中斷返回指令中斷返回指令 n格式:格式: IRET n中斷服務程序的最后一條指令,負責中斷服務程序的最后一條指令,負責 恢復斷點恢復斷點 恢復標志寄存器內(nèi)容恢復標志寄存器內(nèi)容 70 4.3 功能調(diào)用功能調(diào)用 DOS 功能調(diào)用功能調(diào)用 BIOS功能調(diào)用功能調(diào)用 71
30、DOS 功能調(diào)用功能調(diào)用 n包含多個子功能的功能包,用軟中斷指包含多個子功能的功能包,用軟中斷指 令調(diào)用,中斷類型碼固定為令調(diào)用,中斷類型碼固定為21H; n各子功能采用功能號來區(qū)分。各子功能采用功能號來區(qū)分。 72 DOS 功能調(diào)用功能調(diào)用 設備設備管理管理 73 DOS 功能調(diào)用功能調(diào)用 n調(diào)用格式:調(diào)用格式: MOV AH,功能號功能號 INT 21H 74 一、單字符輸入一、單字符輸入 n調(diào)用方法:調(diào)用方法: MOV AH,01 INT 21H n輸入的字符在輸入的字符在AL中中 75 單字符輸入例單字符輸入例 GET_KEY:GET_KEY: MOVMOVAH,1AH,1 INTIN
31、T21H21H CMPCMPAL,Y AL,Y JZ JZ YESYES CMP CMPAL,N AL,N JZ JZ NONO JMP JMPGET_KEYGET_KEY YES: YES: NO: NO: 交互式應交互式應 答程序答程序 76 二、字符串輸入二、字符串輸入 n注意問題:注意問題: n調(diào)用格式調(diào)用格式 n字符輸入緩沖區(qū)的定義字符輸入緩沖區(qū)的定義 77 1. 調(diào)用格式調(diào)用格式 功能號功能號OAH 字符串在內(nèi)存中的存放地址字符串在內(nèi)存中的存放地址 nINT 21H n AH n DS:DX 78 2. 定義字符緩沖區(qū)定義字符緩沖區(qū) n用戶自定義緩沖區(qū)格式:用戶自定義緩沖區(qū)格式:
32、0DHN1N2 整個緩沖區(qū)整個緩沖區(qū) 最大可鍵入字符數(shù)最大可鍵入字符數(shù) 實際鍵入字符數(shù)實際鍵入字符數(shù) 存放鍵入的字符存放鍵入的字符 79 輸入字符串程序段輸入字符串程序段 n DAT1 DB 20,?,?,20 DUP(?)(?) n MOV AH,0AH LEA DX,DAT1 INT 21H 在數(shù)據(jù)段在數(shù)據(jù)段 中定義中定義 80 輸入緩沖區(qū)輸入緩沖區(qū) 14H ? 20個字節(jié)個字節(jié) 定義后的輸入緩定義后的輸入緩 沖區(qū)初始狀態(tài):沖區(qū)初始狀態(tài): 81 三、單字符顯示輸出三、單字符顯示輸出 功能號功能號O2H 待輸出字符待輸出字符 nINT 21H n AH n DL 82 單字符顯示輸出例單字符
33、顯示輸出例 nMOVAH,02 nMOVDL,41H nINT21H 執(zhí)行結(jié)果:執(zhí)行結(jié)果: 屏幕顯示屏幕顯示A 83 四、字符串輸出顯示四、字符串輸出顯示 功能號功能號O9H 待輸出字符串的起始地址待輸出字符串的起始地址 nINT 21H n AH n DS:DX 84 字符串輸出顯示字符串輸出顯示 n被顯示的字符串必須以被顯示的字符串必須以$結(jié)束結(jié)束 85 字符串輸出顯示例字符串輸出顯示例 DATA SEGMENT MESS1 DB Input String: 0DH,0AH,$ DATA ENDS CODE SEGMENT MOV AH,09 MOV DX,OFFSET MESS1 INT
34、21H 86 五、返回到五、返回到DOS n一個實際可運行的用戶程序在執(zhí)行完后,應該一個實際可運行的用戶程序在執(zhí)行完后,應該 返回到返回到DOS提示符狀態(tài)(簡稱返回提示符狀態(tài)(簡稱返回DOS),), 為了使程序正常退出并返回為了使程序正常退出并返回DOS,可使用,可使用 DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用4CH號功能。號功能。 MOV AH, 4CH INT 21H 87 4.4 匯編語言程序設計匯編語言程序設計 設計步驟:設計步驟: n根據(jù)實際問題抽象出數(shù)學模型根據(jù)實際問題抽象出數(shù)學模型 n確定算法確定算法 n畫程序流程圖畫程序流程圖 n分配內(nèi)存工作單元和寄存器分配內(nèi)存工作單元和寄存器 n程序編
35、碼程序編碼 n調(diào)試調(diào)試 88 程序流程圖符號程序流程圖符號 起始:起始: 功能:功能: 判斷:判斷: 子過程:子過程: 89 匯編語言程序結(jié)構(gòu)匯編語言程序結(jié)構(gòu) n順序結(jié)構(gòu)順序結(jié)構(gòu) n循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) n先判定型先判定型 n后判定型后判定型 n分支結(jié)構(gòu)分支結(jié)構(gòu) n單分支單分支 n多分支多分支 n子程序結(jié)構(gòu)子程序結(jié)構(gòu) 90 順序程序?qū)嵗樞虺绦驅(qū)嵗?n例例1:內(nèi)存自:內(nèi)存自TABLE開始的連續(xù)開始的連續(xù)10個單元中存放著個單元中存放著 09的平方值(稱平方表),從鍵盤輸入一位的平方值(稱平方表),從鍵盤輸入一位10進制進制 數(shù),查表求該數(shù)的平方值,并將結(jié)果送數(shù),查表求該數(shù)的平方值,并將結(jié)果送RESULT單元單元 中。中。 n例例2:MEM字節(jié)單元中存放了一個無符號數(shù),將該數(shù)字節(jié)單元中存放了一個無符號數(shù),將該數(shù) 轉(zhuǎn)換成十進制數(shù)并送顯示。轉(zhuǎn)換成十進制數(shù)并送顯示。 n例例3:從鍵盤輸入一位十進制數(shù),計算該數(shù)的平方,并:從鍵盤輸入一位十
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)安全部工作年終總結(jié)
- 老年癡呆用藥指導護理
- 裝載機系統(tǒng)培訓
- 四川省遂寧市遂寧中學2024-2025學年度上期高一半期考試英語 - 副本
- 湖南省長沙市長郡梅溪湖中學2024-2025學年上學期八年級第一次月考英語試題(含答案無聽力部分)
- 廣東省江門市福泉奧林匹克學校2024-2025學年上學期七年級數(shù)學第一次月考試題(無答案)
- 2024-2025學年寧夏中衛(wèi)市中衛(wèi)七中七年級(上)第一次月考數(shù)學試卷(無答案)
- 2024-2025學年初中九年級數(shù)學上冊期中測試卷及答案(人教版)
- T-ZFDSA 30-2024 靈芝鴨制作標準
- 陜西省安康市漢濱區(qū)部分學校2024-2025學年七年級上學期期中地理試卷
- 電工基礎(中職)完整版教學課件
- 醫(yī)院創(chuàng)新思維的幾種基本形式與作用
- LoanAgreement(貸款協(xié)議)模板
- 中國上海日出日落方位角概要
- XXXX年葦湖梁煤礦儲量核實報告
- 醫(yī)藥物流項目可行性研究報告
- 《植物生理學》課件第九章+植物生長生理
- 9.2維護國家安全優(yōu)秀課件(21張幻燈片)3個
- 機械原理大作業(yè)(共15頁)
- 加強社區(qū)服務人才隊伍建設實施方案
- 中國醫(yī)院質(zhì)量安全管理 第4-5部分:醫(yī)療管理 用藥安全管理 T∕CHAS 10-4-5-2019
評論
0/150
提交評論