




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、本章教學(xué)重點和難點:本章教學(xué)重點和難點: 匯編語言語句的書寫格式及運行環(huán)境與步驟匯編語言語句的書寫格式及運行環(huán)境與步驟 匯編語言的數(shù)據(jù)定義偽指令、符號定義偽指匯編語言的數(shù)據(jù)定義偽指令、符號定義偽指 令、段定義偽指令等偽指令令、段定義偽指令等偽指令 順序、分支、循環(huán)基本程序的設(shè)計。順序、分支、循環(huán)基本程序的設(shè)計。 匯編語言程序與匯編語言程序與C C語言程序的調(diào)用方法語言程序的調(diào)用方法 中斷服務(wù)程序、模塊化程序設(shè)計中斷服務(wù)程序、模塊化程序設(shè)計 第第5章章 匯編語言程序設(shè)計匯編語言程序設(shè)計 本章教學(xué)內(nèi)容:本章教學(xué)內(nèi)容: 5.1 5.1 匯編語言簡述匯編語言簡述 5.2 5.2 匯編語言的偽指令匯編語
2、言的偽指令 5.3 5.3 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 5.4 5.4 中斷服務(wù)程序設(shè)計中斷服務(wù)程序設(shè)計 5.5 5.5 模塊化程序設(shè)計模塊化程序設(shè)計 機器語言機器語言:計算機最終能識別并執(zhí)行的是以二進制代:計算機最終能識別并執(zhí)行的是以二進制代 碼表示的。碼表示的。 匯編語言匯編語言:用意義明確的助記符來表示指令的操作碼、:用意義明確的助記符來表示指令的操作碼、 操作數(shù),對機器的依賴性很大。主要用于編寫計算機操作數(shù),對機器的依賴性很大。主要用于編寫計算機 的系統(tǒng)程序、實時控制程序等。的系統(tǒng)程序、實時控制程序等。 匯編語言源程序匯編語言源程序(匯編語言程序):是用匯編語言編(匯編語
3、言程序):是用匯編語言編 寫的程序。寫的程序。 計算機必須將匯編語言程序翻譯成由機器代碼組成的計算機必須將匯編語言程序翻譯成由機器代碼組成的 目標程序才能執(zhí)行。這個翻譯過程稱為目標程序才能執(zhí)行。這個翻譯過程稱為匯編匯編,完成匯,完成匯 編過程的軟件就是編過程的軟件就是匯編程序匯編程序。 5.1 匯編語言簡述匯編語言簡述 面向機器面向機器 5.1.1 5.1.1 匯編語言源程序的格式匯編語言源程序的格式 例,在屏幕上顯示例,在屏幕上顯示“HELLO”HELLO”并讓機器蜂鳴器響一聲。并讓機器蜂鳴器響一聲。 DATA SEGMENT ;DATA SEGMENT ;數(shù)據(jù)段部分定義數(shù)據(jù)段部分定義 ms
4、g DB 0DHh,0DH,07H,Hello$msg DB 0DHh,0DH,07H,Hello$ DATA ENDSDATA ENDS SSEG SEGMENT STACK ;SSEG SEGMENT STACK ;堆棧段部分定義堆棧段部分定義 DB 256 DUP(?)DB 256 DUP(?) SSEG ENDSSSEG ENDS CODE SEGMENT CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSEGASSUME CS:CODE,DS:DATA,SS:SSEG MAIN PROC FARMAIN PROC FAR PUSH DS PUSH DS
5、 MOV AX,0MOV AX,0 PUSH AXPUSH AX MOV AX,DATA ;MOV AX,DATA ;設(shè)置數(shù)據(jù)段設(shè)置數(shù)據(jù)段 MOV DS,AXMOV DS,AX LEA DX,msg ;LEA DX,msg ;取字符串地址取字符串地址 MOV AH,09H ;MOV AH,09H ;顯示字符串,顯示字符串, INT 21HINT 21H RET ;RET ;程序結(jié)束,返回操作系統(tǒng)程序結(jié)束,返回操作系統(tǒng) MAIN ENDPMAIN ENDP CODE ENDSCODE ENDS END MAIN ;END MAIN ; 源程序結(jié)束源程序結(jié)束 1 1匯編語言程序的一般組成匯編語言程
6、序的一般組成 (1 1)一個程序由)一個程序由SEGMENTSEGMENT和和ENDSENDS等定義成三類段:等定義成三類段: 數(shù)據(jù)段:用來定義變量和其他數(shù)據(jù);數(shù)據(jù)段:用來定義變量和其他數(shù)據(jù); 堆棧段:為程序堆棧操作提供空間;堆棧段:為程序堆棧操作提供空間; 代碼段:存放代碼,即程序指令。代碼段:存放代碼,即程序指令。 一個程序中一定有至少一個代碼段;可以沒有堆棧段,一個程序中一定有至少一個代碼段;可以沒有堆棧段, 若沒有堆棧段在程序連接時會給出警告信息;也可以若沒有堆棧段在程序連接時會給出警告信息;也可以 定義多個段。定義多個段。 (2 2)匯編語言源程序的基本結(jié)構(gòu)是)匯編語言源程序的基本結(jié)
7、構(gòu)是分段結(jié)構(gòu)分段結(jié)構(gòu)形式。形式。 每個邏輯段都有一個名字,叫段名,而且在每個邏輯段都有一個名字,叫段名,而且在SEGMENTSEGMENT 開始和開始和ENDSENDS結(jié)束時的名字必須一致。結(jié)束時的名字必須一致。 (3 3)每個邏輯段內(nèi)由若干語句行組成,每個語句)每個邏輯段內(nèi)由若干語句行組成,每個語句 行可以是指令性語句、指示性語句或者宏指令。行可以是指令性語句、指示性語句或者宏指令。 (4 4)代碼段又是由若干個子程序組成。每個子程)代碼段又是由若干個子程序組成。每個子程 序以序以PROCPROC語句開始定義,語句開始定義,ENDPENDP語句結(jié)束定義。每個語句結(jié)束定義。每個 子程序也有自己
8、的名字,叫過程名或子程序名,且子程序也有自己的名字,叫過程名或子程序名,且 在在PROCPROC開始和開始和ENDPENDP結(jié)束時的名字必須一致。結(jié)束時的名字必須一致。 (5 5)一個程序只有一個起始點。整個源程序以)一個程序只有一個起始點。整個源程序以ENDEND 結(jié)束。結(jié)束。 2 2匯編語言語句的類型匯編語言語句的類型 匯編語言源程序中的語句可分為五類:匯編語言源程序中的語句可分為五類: (1 1)指令語句,是能產(chǎn)生目標代碼,)指令語句,是能產(chǎn)生目標代碼,CPUCPU可執(zhí)行的能可執(zhí)行的能 完成特定功能的語句,主要由完成特定功能的語句,主要由CPUCPU指令組成。指令組成。 mov ax,d
9、ata ;mov ax,data ;設(shè)置數(shù)據(jù)段設(shè)置數(shù)據(jù)段 (2 2)指示性語句,是一種不產(chǎn)生目標代碼的語句,僅)指示性語句,是一種不產(chǎn)生目標代碼的語句,僅 僅在匯編過程中告訴匯編程序應(yīng)如何匯編,也叫偽指僅在匯編過程中告訴匯編程序應(yīng)如何匯編,也叫偽指 令語句或命令語句。令語句或命令語句。 data segment ;data segment ;數(shù)據(jù)段定義開始數(shù)據(jù)段定義開始 (3 3)宏指令語句,是一個指令序列,在匯編時凡有宏)宏指令語句,是一個指令序列,在匯編時凡有宏 指令語句的都將用相應(yīng)的指令序列的目標代碼插入。指令語句的都將用相應(yīng)的指令序列的目標代碼插入。 (4 4)注釋語句,以分號)注釋語
10、句,以分號“;” ” 。 (5 5)空語句。)空語句。 3.3.匯編語言的語句匯編語言的語句可由四部分組成:可由四部分組成: 名字名字 操作碼項操作碼項 操作數(shù)項操作數(shù)項 ;注釋;注釋 一般來說:一般來說: 名字名字是一個符號,表示本條語句的符號地址,可以為是一個符號,表示本條語句的符號地址,可以為 標號標號(Label)(Label)和變量和變量(Variable)(Variable),統(tǒng)稱,統(tǒng)稱標識符標識符。 操作碼項操作碼項可以是機器指令、偽指令和宏指令的助記符。可以是機器指令、偽指令和宏指令的助記符。 操作數(shù)項操作數(shù)項是操作碼的操作對象。操作碼在完成相應(yīng)的是操作碼的操作對象。操作碼在完
11、成相應(yīng)的 操作時要求有一系列的操作數(shù)。當有兩個或兩個以上的操作時要求有一系列的操作數(shù)。當有兩個或兩個以上的 操作數(shù)時,各操作數(shù)之間用逗號隔開。操作數(shù)時,各操作數(shù)之間用逗號隔開。 注釋字段注釋字段是以是以“;”開頭的說明部分,可以用英文或開頭的說明部分,可以用英文或 者中文書寫。注釋字段是語句的非執(zhí)行部分者中文書寫。注釋字段是語句的非執(zhí)行部分 。 5.1.2 5.1.2 匯編語言的編程環(huán)境匯編語言的編程環(huán)境 1.匯編語言的編程環(huán)境匯編語言的編程環(huán)境 硬件環(huán)境:具有基本配置的硬件環(huán)境:具有基本配置的PC機機 軟件環(huán)境:指支持匯編程序運行和幫助建立匯軟件環(huán)境:指支持匯編程序運行和幫助建立匯 編語言源
12、程序的一些軟件,主要包括:編語言源程序的一些軟件,主要包括: (1)編輯程序)編輯程序(記事本、記事本、EDIT.COM) (2)宏匯編程序)宏匯編程序(MASM.EXE) (3)連接程序)連接程序(LINK.EXE) (4)調(diào)試程序)調(diào)試程序(DEBUG.COM) 建立建立.ASM.ASM文件文件 產(chǎn)生產(chǎn)生.OBJ.OBJ文件文件 -R-R -D-D 產(chǎn)生產(chǎn)生.EXE.EXE文件文件 2.2.匯編語言程序上機的執(zhí)行步驟匯編語言程序上機的執(zhí)行步驟 第一步:用記事本編輯建立第一步:用記事本編輯建立.ASM.ASM匯編語言源程序文件。匯編語言源程序文件。 注意:程序的結(jié)構(gòu)與書寫格式。注意:程序的結(jié)
13、構(gòu)與書寫格式。 第二步:用第二步:用MASMMASM程序匯編成程序匯編成.OBJ.OBJ文件文件 調(diào)用調(diào)用DOSDOS系統(tǒng)進入系統(tǒng)進入MASM5.0MASM5.0,輸入,輸入MASMMASM命令和文件命令和文件 名回車后即可產(chǎn)生名回車后即可產(chǎn)生.OBJ.OBJ目標程序文件。目標程序文件。 輸入輸入MASMMASM命命 令和文件名令和文件名 匯編時輸出匯編時輸出.OBJ.OBJ,.LST.LST,.CRF.CRF三個文件并且顯示匯三個文件并且顯示匯 編源程序的正確或錯誤結(jié)果,若出現(xiàn)編源程序的正確或錯誤結(jié)果,若出現(xiàn)語法錯誤語法錯誤,則,則 根據(jù)錯誤提示,用編輯軟件根據(jù)錯誤提示,用編輯軟件重新調(diào)出源
14、程序重新調(diào)出源程序進行修進行修 改。改。 MASM5.0MASM5.0 版本介紹版本介紹 .OBJ.OBJ. LST.LST. CRFCRF 第三步:用第三步:用LINKLINK程序把程序把.OBJ.OBJ文件轉(zhuǎn)化成文件轉(zhuǎn)化成.EXE.EXE文件文件 輸入輸入LINKLINK命令和文件名回車后可輸出命令和文件名回車后可輸出.EXE.EXE等三個文件。等三個文件。 輸入輸入LINKLINK命命 令和文件名令和文件名 .EXE.EXE .MAP.MAP .LIB.LIB 沒有堆棧段沒有堆棧段 LINKLINK程序程序 版本介紹版本介紹 第四步:程序的運行,直接鍵入文件名。第四步:程序的運行,直接鍵
15、入文件名。 直接輸入文件名直接輸入文件名 需要時使用需要時使用DEBUGDEBUG調(diào)試并查看寄存器或存儲器單元調(diào)試并查看寄存器或存儲器單元 5.2 5.2 匯編語言的偽指令匯編語言的偽指令 偽指令偽指令:控制匯編過程的命令,又稱為匯編控制命令。:控制匯編過程的命令,又稱為匯編控制命令。 具有數(shù)據(jù)定義、存儲區(qū)分配、指示程序的開始與結(jié)束具有數(shù)據(jù)定義、存儲區(qū)分配、指示程序的開始與結(jié)束 等功能,但是沒有對應(yīng)的機器碼。將匯編語言源程序等功能,但是沒有對應(yīng)的機器碼。將匯編語言源程序 翻譯為目標程序后,其作用消失。翻譯為目標程序后,其作用消失。 80868086匯編語言中用到的偽指令有:匯編語言中用到的偽指
16、令有: 數(shù)據(jù)定義偽指令、符號定義偽指令、段定義偽指令、數(shù)據(jù)定義偽指令、符號定義偽指令、段定義偽指令、 過程定義偽指令、宏處理偽指令、模塊定義與連接偽過程定義偽指令、宏處理偽指令、模塊定義與連接偽 指令、處理器方式偽指令、條件偽指令、列表偽指令指令、處理器方式偽指令、條件偽指令、列表偽指令 和其它偽指令等類別。和其它偽指令等類別。 5.2.1 5.2.1 符號定義偽指令符號定義偽指令 包括變量名、標號名、過程名、寄存器名以及指令助包括變量名、標號名、過程名、寄存器名以及指令助 記符。常用的有記符。常用的有EQUEQU(等值命令)、(等值命令)、= =(賦值命令)和(賦值命令)和 PURGEPUR
17、GE(解除定義命令)。(解除定義命令)。 1 1基本概念基本概念 (1 1)標識符:用來對程序中的常量、變量、記錄、)標識符:用來對程序中的常量、變量、記錄、 結(jié)構(gòu)、段、過程、模塊等進行命名結(jié)構(gòu)、段、過程、模塊等進行命名。 (2 2)保留字:)保留字:80X8680X86中的寄存器名、指令助記符、偽中的寄存器名、指令助記符、偽 操作命令、表達式運算符、屬性操作符等都是系統(tǒng)專操作命令、表達式運算符、屬性操作符等都是系統(tǒng)專 用的保留字。用的保留字。 (3 3)符號:用符號等代替存儲單元、端口地址、數(shù))符號:用符號等代替存儲單元、端口地址、數(shù) 據(jù)表達式等。常用的有:寄存器、變量、標號、數(shù)等。據(jù)表達式
18、等。常用的有:寄存器、變量、標號、數(shù)等。 (4 4)常量:是固定值(即程序運行期間不變化)就)常量:是固定值(即程序運行期間不變化)就 稱為常量。包括稱為常量。包括數(shù)字常量和字符常量數(shù)字常量和字符常量。在匯編語言中。在匯編語言中 值相對固定不變化的數(shù)據(jù)一般以符號的形式出現(xiàn),也值相對固定不變化的數(shù)據(jù)一般以符號的形式出現(xiàn),也 叫符號常數(shù)。叫符號常數(shù)。字符常量字符常量必須用單引號括起來。必須用單引號括起來。 (5 5)變量:存放在存儲單元中的操作數(shù)就是變量,)變量:存放在存儲單元中的操作數(shù)就是變量, 因為其值是可改變的。但程序中出現(xiàn)的一般是存儲單因為其值是可改變的。但程序中出現(xiàn)的一般是存儲單 元地址
19、的符號,或者說是符號地址。具體在后面再講。元地址的符號,或者說是符號地址。具體在后面再講。 (6 6)標號:是某條指令所存放單元的符號地址,是)標號:是某條指令所存放單元的符號地址,是 轉(zhuǎn)移控制類指令的目標操作數(shù)。轉(zhuǎn)移控制類指令的目標操作數(shù)。 (7 7)過程名:是某個子程序中首條指令所存放單元)過程名:是某個子程序中首條指令所存放單元 的符號地址,是調(diào)用子程序指令的目標操作數(shù)。的符號地址,是調(diào)用子程序指令的目標操作數(shù)。 2 2EQUEQU(等值命令)(等值命令) 格式:格式: NAME EQU EXP ;NAME EQU EXP ;用符號名用符號名NAMENAME替代替代EXPEXP 3 3=
20、 =(賦值語句)(賦值語句) 同一源程序中同一符號名不能同時用同一源程序中同一符號名不能同時用EQUEQU和和= =來定義。來定義。 格式:格式: NAME=EXPNAME=EXP 4 4PURGRPURGR(解除定義語句)(解除定義語句) 解除語句,可以解除原來用解除語句,可以解除原來用EQUEQU語句定義的符號語句定義的符號 格式:格式: PURGE PURGE 符號符號11,符號,符號NN 表達式常出現(xiàn)在語句格式的操作數(shù)域。表達式常出現(xiàn)在語句格式的操作數(shù)域。 (1 1)算術(shù)運算符)算術(shù)運算符 + +、- -、* *、/ /和和MODMOD(求余,兩數(shù)必須為正整數(shù))。(求余,兩數(shù)必須為正整
21、數(shù))。 (2 2)邏輯運算符)邏輯運算符 ANDAND、OROR、NOTNOT、XORXOR等。邏輯運算符是等。邏輯運算符是按位按位操作的,操作的, 只能用于數(shù)值表達式中,不能用于存儲器地址操作數(shù)只能用于數(shù)值表達式中,不能用于存儲器地址操作數(shù) 的表達式中。的表達式中。 (3 3)關(guān)系運算符)關(guān)系運算符 EQEQ、NENE、LTLT、GTGT、LELE和和GEGE等六項。計算結(jié)果應(yīng)該是邏等六項。計算結(jié)果應(yīng)該是邏 輯值:結(jié)果為真,表示輯值:結(jié)果為真,表示FFFFHFFFFH(-1-1); ;結(jié)果為假,表示結(jié)果為假,表示 0000H0000H(0 0)。 (4 4)分析運算符)分析運算符(數(shù)值返回運
22、算符)(數(shù)值返回運算符) 把特征或存儲器操作數(shù)地址分解為它的組成部分,如把特征或存儲器操作數(shù)地址分解為它的組成部分,如 偏移量、段基址和類型等。偏移量、段基址和類型等。 有有TYPETYPE、LENGTHLENGTH、SIZESIZE、OFFSETOFFSET和和SEGSEG等五項。等五項。 格式:格式: SEG VARSEG VAR或者或者LABLAB 返回指定變量或者標號的偏移地址值。返回指定變量或者標號的偏移地址值。 格式:格式: OFFSET VAROFFSET VAR或者或者LABLAB 注意:該運算符實際與注意:該運算符實際與LEALEA指令等效。指令等效。 TYPETYPE類型返
23、回運算符類型返回運算符 返回的運算結(jié)果是一個數(shù)值與存儲器操作數(shù)類型或者返回的運算結(jié)果是一個數(shù)值與存儲器操作數(shù)類型或者 標號類型有固定的對應(yīng)關(guān)系,如表標號類型有固定的對應(yīng)關(guān)系,如表5-15-1所示。所示。 【例例5-145-14】 V1 DB 1V1 DB 1,2 2,3 3 V2 DW 1020HV2 DW 1020H,3040H3040H V3 DD 12345678HV3 DD 12345678H PF LABEL FARPF LABEL FAR PNPN:MOV AHMOV AH,TYPE V1 ;AH=1TYPE V1 ;AH=1 MOV ALMOV AL,TYPE V2 ;AL=2T
24、YPE V2 ;AL=2 MOV DLMOV DL,TYPE V3 ;DL=4TYPE V3 ;DL=4 MOV DHMOV DH,TYPE PF ;DH=-2TYPE PF ;DH=-2 【例例5-155-15】 FEES DW 100 DUPFEES DW 100 DUP(0 0) MOV CXMOV CX,LENGTH FEESLENGTH FEES 則則CXCX值為值為100100 (5 5)合成運算符(修改屬性運算符)合成運算符(修改屬性運算符) 用來建立或臨時改變變量或標號的類型或者存儲器操用來建立或臨時改變變量或標號的類型或者存儲器操 作數(shù)的存儲單元類型。作數(shù)的存儲單元類型。 有
25、有PTRPTR、THISTHIS、SHORTSHORT、段超越操作符等幾項。、段超越操作符等幾項。 基本格式:基本格式: 段寄存器名:符號地址段寄存器名:符號地址 格式:格式: type PTR EXP ;TYPEtype PTR EXP ;TYPE是要建立或改變的標號或者是要建立或改變的標號或者 存儲的新的類型。存儲的新的類型。 (6 6)其他操作符)其他操作符 當前偏移地址運算符。返回該操作符所在標號或者存當前偏移地址運算符。返回該操作符所在標號或者存 儲單元的有效地址。儲單元的有效地址。 格式:格式: 【例例5-205-20】 10001000:3124H MOV BX 3124H MO
26、V BX , 則(則(BXBX)=3124H=3124H LOWLOW和和HIGHHIGH。字節(jié)分離運算符。分別得到一個數(shù)。字節(jié)分離運算符。分別得到一個數(shù) 值(值(1616位)或地址表達式(位)或地址表達式(1616位)的低位和高位字節(jié)。位)的低位和高位字節(jié)。 格式:格式: LOW/HIGH VARLOW/HIGH VAR LOW/HIGH EXPLOW/HIGH EXP 各類運算符的優(yōu)先級別為:各類運算符的優(yōu)先級別為: 1 1、() LENGTH SIZE WIDTH MASK() LENGTH SIZE WIDTH MASK 2 2、: : 3 3、PTR OFFSET SEG TPYE
27、THISPTR OFFSET SEG TPYE THIS及段操作符及段操作符 4 4、HIGE LOWHIGE LOW 5 5、* * / MOD SHL SHR/ MOD SHL SHR 6 6、+ -+ - 7 7、EQ NE GT LT GE LEEQ NE GT LT GE LE 8 8、NOTNOT 9 9、AND AND 1010、OR XOR OR XOR 1111、SHORTSHORT 5.2.3 5.2.3 段定義偽指令段定義偽指令 1 1基本概念基本概念 在匯編語言源程序中定義邏輯段,常用的有:在匯編語言源程序中定義邏輯段,常用的有: SEGMENT SEGMENT 、EN
28、DS ENDS 、ASSUME ASSUME 、ORG ORG 。 2 2SEGMENT/ENDSSEGMENT/ENDS命令命令 格式:格式: 段名段名 SEGMENT SEGMENT 定位定位組合組合段字段字類別類別 ; ;其它語句其它語句 段名段名 ENDS ENDS 5.2.4 5.2.4 過程定義偽指令過程定義偽指令 過程定義的一般格式如下:過程定義的一般格式如下: 過程名過程名 PROC NEAR/FAR PROC NEAR/FAR ; ; RET ;RET ;至少有一條返回主程序的指令;至少有一條返回主程序的指令; 過程名過程名 ENDP ENDP 5.3 5.3 匯編語言程序設(shè)
29、計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 5.3.1 5.3.1 程序設(shè)計的一般步驟程序設(shè)計的一般步驟 1 1基本步驟基本步驟 1) 1) 分析問題,抽象出描述問題的數(shù)學(xué)模型分析問題,抽象出描述問題的數(shù)學(xué)模型 2) 2) 確定解決問題的算法或解題思想確定解決問題的算法或解題思想 3) 3) 繪制流程圖和結(jié)構(gòu)圖繪制流程圖和結(jié)構(gòu)圖 4) 4) 分配存儲空間和工作單元分配存儲空間和工作單元 5) 5) 編制程序編制程序 6) 6) 程序靜態(tài)檢查程序靜態(tài)檢查 7) 7) 上機調(diào)試上機調(diào)試 2 2流程圖流程圖 3 3基本控制結(jié)構(gòu)基本控制結(jié)構(gòu) 程序結(jié)構(gòu)可分為三個基本結(jié)構(gòu):即順序結(jié)構(gòu)、分支結(jié)程序結(jié)構(gòu)可分為三個基本結(jié)構(gòu):即
30、順序結(jié)構(gòu)、分支結(jié) 構(gòu)和循環(huán)結(jié)構(gòu)。構(gòu)和循環(huán)結(jié)構(gòu)。 (1 1)順序結(jié)構(gòu):指按語句出現(xiàn)的先后次序執(zhí)行,沒)順序結(jié)構(gòu):指按語句出現(xiàn)的先后次序執(zhí)行,沒 有判斷和轉(zhuǎn)移、重復(fù)等,順序結(jié)構(gòu)也叫簡單結(jié)構(gòu)。有判斷和轉(zhuǎn)移、重復(fù)等,順序結(jié)構(gòu)也叫簡單結(jié)構(gòu)。 (2 2)分支結(jié)構(gòu):指根據(jù)不同情況作出判斷和選擇,)分支結(jié)構(gòu):指根據(jù)不同情況作出判斷和選擇, 以便執(zhí)行不同的程序段。以便執(zhí)行不同的程序段。 (3 3)循環(huán)結(jié)構(gòu):是指重復(fù)做某些操作,直到出現(xiàn)某)循環(huán)結(jié)構(gòu):是指重復(fù)做某些操作,直到出現(xiàn)某 個條件為止??梢钥闯鲞@實際上是順序結(jié)構(gòu)和分支結(jié)個條件為止??梢钥闯鲞@實際上是順序結(jié)構(gòu)和分支結(jié) 構(gòu)的組合。構(gòu)的組合。 (4 4)過程:實
31、際上它是三種基本結(jié)構(gòu)的組合。在匯)過程:實際上它是三種基本結(jié)構(gòu)的組合。在匯 編語言里經(jīng)常把它當做第四種基本控制結(jié)構(gòu)來看待。編語言里經(jīng)常把它當做第四種基本控制結(jié)構(gòu)來看待。 (5 5)程序設(shè)計時,應(yīng)采用)程序設(shè)計時,應(yīng)采用“自頂向下,逐步求精自頂向下,逐步求精” ” 。 4 4程序的結(jié)束方法程序的結(jié)束方法 常用的在常用的在DOSDOS下返回的方法主要有以下三種:下返回的方法主要有以下三種: (1 1)利用)利用INT 20HINT 20H結(jié)束程序結(jié)束程序 (2 2)利用標準序結(jié)束程序)利用標準序結(jié)束程序 (3 3)用)用DOSDOS功能調(diào)用結(jié)束程序功能調(diào)用結(jié)束程序 5.3.2 5.3.2 程序設(shè)計
32、的基本方法程序設(shè)計的基本方法 1 1順序結(jié)構(gòu)設(shè)計順序結(jié)構(gòu)設(shè)計 【例【例5-275-27】試編制一程序,求出】試編制一程序,求出 下列公式中下列公式中Z Z值,并存放在值,并存放在 RESULTRESULT單元中。單元中。 RESULTRESULT(X+YX+Y)8-X 8-X 2 2 參考代碼:參考代碼: DATA SEGMENTDATA SEGMENT X DW 6X DW 6 Y DW 7 ;Y DW 7 ;數(shù)據(jù)段數(shù)據(jù)段 RESULT DW RESULT DW ? DATA ENDSDATA ENDS STACK1 SEGMENT PARA STACKSTACK1 SEGMENT PARA
33、 STACK DW 20H DUP(0) ;DW 20H DUP(0) ;堆棧段堆棧段 STACK1 ENDSSTACK1 ENDS COSEG SEGMENTCOSEG SEGMENT PROC1 PROC FARPROC1 PROC FAR ASSUME CS:COSEG,SS:STACK1ASSUME CS:COSEG,SS:STACK1 ASSUME DS:DATAASSUME DS:DATA START: PUSH DSSTART: PUSH DS MOV AX,0MOV AX,0 PUSH AX PUSH AX MOV AX,DATA MOV AX,DATA MOV DS,AXMO
34、V DS,AX MOV DX,X MOV DX,X ADD DX,Y ADD DX,Y MOV CL,3MOV CL,3 SAL DX,CL SAL DX,CL SUB DX,X SUB DX,X SAR DX,1 SAR DX,1 MOV RESULT,DX MOV RESULT,DX RETRET PROC1 ENDPPROC1 ENDP COSEG ENDSCOSEG ENDS END STARTEND START 2 2分支結(jié)構(gòu)設(shè)計分支結(jié)構(gòu)設(shè)計 分支結(jié)構(gòu)主要是通過條件轉(zhuǎn)移指令來實現(xiàn)的。分支結(jié)構(gòu)主要是通過條件轉(zhuǎn)移指令來實現(xiàn)的。 可分為三種:單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)和多分支結(jié)構(gòu)??煞譃槿N:
35、單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)和多分支結(jié)構(gòu)。 (1 1)單分支結(jié)構(gòu))單分支結(jié)構(gòu) 分支一般由產(chǎn)生條件、測試、定向和標號四部分組成。分支一般由產(chǎn)生條件、測試、定向和標號四部分組成。 【例例5-285-28】設(shè)內(nèi)存中有設(shè)內(nèi)存中有 三個互不相等的無符號三個互不相等的無符號 字數(shù)據(jù),分別存放在字數(shù)據(jù),分別存放在 VAR1VAR1開始的字單元,試開始的字單元,試 求其中最大值并存入求其中最大值并存入 MAXMAX單元。單元。 解題思路:求三個無符解題思路:求三個無符 號數(shù)中的最大值,只要號數(shù)中的最大值,只要 將三個數(shù)兩兩比較,用將三個數(shù)兩兩比較,用 無符號數(shù)的比較轉(zhuǎn)移指無符號數(shù)的比較轉(zhuǎn)移指 令令 JA/JB/JA
36、E/JBE/JE/JCJA/JB/JAE/JBE/JE/JC 等指令就可判斷兩數(shù)的等指令就可判斷兩數(shù)的 大小,從而選出其中的大小,從而選出其中的 最大值。最大值。 DATA SEGMENT DATA SEGMENT VAR1 DW 1238H,1047H,19E1HVAR1 DW 1238H,1047H,19E1H MAX DW MAX DW ? DATA ENDSDATA ENDS SSEG SEGMENT PARA STACKSSEG SEGMENT PARA STACK DB 100 DUP(0) DB 100 DUP(0) SSEG ENDSSSEG ENDS CODE SEGMENT
37、CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSEG ASSUME CS:CODE,DS:DATA,SS:SSEG STARTSTART: MOV AX,DATAMOV AX,DATA MOV DS,AX MOV DS,AX LEA SI,VAR1 ; LEA SI,VAR1 ;設(shè)置指針,設(shè)置指針, MOV AX,SI ; MOV AX,SI ;取第一個元素取第一個元素 MOV BX,SI+2;MOV BX,SI+2;取第二個元素取第二個元素 CMP AX,BX ;CMP AX,BX ;比較比較 JAE BIGE1 ;JAE BIGE1 ;大于等于時轉(zhuǎn)大于等于
38、時轉(zhuǎn) MOV AX,BX ;MOV AX,BX ;小于時小于時 BIGE1BIGE1: CMP AX,SI+4 ;CMP AX,SI+4 ;和第三個元素比較和第三個元素比較 JAE BIGE2 ;JAE BIGE2 ;大于等于時轉(zhuǎn)大于等于時轉(zhuǎn) MOV AX,SI+4 ;MOV AX,SI+4 ;取第三個元素取第三個元素 BIGE2BIGE2: MOV MAX,AX ;MOV MAX,AX ;將找的最大值送將找的最大值送MAXMAX MOV AH,4CH ; MOV AH,4CH ;準備結(jié)束程序準備結(jié)束程序 INT 21HINT 21H CODE ENDS CODE ENDS END START
39、 END START (2)2)雙分支結(jié)構(gòu)雙分支結(jié)構(gòu) (3)3)多分支程序設(shè)計多分支程序設(shè)計 多分支結(jié)構(gòu)的設(shè)計有三種主要形式:轉(zhuǎn)移表法、地址多分支結(jié)構(gòu)的設(shè)計有三種主要形式:轉(zhuǎn)移表法、地址 表法和邏輯分解法。而且實現(xiàn)分支轉(zhuǎn)移還得使用條件表法和邏輯分解法。而且實現(xiàn)分支轉(zhuǎn)移還得使用條件 轉(zhuǎn)移指令。轉(zhuǎn)移指令。 轉(zhuǎn)移表法轉(zhuǎn)移表法 地址表法地址表法 邏輯分解法。邏輯分解法。 (3 3)循環(huán)程序的設(shè)計步驟:)循環(huán)程序的設(shè)計步驟: 1 1)分析問題,確定循環(huán)結(jié)構(gòu):選用當型還是直到型;)分析問題,確定循環(huán)結(jié)構(gòu):選用當型還是直到型; 2 2)根據(jù)循環(huán)變化的規(guī)律,確定循環(huán)體部分;)根據(jù)循環(huán)變化的規(guī)律,確定循環(huán)體部分
40、; 3 3)考慮循環(huán)參數(shù)的修改,確定參數(shù)修改方法;)考慮循環(huán)參數(shù)的修改,確定參數(shù)修改方法; 4 4)設(shè)置循環(huán)控制部分,注意循環(huán)結(jié)束條件的完備;)設(shè)置循環(huán)控制部分,注意循環(huán)結(jié)束條件的完備; 5 5)設(shè)置循環(huán)參數(shù)和控制條件的初值設(shè)定部分;)設(shè)置循環(huán)參數(shù)和控制條件的初值設(shè)定部分; 6 6)最后編碼實現(xiàn)。)最后編碼實現(xiàn)。 (4 4)循環(huán)程序的控制方法)循環(huán)程序的控制方法 計數(shù)控制法計數(shù)控制法,CXCX計數(shù)器加計數(shù)器加1 1,常用指令是,常用指令是LOOPLOOP。 條件控制法。條件控制法。 開關(guān)控制法。一般只有兩個不同動作需要交替執(zhí)行,開關(guān)控制法。一般只有兩個不同動作需要交替執(zhí)行, 可以用一個二進制編
41、碼串來表示其執(zhí)行序列,這個二可以用一個二進制編碼串來表示其執(zhí)行序列,這個二 進制編碼串就是邏輯尺,也叫進制編碼串就是邏輯尺,也叫邏輯比例尺邏輯比例尺。 【例例5-325-32】求求1 1至至100100數(shù)字之和,結(jié)果保存到數(shù)字之和,結(jié)果保存到SUMSUM中。中。 5.3.3 5.3.3 子程序設(shè)計與調(diào)用技術(shù)子程序設(shè)計與調(diào)用技術(shù) 一個完整的子程序結(jié)構(gòu),應(yīng)該包括以下幾方面的內(nèi)容:一個完整的子程序結(jié)構(gòu),應(yīng)該包括以下幾方面的內(nèi)容: 1 1子程序的說明部分子程序的說明部分,一般有:一般有: 子程序名(被調(diào)用名)子程序名(被調(diào)用名);作者(包括后來參與的作作者(包括后來參與的作 者)者);版本(一般含歷次
42、修正的內(nèi)容、原因等)版本(一般含歷次修正的內(nèi)容、原因等);開開 發(fā)日期(一般含歷次修正日期)發(fā)日期(一般含歷次修正日期);功能說明(說明子功能說明(說明子 程序具體完成的任務(wù))程序具體完成的任務(wù));占用的資源說明,包括軟、占用的資源說明,包括軟、 硬各方面硬各方面;輸入?yún)?shù),包括名稱、類型、存放位置、輸入?yún)?shù),包括名稱、類型、存放位置、 作用等;輸出參數(shù),包括名稱、類型、存放位置、作作用等;輸出參數(shù),包括名稱、類型、存放位置、作 用等用等;子程序的使用格式;子程序的使用格式;子程序的使用范例。子程序的使用范例。 2 2子程序的現(xiàn)場保護和恢復(fù)子程序的現(xiàn)場保護和恢復(fù) 現(xiàn)場保護和恢復(fù)常用的方法有:現(xiàn)
43、場保護和恢復(fù)常用的方法有: (1 1)利用堆棧進行保護。可以用進棧指令將要保護)利用堆棧進行保護。可以用進棧指令將要保護 的信息壓棧,用出棧指令將要恢復(fù)的信息出棧,這是的信息壓棧,用出棧指令將要恢復(fù)的信息出棧,這是 最常用的方法。最常用的方法。 (2 2)利用特定的內(nèi)存區(qū)域??梢栽趦?nèi)存中專門劃出)利用特定的內(nèi)存區(qū)域??梢栽趦?nèi)存中專門劃出 一片區(qū)域用于現(xiàn)場信息的保護和恢復(fù)。此時主要用數(shù)一片區(qū)域用于現(xiàn)場信息的保護和恢復(fù)。此時主要用數(shù) 據(jù)傳送指令即可完成任務(wù)。據(jù)傳送指令即可完成任務(wù)。 (3 3)在信息很少時,也可用暫時閑置不用的寄存器。)在信息很少時,也可用暫時閑置不用的寄存器。 3 3子程序的參數(shù)
44、傳遞子程序的參數(shù)傳遞 傳遞過程主要有以下傳遞過程主要有以下四種四種方法:方法: (1 1)使用堆棧。)使用堆棧。 (2 2)使用指定的存儲區(qū)域。)使用指定的存儲區(qū)域。 (3 3)使用寄存器。在數(shù)據(jù)量較少時常采用這種方式。)使用寄存器。在數(shù)據(jù)量較少時常采用這種方式。 (4 4)使用端口。)使用端口。 【例例5-355-35】寫出滿足以下過程的代碼部分:寫出滿足以下過程的代碼部分: 使用寄存器傳遞參數(shù),將使用寄存器傳遞參數(shù),將ASCIIASCII碼轉(zhuǎn)換為碼轉(zhuǎn)換為1616進制數(shù)進制數(shù) 入口條件:(入口條件:(ALAL)存放)存放ASCIIASCII碼碼; ; 出口條件:(出口條件:(ALAL)161
45、6進制數(shù);進制數(shù); 由題意:由題意: 數(shù)碼數(shù)碼0 09 9對應(yīng)的對應(yīng)的ASCIIASCII碼是碼是30H30H39H39H, 字符字符A AF F對應(yīng)的對應(yīng)的ASCIIASCII碼是碼是41H41H46H46H, 其轉(zhuǎn)換過程,如果是從其轉(zhuǎn)換過程,如果是從30H30H轉(zhuǎn)換為轉(zhuǎn)換為0 0,則應(yīng)該是對應(yīng),則應(yīng)該是對應(yīng) ASCIIASCII碼減去碼減去30H30H即可。而從字符即可。而從字符AA轉(zhuǎn)換為轉(zhuǎn)換為1616進制進制 數(shù)碼數(shù)碼A A,則應(yīng)該是對應(yīng),則應(yīng)該是對應(yīng)ASCIIASCII碼減去碼減去37H37H才可。才可。 ASCTOHEX PROC ;ASCTOHEX PROC ;過程體定義開始過程體
46、定義開始 PUSHF ;PUSHF ;通過堆棧保護現(xiàn)場信息通過堆棧保護現(xiàn)場信息 SUB AL,30H ;SUB AL,30H ;做第一步轉(zhuǎn)換做第一步轉(zhuǎn)換 CMP AL,10 ;CMP AL,10 ;如果是數(shù)碼如果是數(shù)碼0 0到到9 9,則結(jié)果是小于,則結(jié)果是小于1010的的 JL EXIT1JL EXIT1 SUB AL,7 ;SUB AL,7 ;否則就是數(shù)碼否則就是數(shù)碼A A到到F F,應(yīng)該再減去,應(yīng)該再減去7 7 EXIT1: POPF ;EXIT1: POPF ;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 RET ; RET ;子程序執(zhí)行結(jié)束,返回主程序子程序執(zhí)行結(jié)束,返回主程序 ASCTOHEX ENDP ;A
47、SCTOHEX ENDP ;過程定義結(jié)束。過程定義結(jié)束。 【例例5-365-36】設(shè)設(shè)ARRAYARRAY是是1010個元素的單字節(jié)無符號數(shù)組。個元素的單字節(jié)無符號數(shù)組。 試用子程序計算數(shù)組元素的校驗和(即不計進位的累試用子程序計算數(shù)組元素的校驗和(即不計進位的累 加),并將結(jié)果存入變量加),并將結(jié)果存入變量RESULTRESULT中。中。 設(shè)用變量來傳遞參數(shù),即主程序和被調(diào)用子程序通過設(shè)用變量來傳遞參數(shù),即主程序和被調(diào)用子程序通過 同一變量名的訪問來傳遞參數(shù)。同一變量名的訪問來傳遞參數(shù)。 則:則:STACK SEGMENT STACKSTACK SEGMENT STACK DW 50 DUP
48、(0) DW 50 DUP(0) STACK ENDSSTACK ENDS DATA SEGMENTDATA SEGMENT ARRAY DB 34H,9AH,0F1H,87H,06HARRAY DB 34H,9AH,0F1H,87H,06H DB 1FH,0CDH,5EH,0A1H,49H DB 1FH,0CDH,5EH,0A1H,49H COUNT EQU $-ARRAYCOUNT EQU $-ARRAY RESULT DB RESULT DB ? DATA ENDSDATA ENDS CODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA ASSU
49、ME CS:CODE,DS:DATA ASSUME SS:STACKASSUME SS:STACK MAIN PROC FAR MAIN PROC FAR STARTSTART: PUSH DSPUSH DS XOR AX,AX XOR AX,AX PUSH AXPUSH AX MOV AX,DATAMOV AX,DATA MOV DS,AX MOV DS,AX CALL CHECKSUB CALL CHECKSUB RET ;RET ;結(jié)束主程序,返回操作系統(tǒng)結(jié)束主程序,返回操作系統(tǒng) MAIN ENDPMAIN ENDP CHECKSUB PROC NEAR ;CHECKSUB PROC N
50、EAR ;段內(nèi)調(diào)用的子程序段內(nèi)調(diào)用的子程序 PUSH AX ;PUSH AX ;保存現(xiàn)場保存現(xiàn)場 PUSH BXPUSH BX PUSH CX PUSH CX XOR AL,AL XOR AL,AL MOV BX,OFFSET ARRAY ;MOV BX,OFFSET ARRAY ; 即第即第0 0號元素號元素34H34H的位置的位置 MOV CX,COUNT ;CXMOV CX,COUNT ;CX取數(shù)組的元素個數(shù)取數(shù)組的元素個數(shù) AGAINAGAIN: ADD AL,BX ;ADD AL,BX ;求和求和 INC BX ;INC BX ;指針偏移,指向下一個元素指針偏移,指向下一個元素 LO
51、OP AGAIN ;LOOP AGAIN ;計數(shù)遞減,不為計數(shù)遞減,不為0 0時循環(huán)時循環(huán) MOV RESULT,AL ;MOV RESULT,AL ;傳遞校驗和傳遞校驗和 POP CX ;POP CX ;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 POP BXPOP BX POP AX POP AX RET ; RET ; 返回主程序返回主程序 CHECKSUB ENDP CHECKSUB ENDP CODE ENDSCODE ENDS END START END START 4 4子程序的調(diào)用與返回子程序的調(diào)用與返回 5.3.4 DOS5.3.4 DOS功能子程序的調(diào)用功能子程序的調(diào)用 1 1概述概述 基本輸入輸出
52、系統(tǒng)基本輸入輸出系統(tǒng)BIOSBIOS和和DOSDOS層功能模塊:層功能模塊: 設(shè)置了兩設(shè)置了兩 層內(nèi)部子程序供用戶使用。層內(nèi)部子程序供用戶使用。 BIOSBIOS在系統(tǒng)主板上的在系統(tǒng)主板上的ROMROM區(qū),又稱區(qū),又稱ROM-BIOSROM-BIOS。即系統(tǒng)。即系統(tǒng) 加電自檢、引導(dǎo)裝入及對鍵盤、磁盤、磁帶、顯示器、加電自檢、引導(dǎo)裝入及對鍵盤、磁盤、磁帶、顯示器、 打印機、異步串行通信口等控制。用戶可用打印機、異步串行通信口等控制。用戶可用INT INT 10H10HINT 1AHINT 1AH 某些設(shè)備的操作,既能使用某些設(shè)備的操作,既能使用DOSDOS又能使用又能使用BIOSBIOS中斷,中
53、斷, 一般情況下盡可能使用一般情況下盡可能使用DOSDOS中斷,必要時再使用中斷,必要時再使用BIOSBIOS 中斷,中斷,BIOSBIOS更接近硬件。更接近硬件。 2 2系統(tǒng)功能調(diào)用方法系統(tǒng)功能調(diào)用方法 一般需要經(jīng)過以下三個步驟:一般需要經(jīng)過以下三個步驟: 1 1)子程序的入口參數(shù)送相應(yīng)的寄存器。)子程序的入口參數(shù)送相應(yīng)的寄存器。 2 2)子程序的標號送)子程序的標號送AHAH寄存器。寄存器。 3 3)發(fā)出中斷請求,即執(zhí)行軟中斷指令:)發(fā)出中斷請求,即執(zhí)行軟中斷指令: INT 21HINT 21H。 如果是如果是BIOSBIOS中斷,應(yīng)該換成其中斷類型號。中斷,應(yīng)該換成其中斷類型號。 4 4
54、)程序執(zhí)行完畢后,如果有出口參數(shù),則按規(guī)定?。┏绦驁?zhí)行完畢后,如果有出口參數(shù),則按規(guī)定取 得出口參數(shù)。得出口參數(shù)。 【例例5-385-38】在屏幕上顯示信息在屏幕上顯示信息WELCOME TO BEIJINGWELCOME TO BEIJING! CODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:CODE ASSUME CS:CODE,DS:CODE ORG 100H ORG 100H START START: JMP BEGINJMP BEGIN MSG DB WELCOME TO BEIJING MSG DB WELCOME TO BEIJING! BE
55、GINBEGIN: MOV AX,CODE ;MOV AX,CODE ;設(shè)置設(shè)置DSDS MOV DS,AX MOV DS,AX LEA DX,MSG ;LEA DX,MSG ;取字符串首地址取字符串首地址 MOV AH,09H ;MOV AH,09H ;顯示字符串功能調(diào)用編號顯示字符串功能調(diào)用編號 INT 21H ;DOSINT 21H ;DOS功能調(diào)用功能調(diào)用 INT 20H ;INT 20H ;結(jié)束程序結(jié)束程序 CODE ENDSCODE ENDS END START END START 3 3系統(tǒng)功能調(diào)用分組概況系統(tǒng)功能調(diào)用分組概況 (1 1)傳統(tǒng)的字符)傳統(tǒng)的字符I/OI/O管理。管
56、理。 (2 2)傳統(tǒng)的文件管理。)傳統(tǒng)的文件管理。 (3 3)擴充的文件管理。)擴充的文件管理。 (4 4)內(nèi)存管理。)內(nèi)存管理。 (5 5)作業(yè)管理。)作業(yè)管理。 (6 6)其他資源管理。)其他資源管理。 另外,還有一些另外,還有一些DOSDOS中斷,可供程序員使用:中斷功中斷,可供程序員使用:中斷功 能號:能號:20H20H,22H22H,23H23H,24H24H,25H25H,26H26H,27H27H。 4 4部分常用的基本部分常用的基本I/OI/O功能調(diào)用舉例功能調(diào)用舉例 (1 1)1 1 號系統(tǒng)功能調(diào)用:鍵盤輸入并回顯號系統(tǒng)功能調(diào)用:鍵盤輸入并回顯 有鍵按下時,先檢查是否是有鍵按
57、下時,先檢查是否是 Ctrl+Break Ctrl+Break鍵,若是則鍵,若是則 退出;否則將字符的鍵值(退出;否則將字符的鍵值(ASCIIASCII碼)送入寄存器碼)送入寄存器ALAL 中,并在屏幕上顯示該字符。中,并在屏幕上顯示該字符。 此調(diào)用沒有入口參數(shù)。此調(diào)用沒有入口參數(shù)。 MOV AH,1 ;lMOV AH,1 ;l為功能號為功能號 INT 21HINT 21H (2 2)2 2 號系統(tǒng)功能調(diào)用:顯示輸出號系統(tǒng)功能調(diào)用:顯示輸出 此調(diào)用的功能是向輸出設(shè)備輸出一個字符碼。此調(diào)用的功能是向輸出設(shè)備輸出一個字符碼。 此調(diào)用的入口參數(shù)是輸出字符的此調(diào)用的入口參數(shù)是輸出字符的ASCllASC
58、ll碼,入口參數(shù)碼,入口參數(shù) 需送入寄存器需送入寄存器DLDL。沒有出口參數(shù)。沒有出口參數(shù)。 MOV DL , A ; AMOV DL , A ; A為要求輸出字符的為要求輸出字符的ASCIIASCII碼碼 MOV AH, 2 ; 2MOV AH, 2 ; 2為功能號為功能號 INT 21H INT 21H 調(diào)用結(jié)果是將調(diào)用結(jié)果是將DLDL寄存器中字符寄存器中字符AA通過屏幕顯示或通過屏幕顯示或 打印機輸出。打印機輸出。 5.4 5.4 中斷服務(wù)程序設(shè)計中斷服務(wù)程序設(shè)計 1 1概述概述 當中斷發(fā)生當中斷發(fā)生CPUCPU的操作體現(xiàn)為以下的操作體現(xiàn)為以下5 5個步驟:個步驟: 1 1)取中斷類型號
59、。)取中斷類型號。 2 2)計算中斷向量地址。)計算中斷向量地址。 3 3)取中斷向量,按低前高后原則,先取的偏移地址)取中斷向量,按低前高后原則,先取的偏移地址 送送IPIP,后取的段基址送,后取的段基址送CSCS 4 4)轉(zhuǎn)入中斷處理程序。)轉(zhuǎn)入中斷處理程序。 5 5)中斷返回到中斷時斷點位置,軟中斷時是)中斷返回到中斷時斷點位置,軟中斷時是INTINT指令指令 的下一條指令。的下一條指令。 概括來講,中斷程序的設(shè)計包括以下兩個方面:概括來講,中斷程序的設(shè)計包括以下兩個方面: (1 1)主程序部分。)主程序部分。 包括:設(shè)置好堆棧,設(shè)置中斷向量;如是外部中斷,包括:設(shè)置好堆棧,設(shè)置中斷向量
60、;如是外部中斷, 設(shè)置外設(shè)的工作方式,開放中斷響應(yīng)設(shè)置外設(shè)的工作方式,開放中斷響應(yīng);初始化中斷控;初始化中斷控 制器(制器(8259A8259A);); 在執(zhí)行上述操作前,必須是關(guān)中斷。當初始化過程結(jié)在執(zhí)行上述操作前,必須是關(guān)中斷。當初始化過程結(jié) 束后,必須開中斷,才可以接受中斷請求并予以響應(yīng)。束后,必須開中斷,才可以接受中斷請求并予以響應(yīng)。 (2 2)中斷服務(wù)程序設(shè)計部分。)中斷服務(wù)程序設(shè)計部分。 包括:保護現(xiàn)場包括:保護現(xiàn)場,用戶中斷處理程序,若在執(zhí)行期間,用戶中斷處理程序,若在執(zhí)行期間 允許中斷嵌套,則應(yīng)該事先開中斷,并在中斷服務(wù)程允許中斷嵌套,則應(yīng)該事先開中斷,并在中斷服務(wù)程 序執(zhí)行完
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實驗室風(fēng)險控制措施的制定與實施考核試卷
- 農(nóng)產(chǎn)品加工企業(yè)質(zhì)量管理體系持續(xù)改進計劃考核試卷
- 健身器材安全標準與噪音控制標準考核試卷
- 萬用表設(shè)計與生產(chǎn)考核試卷
- 數(shù)字化制鞋業(yè)中的市場趨勢分析與預(yù)測模型考核試卷
- 復(fù)雜介質(zhì)的熒光光譜特性研究考核試卷
- 數(shù)字化印刷品設(shè)計中的跨領(lǐng)域知識整合研究考核試卷
- 化妝品市場細分趨勢考核試卷
- 化學(xué)纖維在體育器材改良中的應(yīng)用考核試卷
- 2025年中國PPC堵帽數(shù)據(jù)監(jiān)測報告
- 勞動仲裁內(nèi)部培訓(xùn)
- 工廠注塑考試題及答案
- 2024年懷化麻陽苗族自治縣招聘事業(yè)單位工作人員筆試真題
- 湖南省長沙市望城區(qū)第二中學(xué)2024-2025學(xué)年高一下學(xué)期6月第三次月考政治試卷(含答案)
- 四川省甘孜州道孚一中學(xué)2025屆七下英語期末統(tǒng)考試題含答案
- 廣東省深圳市寶安區(qū)2023-2024學(xué)年四年級下學(xué)期數(shù)學(xué)期末試卷(含答案)
- 緬甸語教學(xué)與學(xué)習(xí)作業(yè)指導(dǎo)書
- 機械原理課程設(shè)計-沖壓機構(gòu)及送料機構(gòu)設(shè)計說明書
- 實驗一機構(gòu)運動簡圖繪制與分析
- 人民網(wǎng)刪除稿件(帖文)申請登記表
- 服裝校服投標書模板(精編版)
評論
0/150
提交評論