匯編程序設(shè)計(jì)語(yǔ)言_第1頁(yè)
匯編程序設(shè)計(jì)語(yǔ)言_第2頁(yè)
匯編程序設(shè)計(jì)語(yǔ)言_第3頁(yè)
匯編程序設(shè)計(jì)語(yǔ)言_第4頁(yè)
匯編程序設(shè)計(jì)語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第四章 8086匯編語(yǔ)言程序設(shè)計(jì),幾個(gè)概念 8086匯編語(yǔ)言的語(yǔ)句 8086匯編中的偽指令 8086匯編中的運(yùn)算符 匯編語(yǔ)言程序設(shè)計(jì) 宏定義與宏調(diào)用 系統(tǒng)調(diào)用,幾個(gè)概念,匯編語(yǔ)言 匯編語(yǔ)言源程序 匯編 匯編程序,什么是匯編程序? 匯編語(yǔ)言源程序不能由機(jī)器直接執(zhí)行,必須翻譯成由機(jī)器代碼組成的目標(biāo)程序,這一過(guò)程稱為匯編。把匯編語(yǔ)言源程序翻譯成目標(biāo)程序的軟件稱為匯編程序。如8086 系統(tǒng)的匯編程序ASM-86,及其擴(kuò)展功能后的8086宏匯編程序MASM-86,什么是匯編語(yǔ)言? 匯編語(yǔ)言是一種采用助記符(英文縮寫(xiě))表示的程序設(shè)計(jì)語(yǔ)言。使用匯編語(yǔ)言編寫(xiě)的程序稱為匯編語(yǔ)言源程序。它與機(jī)器語(yǔ)言(0、1編寫(xiě)的

2、代碼)密切相關(guān),機(jī)器語(yǔ)言與匯編語(yǔ)言,機(jī)器語(yǔ)言:機(jī)器語(yǔ)言是計(jì)算機(jī)硬件系統(tǒng)能夠直接識(shí)別 的計(jì)算機(jī)語(yǔ)言,每一條語(yǔ)句實(shí)際上是一條 二進(jìn)制形式的指令代碼,由操作碼和操作 數(shù)組成。參見(jiàn)P52-53 匯編語(yǔ)言:匯編語(yǔ)言用助記符代替操作碼,用符號(hào)地 址代替操作數(shù),4.1 8086匯編語(yǔ)言的語(yǔ)句,匯編語(yǔ)言由指令性語(yǔ)句和指示性語(yǔ)句組成。 一、指令性語(yǔ)句格式 標(biāo)號(hào): 操作碼 操作數(shù)1, 操作數(shù)2; 注釋 二、指示性語(yǔ)句格式 標(biāo)識(shí)符(名字) 指示符(偽指令) 表達(dá)式 三、有關(guān)屬性 存儲(chǔ)器操作數(shù)的屬性有三種:段值、段內(nèi)偏移量和 類型,指令語(yǔ)句的一般格式如下: 標(biāo)號(hào): 操作碼 操作數(shù);注釋 1、標(biāo)號(hào):標(biāo)號(hào)是機(jī)器指令語(yǔ)句存

3、放地址的符號(hào)表示, 代表該指令目標(biāo)代碼的第一個(gè)字節(jié)地址,后 面必須緊跟冒號(hào)“:” 。 2、操作碼:操作碼為語(yǔ)句的核心成分,表示該語(yǔ)句的 操作類型。 3、操作數(shù):操作數(shù)表示操作碼的操作對(duì)象。 4、注釋:注釋均以分號(hào)開(kāi)始,它可占一行或多行,一 般放在一條語(yǔ)句的后面,偽指令語(yǔ)句格式,偽指令語(yǔ)句格式如下: 標(biāo)識(shí)符 偽指令 表達(dá)式;注釋 標(biāo)識(shí)符:標(biāo)識(shí)符是偽指令語(yǔ)句的一個(gè)可選項(xiàng)。 偽指令:偽指令指定匯編程序要完成的具體操 作,如規(guī)定的數(shù)據(jù)定義偽指令DB、DW、DD,段 定義偽指令SEGMENT,說(shuō)明偽指令A(yù)SSUME等。 表達(dá)式:偽指令后面的表達(dá)式可以是常數(shù)、字符 串、常量名、變量名等,其個(gè)數(shù)由具體的偽指

4、令決 定,各個(gè)操作數(shù)之間必須以“逗號(hào)”分隔。 注釋:偽指令的注釋必須以“;”開(kāi)始,其作用同 指令語(yǔ)句中的注釋部分,空格,存儲(chǔ)器操作數(shù)即變量,變量通常是存放在某些存儲(chǔ)單元的數(shù)據(jù),以變量名的形式出現(xiàn)在程序中,可代表符號(hào)地址、數(shù)據(jù)區(qū)或存儲(chǔ)區(qū)的第一個(gè)數(shù)據(jù)單元,如BUF。 變量是用數(shù)據(jù)定義偽指令DB、DW、DD等定義的,變量的三種屬性: 段屬性(SEGMENT):表示變量存放在哪一個(gè)邏 輯段中(即變量所在段的段地址)。 偏移屬性(OFFSET):表示變量的偏移地址,即 在邏輯段中距段的起始點(diǎn)的字節(jié)數(shù) 類型屬性(Type):表示變量占用存儲(chǔ)單元的字節(jié) 數(shù)。用DB定義的變量類型屬性為字節(jié);用DW定義 的變量

5、類型屬性為字(2B);用DD定義的變量類 型屬性為雙字(4B,4.2 8086匯編中的偽指令,一、 符號(hào)定義語(yǔ)句 1、等值語(yǔ)句 格式:符號(hào)名 EQU 表達(dá)式 功能:為常量、表達(dá)式及其他各種符號(hào)定義一個(gè) 等值的符號(hào)名,但它不申請(qǐng)存儲(chǔ)單元。不 允許重新定義。 例: PORT EQU 1234 BUFF EQU PORT58 MEM EQU DS:BP20H COUNT EQU CX ABC EQU AAA,2、等號(hào)語(yǔ)句 格式:符號(hào)名=表達(dá)式 功能:為常量、表達(dá)式及其他各種符號(hào)定義一個(gè) 等值的符號(hào)名,并能對(duì)所定義的符號(hào)多次 重復(fù)定義,且以最后一次定義的值為準(zhǔn)。 例:NUM34 NUM341,二、變量

6、定義語(yǔ)句 格式: 符號(hào)名 DB/DW/DD 表達(dá)式,1、定義一組數(shù)據(jù) 例1: BUFF DW 1234H,0ABCDH,8EH DW 79DH,7B6AH 可以為一個(gè)或連續(xù)的存儲(chǔ)單元設(shè)置數(shù)值初值。 2、定義一串字符 例2: STR DB Welcome ! 用DB偽指令為ASCII字符串中的每一個(gè)字符分配一個(gè)字節(jié)單元,字符串必須用單引號(hào)括起來(lái)。 3、定義保留存儲(chǔ)單元 例3: SUM DW ?,? 為數(shù)據(jù)項(xiàng)分配存儲(chǔ)單元的一種方法,只是存儲(chǔ)單元中不預(yù)置確定的值,常用來(lái)預(yù)留存儲(chǔ)單元,4、復(fù)制操作 復(fù)制操作符DUP(Duplication)可預(yù)置重復(fù)的數(shù)值 n DUP (表達(dá)式) 例4:ALL_ZER

7、O DB 0,0,0,0,0 用復(fù)制操作可改為: ALL_ZERO DB 5 DUP(0) 為若干重復(fù)數(shù)據(jù)單元分配存儲(chǔ)單元。 5、將已定義的地址存入內(nèi)存單元 例5: LIT DD CYC CYC:MOV AX,BX,三、段定義語(yǔ)句 1、段定義語(yǔ)句格式: 段名 SEGMENT 定位類型 組合類型 類別 段名 ENDS 段定義偽指令用于將源程序劃分成若干段,即代碼段(存放程序),數(shù)據(jù)段(存放數(shù)據(jù)),堆棧段,附加段。 只需要掌握 段名 SEGMENT 段名 ENDS,2、段假設(shè)語(yǔ)句 ASSUME 段寄存器名:段名, 功能:向匯編程序指示當(dāng)前各段所用的段寄存 器,設(shè)定段寄存器與段的關(guān)系。 3、ORG偽

8、指令、地址計(jì)數(shù)器$ 格式:ORG 功能:指定在它之后的代碼或數(shù)據(jù)存放的起始地 址的偏移量,以表達(dá)式的值作為起始地 址,連續(xù)存放程序或數(shù)據(jù)。 $代表當(dāng)前的地址。 4、END 表示源代碼結(jié)束 格式:END 常數(shù)或表達(dá)式 功能:該語(yǔ)句標(biāo)志整個(gè)程序的結(jié)束,是源程序的 最后一條語(yǔ)句,四、過(guò)程定義語(yǔ)句 過(guò)程名 PROC NEAR/FAR RET 過(guò)程名 ENDP 功能:完成過(guò)程定義,在過(guò)程體中實(shí)現(xiàn)過(guò)程的操作功 能。當(dāng)一程序塊被定義為過(guò)程后,程序中其他 地方就可用CALL指令調(diào)用該過(guò)程。 調(diào)用過(guò)程的格式為: CALL 過(guò)程名 過(guò)程名實(shí)質(zhì)上是過(guò)程入口的符號(hào)地址,它和標(biāo)號(hào) 一樣,也有三種屬性:段、偏移量和類型(

9、距離)。 一般來(lái)說(shuō),被定義為過(guò)程的程序塊中應(yīng)該有返回 指令RET,執(zhí)行RET指令后,控制返回到原來(lái)調(diào)用指 令的下條指令,4.3 8086匯編中的運(yùn)算符,一、常用運(yùn)算符 1、算術(shù)運(yùn)算符 (加)、(減)、*(乘)、/(除)、 MOD(求余)。 2、邏輯運(yùn)算符 AND、OR、XOR、NOT,3、關(guān)系運(yùn)算符 EQ(相等)、NE(不等、)、 LT(小于)、GT(大于)、 LE(小于等于)、GE(大于等于)。 關(guān)系成立,全1 關(guān)系不成立,全0 例: MOV DL , 10H LT 16 ; MOV DL,0 例: AND AX , 555 GT 222 ; AND AX,0FFFFH,二、常用的操作符 4

10、、分析操作符 1)SEG操作符 取段地址 例: MOV AX,SEG BUFF 2)OFFSET操作符 取地址的偏移量 例:MOV BX,OFFSET BUFF,3)TYPE操作符 對(duì)于變量有3種: 1字節(jié)型; 2字型; 4雙字型。 對(duì)于標(biāo)號(hào)有2種: 1NEAR(段內(nèi)); 2FAR(段間)。 例:BUFF DB 20H MOV BX,TYPE BUFF MOV BX,01,4)LENGTH操作符 格式:LENGTH 變量名 功能:返回一個(gè)變量名所占存儲(chǔ)單元(字節(jié)、字 或雙字)的數(shù)目。若用重復(fù)定義子句說(shuō) 明,則返回DUP前的數(shù)字;若沒(méi)有DUP 說(shuō)明,則返回值總是1。 5)SIZE操作符 SIZE

11、TYPELENGTH 例:BUFF DW 10 DUP (?) MOV CX,LENGTH BUF; MOV CX,10 MOV CX,SIZE BUF; MOV CX,20,5、綜合運(yùn)算符(合成操作符) 功能:1、由已有的操作數(shù)建立新的操作數(shù); 2、新操作數(shù)和已有的操作數(shù)類型不一樣。 新的類型只在當(dāng)前指令內(nèi)有效。 1)PTR運(yùn)算符 格式:類型 PTR 表達(dá)式 例:INC WORD PTR BX wx DW 1234H MOV AL,BYTE PTR wx MOV AH,BYTE PTR wx+1 2)THIS操作符 格式:THIS 類型(或?qū)傩? 例:FIRST EQU THIS BYTE

12、SECOND DW 100 DUP (?) 運(yùn)算符的優(yōu)先級(jí)別見(jiàn)p96,PTR:已分配存 儲(chǔ)器單元; THIS:不分配存 儲(chǔ)器單元,4.4 匯編語(yǔ)言程序設(shè)計(jì),常用的匯編語(yǔ)言程序框架: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH ;定義變量 DATA ENDS ;數(shù)據(jù)段結(jié)束 CODE SEGMENT;定義代碼段 ASSUME DS:DATA , CS: CODE;段屬性說(shuō)明 START: MOV AX , DATA;初始化DS MOV DS , AX MOV AX , 4C00H;返回DOS INT 21H CODE ENDS ;代碼段結(jié)束 END START ;源程

13、序結(jié)束,特點(diǎn) 程序分段 語(yǔ)句由指令性和指示性語(yǔ)句組成 兩種程序框架,框架一: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH ;定義變量 DATA ENDS ;數(shù)據(jù)段結(jié)束 CODE SEGMENT;定義代碼段 ASSUME DS:DATA , CS: CODE;段屬性說(shuō)明 START: MOV AX , DATA;初始化DS MOV DS , AX ; 填寫(xiě)代碼 MOV AX , 4C00H;返回DOS INT 21H CODE ENDS ;代碼段結(jié)束 END START ;源程序結(jié)束,框架二: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH

14、 ;定義變量 DATA ENDS ;數(shù)據(jù)段結(jié)束 CODE SEGMENT;定義代碼段 MAIN PROC FAR ASSUME DS:DATA , CS: CODE;段屬性說(shuō)明 START: PUSH DS MOV AX , 0 PUSH AX MOV AX,DATA MOV DS,AX ;填寫(xiě)代碼 RET MAIN ENDP CODE ENDS ;代碼段結(jié)束 END START ;源程序結(jié)束,一、匯編語(yǔ)言程序設(shè)計(jì)基本步驟 分析問(wèn)題,確定模型 確定算法 繪制流程圖 編寫(xiě)程序 檢查和調(diào)試 二、匯編語(yǔ)言程序的基本結(jié)構(gòu),1、順序結(jié)構(gòu) p97,2、分支結(jié)構(gòu),舉例p98,實(shí)現(xiàn),用查表法確定多分支 例:某

15、應(yīng)用程序主菜單有8個(gè)可選項(xiàng),其入口地址分別 記為R0、R1R7。要求編制程序根據(jù)變量N的 值轉(zhuǎn)向相應(yīng)的處理程序(N為入口編號(hào))。 步驟: a、把入口地址放在BASE開(kāi)始的內(nèi)存單元; b、根據(jù)N的內(nèi)容進(jìn)行查表實(shí)現(xiàn)分支轉(zhuǎn)移,例:某應(yīng)用程序主菜單有8個(gè)可選項(xiàng),其入口地址分別 記為R0、R1R7。要求編制程序根據(jù)變量N的值 轉(zhuǎn)向相應(yīng)的處理程序(N為入口編號(hào))。 DATA SEGMENT ADD BX,AX BASE DW R0,R1,R2,R3 MOV AX,BX DW R4,R5,R6,R7 JMP AX N DB 5 R0: DATA ENDS JMP OK CODE SEGMENT R1: AS

16、SUME CS:CODE,DS:DATA JMP OK START:MOV AX,DATA MOV DS,AX R7: MOV AL,N OK:MOV AH,4CH ADD AL,AL INT 21H MOV AH,0 CODE ENDS MOV BX,OFFSET BASE END START,3、循環(huán)結(jié)構(gòu),循環(huán)控制有三種: 計(jì)數(shù)法 條件法(比較條件結(jié)束) 多重循環(huán)(設(shè)定標(biāo)志結(jié)束,Call proc1,ret,4、子程序,1) 實(shí)現(xiàn)方法 主程序有調(diào)用指令CALL 子程序有返回指令RET (2) 特點(diǎn) CALL指令與RET缺一不可 現(xiàn)場(chǎng)保護(hù) 入口出口參數(shù)設(shè)置,子程序編寫(xiě): 1、子程序組成 (1

17、) 使用說(shuō)明 a、子程序功能 b、使用寄存器情況 c、入口出口參數(shù) (2) 程序體 入口出口參數(shù)傳遞 現(xiàn)場(chǎng)保護(hù) 功能程序段,例:編寫(xiě)AX*10AX子程序,這是一個(gè)乘10子程序 ;使用寄存器AX ;入口:AX,出口:AX MUL10PROC FAR PUSH BX ;保護(hù)現(xiàn)場(chǎng) PUSHF ADD AX,AX;2AX MOV BX,AX;2AXBX ADD AX,AX;4AX ADD AX,AX;8AX ADD AX,BX;10AX POPF ;恢復(fù)現(xiàn)場(chǎng) POP BX RET MUL10ENDP,功能程序段,2、現(xiàn)場(chǎng)保護(hù)和入口出口參數(shù)傳遞 (1)現(xiàn)場(chǎng)保護(hù) 方案一:在子程序中保護(hù) 靈活,不方便 方案

18、二:在主程序中保護(hù) 方便,不靈活 (2)參數(shù)傳遞 寄存器傳遞 變量傳遞 堆棧傳遞,4.4 系統(tǒng)調(diào)用,一、PCDOS執(zhí)行流程,BIOS,IBMBIO,IBMDOS,鍵盤命令,命令處理程序,文件管理,基本輸入/輸出,BIOS,用戶程序,用戶程序,ROM,IBMBIO,IBMDOS,二、DOS系統(tǒng)子程序功能 1、磁盤管理 2、內(nèi)存管理 3、系統(tǒng)輸入/輸出 共87個(gè)子程序,三、系統(tǒng)功能調(diào)用 對(duì)87個(gè)子程序進(jìn)行編號(hào),根據(jù)編號(hào)進(jìn)行相關(guān)處理 格式: 1、入口參數(shù)(可選) 2、編號(hào)AH 3、INT 21H,編號(hào)AH INT 21H,AH=1 1號(hào)調(diào)用,AH=2 2號(hào)調(diào)用,常用的系統(tǒng)調(diào)用: 1、1號(hào)調(diào)用鍵盤輸入單字符 功能:從鍵盤輸入一個(gè)字符,若Ctrl+Break鍵,則退出。 輸入?yún)?shù):無(wú) 輸出參數(shù):AL=ASCII碼。 調(diào)用格式:MOV AH,1 INT 21H 2、8號(hào)調(diào)用無(wú)回顯鍵盤輸入單字符 3、6號(hào)調(diào)用顯示及輸入,若DL=0FFH輸入,否則顯 示。 4、9號(hào)調(diào)用輸出字符串,DS:DX=輸出字符緩沖區(qū) 首地址。 5、10號(hào)調(diào)用輸入字符串,設(shè)置緩沖區(qū)注意事項(xiàng): 緩沖區(qū)第

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論