![匯編程序設(shè)計語言_第1頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/15/a3310532-fbad-4152-80dd-fadba6797e85/a3310532-fbad-4152-80dd-fadba6797e851.gif)
![匯編程序設(shè)計語言_第2頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/15/a3310532-fbad-4152-80dd-fadba6797e85/a3310532-fbad-4152-80dd-fadba6797e852.gif)
![匯編程序設(shè)計語言_第3頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/15/a3310532-fbad-4152-80dd-fadba6797e85/a3310532-fbad-4152-80dd-fadba6797e853.gif)
![匯編程序設(shè)計語言_第4頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/15/a3310532-fbad-4152-80dd-fadba6797e85/a3310532-fbad-4152-80dd-fadba6797e854.gif)
![匯編程序設(shè)計語言_第5頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/15/a3310532-fbad-4152-80dd-fadba6797e85/a3310532-fbad-4152-80dd-fadba6797e855.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四章 8086匯編語言程序設(shè)計,幾個概念 8086匯編語言的語句 8086匯編中的偽指令 8086匯編中的運算符 匯編語言程序設(shè)計 宏定義與宏調(diào)用 系統(tǒng)調(diào)用,幾個概念,匯編語言 匯編語言源程序 匯編 匯編程序,什么是匯編程序? 匯編語言源程序不能由機(jī)器直接執(zhí)行,必須翻譯成由機(jī)器代碼組成的目標(biāo)程序,這一過程稱為匯編。把匯編語言源程序翻譯成目標(biāo)程序的軟件稱為匯編程序。如8086 系統(tǒng)的匯編程序ASM-86,及其擴(kuò)展功能后的8086宏匯編程序MASM-86,什么是匯編語言? 匯編語言是一種采用助記符(英文縮寫)表示的程序設(shè)計語言。使用匯編語言編寫的程序稱為匯編語言源程序。它與機(jī)器語言(0、1編寫的
2、代碼)密切相關(guān),機(jī)器語言與匯編語言,機(jī)器語言:機(jī)器語言是計算機(jī)硬件系統(tǒng)能夠直接識別 的計算機(jī)語言,每一條語句實際上是一條 二進(jìn)制形式的指令代碼,由操作碼和操作 數(shù)組成。參見P52-53 匯編語言:匯編語言用助記符代替操作碼,用符號地 址代替操作數(shù),4.1 8086匯編語言的語句,匯編語言由指令性語句和指示性語句組成。 一、指令性語句格式 標(biāo)號: 操作碼 操作數(shù)1, 操作數(shù)2; 注釋 二、指示性語句格式 標(biāo)識符(名字) 指示符(偽指令) 表達(dá)式 三、有關(guān)屬性 存儲器操作數(shù)的屬性有三種:段值、段內(nèi)偏移量和 類型,指令語句的一般格式如下: 標(biāo)號: 操作碼 操作數(shù);注釋 1、標(biāo)號:標(biāo)號是機(jī)器指令語句存
3、放地址的符號表示, 代表該指令目標(biāo)代碼的第一個字節(jié)地址,后 面必須緊跟冒號“:” 。 2、操作碼:操作碼為語句的核心成分,表示該語句的 操作類型。 3、操作數(shù):操作數(shù)表示操作碼的操作對象。 4、注釋:注釋均以分號開始,它可占一行或多行,一 般放在一條語句的后面,偽指令語句格式,偽指令語句格式如下: 標(biāo)識符 偽指令 表達(dá)式;注釋 標(biāo)識符:標(biāo)識符是偽指令語句的一個可選項。 偽指令:偽指令指定匯編程序要完成的具體操 作,如規(guī)定的數(shù)據(jù)定義偽指令DB、DW、DD,段 定義偽指令SEGMENT,說明偽指令A(yù)SSUME等。 表達(dá)式:偽指令后面的表達(dá)式可以是常數(shù)、字符 串、常量名、變量名等,其個數(shù)由具體的偽指
4、令決 定,各個操作數(shù)之間必須以“逗號”分隔。 注釋:偽指令的注釋必須以“;”開始,其作用同 指令語句中的注釋部分,空格,存儲器操作數(shù)即變量,變量通常是存放在某些存儲單元的數(shù)據(jù),以變量名的形式出現(xiàn)在程序中,可代表符號地址、數(shù)據(jù)區(qū)或存儲區(qū)的第一個數(shù)據(jù)單元,如BUF。 變量是用數(shù)據(jù)定義偽指令DB、DW、DD等定義的,變量的三種屬性: 段屬性(SEGMENT):表示變量存放在哪一個邏 輯段中(即變量所在段的段地址)。 偏移屬性(OFFSET):表示變量的偏移地址,即 在邏輯段中距段的起始點的字節(jié)數(shù) 類型屬性(Type):表示變量占用存儲單元的字節(jié) 數(shù)。用DB定義的變量類型屬性為字節(jié);用DW定義 的變量
5、類型屬性為字(2B);用DD定義的變量類 型屬性為雙字(4B,4.2 8086匯編中的偽指令,一、 符號定義語句 1、等值語句 格式:符號名 EQU 表達(dá)式 功能:為常量、表達(dá)式及其他各種符號定義一個 等值的符號名,但它不申請存儲單元。不 允許重新定義。 例: PORT EQU 1234 BUFF EQU PORT58 MEM EQU DS:BP20H COUNT EQU CX ABC EQU AAA,2、等號語句 格式:符號名=表達(dá)式 功能:為常量、表達(dá)式及其他各種符號定義一個 等值的符號名,并能對所定義的符號多次 重復(fù)定義,且以最后一次定義的值為準(zhǔn)。 例:NUM34 NUM341,二、變量
6、定義語句 格式: 符號名 DB/DW/DD 表達(dá)式,1、定義一組數(shù)據(jù) 例1: BUFF DW 1234H,0ABCDH,8EH DW 79DH,7B6AH 可以為一個或連續(xù)的存儲單元設(shè)置數(shù)值初值。 2、定義一串字符 例2: STR DB Welcome ! 用DB偽指令為ASCII字符串中的每一個字符分配一個字節(jié)單元,字符串必須用單引號括起來。 3、定義保留存儲單元 例3: SUM DW ?,? 為數(shù)據(jù)項分配存儲單元的一種方法,只是存儲單元中不預(yù)置確定的值,常用來預(yù)留存儲單元,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ù)單元分配存儲單元。 5、將已定義的地址存入內(nèi)存單元 例5: LIT DD CYC CYC:MOV AX,BX,三、段定義語句 1、段定義語句格式: 段名 SEGMENT 定位類型 組合類型 類別 段名 ENDS 段定義偽指令用于將源程序劃分成若干段,即代碼段(存放程序),數(shù)據(jù)段(存放數(shù)據(jù)),堆棧段,附加段。 只需要掌握 段名 SEGMENT 段名 ENDS,2、段假設(shè)語句 ASSUME 段寄存器名:段名, 功能:向匯編程序指示當(dāng)前各段所用的段寄存 器,設(shè)定段寄存器與段的關(guān)系。 3、ORG偽
8、指令、地址計數(shù)器$ 格式:ORG 功能:指定在它之后的代碼或數(shù)據(jù)存放的起始地 址的偏移量,以表達(dá)式的值作為起始地 址,連續(xù)存放程序或數(shù)據(jù)。 $代表當(dāng)前的地址。 4、END 表示源代碼結(jié)束 格式:END 常數(shù)或表達(dá)式 功能:該語句標(biāo)志整個程序的結(jié)束,是源程序的 最后一條語句,四、過程定義語句 過程名 PROC NEAR/FAR RET 過程名 ENDP 功能:完成過程定義,在過程體中實現(xiàn)過程的操作功 能。當(dāng)一程序塊被定義為過程后,程序中其他 地方就可用CALL指令調(diào)用該過程。 調(diào)用過程的格式為: CALL 過程名 過程名實質(zhì)上是過程入口的符號地址,它和標(biāo)號 一樣,也有三種屬性:段、偏移量和類型(
9、距離)。 一般來說,被定義為過程的程序塊中應(yīng)該有返回 指令RET,執(zhí)行RET指令后,控制返回到原來調(diào)用指 令的下條指令,4.3 8086匯編中的運算符,一、常用運算符 1、算術(shù)運算符 (加)、(減)、*(乘)、/(除)、 MOD(求余)。 2、邏輯運算符 AND、OR、XOR、NOT,3、關(guā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操作符 對于變量有3種: 1字節(jié)型; 2字型; 4雙字型。 對于標(biāo)號有2種: 1NEAR(段內(nèi)); 2FAR(段間)。 例:BUFF DB 20H MOV BX,TYPE BUFF MOV BX,01,4)LENGTH操作符 格式:LENGTH 變量名 功能:返回一個變量名所占存儲單元(字節(jié)、字 或雙字)的數(shù)目。若用重復(fù)定義子句說 明,則返回DUP前的數(shù)字;若沒有DUP 說明,則返回值總是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、綜合運算符(合成操作符) 功能:1、由已有的操作數(shù)建立新的操作數(shù); 2、新操作數(shù)和已有的操作數(shù)類型不一樣。 新的類型只在當(dāng)前指令內(nèi)有效。 1)PTR運算符 格式:類型 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ōu)先級別見p96,PTR:已分配存 儲器單元; THIS:不分配存 儲器單元,4.4 匯編語言程序設(shè)計,常用的匯編語言程序框架: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH ;定義變量 DATA ENDS ;數(shù)據(jù)段結(jié)束 CODE SEGMENT;定義代碼段 ASSUME DS:DATA , CS: CODE;段屬性說明 START: MOV AX , DATA;初始化DS MOV DS , AX MOV AX , 4C00H;返回DOS INT 21H CODE ENDS ;代碼段結(jié)束 END START ;源程
13、序結(jié)束,特點 程序分段 語句由指令性和指示性語句組成 兩種程序框架,框架一: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH ;定義變量 DATA ENDS ;數(shù)據(jù)段結(jié)束 CODE SEGMENT;定義代碼段 ASSUME DS:DATA , CS: CODE;段屬性說明 START: MOV AX , DATA;初始化DS MOV DS , AX ; 填寫代碼 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;段屬性說明 START: PUSH DS MOV AX , 0 PUSH AX MOV AX,DATA MOV DS,AX ;填寫代碼 RET MAIN ENDP CODE ENDS ;代碼段結(jié)束 END START ;源程序結(jié)束,一、匯編語言程序設(shè)計基本步驟 分析問題,確定模型 確定算法 繪制流程圖 編寫程序 檢查和調(diào)試 二、匯編語言程序的基本結(jié)構(gòu),1、順序結(jié)構(gòu) p97,2、分支結(jié)構(gòu),舉例p98,實現(xiàn),用查表法確定多分支 例:某
15、應(yīng)用程序主菜單有8個可選項,其入口地址分別 記為R0、R1R7。要求編制程序根據(jù)變量N的 值轉(zhuǎn)向相應(yīng)的處理程序(N為入口編號)。 步驟: a、把入口地址放在BASE開始的內(nèi)存單元; b、根據(jù)N的內(nèi)容進(jìn)行查表實現(xiàn)分支轉(zhuǎn)移,例:某應(yīng)用程序主菜單有8個可選項,其入口地址分別 記為R0、R1R7。要求編制程序根據(jù)變量N的值 轉(zhuǎn)向相應(yīng)的處理程序(N為入口編號)。 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)控制有三種: 計數(shù)法 條件法(比較條件結(jié)束) 多重循環(huán)(設(shè)定標(biāo)志結(jié)束,Call proc1,ret,4、子程序,1) 實現(xiàn)方法 主程序有調(diào)用指令CALL 子程序有返回指令RET (2) 特點 CALL指令與RET缺一不可 現(xiàn)場保護(hù) 入口出口參數(shù)設(shè)置,子程序編寫: 1、子程序組成 (1
17、) 使用說明 a、子程序功能 b、使用寄存器情況 c、入口出口參數(shù) (2) 程序體 入口出口參數(shù)傳遞 現(xiàn)場保護(hù) 功能程序段,例:編寫AX*10AX子程序,這是一個乘10子程序 ;使用寄存器AX ;入口:AX,出口:AX MUL10PROC FAR PUSH BX ;保護(hù)現(xiàn)場 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)場 POP BX RET MUL10ENDP,功能程序段,2、現(xiàn)場保護(hù)和入口出口參數(shù)傳遞 (1)現(xiàn)場保護(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個子程序,三、系統(tǒng)功能調(diào)用 對87個子程序進(jìn)行編號,根據(jù)編號進(jìn)行相關(guān)處理 格式: 1、入口參數(shù)(可選) 2、編號AH 3、INT 21H,編號AH INT 21H,AH=1 1號調(diào)用,AH=2 2號調(diào)用,常用的系統(tǒng)調(diào)用: 1、1號調(diào)用鍵盤輸入單字符 功能:從鍵盤輸入一個字符,若Ctrl+Break鍵,則退出。 輸入?yún)?shù):無 輸出參數(shù):AL=ASCII碼。 調(diào)用格式:MOV AH,1 INT 21H 2、8號調(diào)用無回顯鍵盤輸入單字符 3、6號調(diào)用顯示及輸入,若DL=0FFH輸入,否則顯 示。 4、9號調(diào)用輸出字符串,DS:DX=輸出字符緩沖區(qū) 首地址。 5、10號調(diào)用輸入字符串,設(shè)置緩沖區(qū)注意事項: 緩沖區(qū)第
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度裝配式建筑研發(fā)設(shè)計勞務(wù)大包合同范本
- 2025年度劇院品牌授權(quán)使用合同
- 2025年度文化創(chuàng)意產(chǎn)業(yè)合伙合同示范文本
- 2025年度文化產(chǎn)業(yè)發(fā)展基金投資收款合同
- 2025年度服務(wù)員聘用合同中的健康與安全條款
- 2025年度自然資源局環(huán)境監(jiān)測與評估合同
- 2025年度公路橋梁施工監(jiān)理服務(wù)合同書
- 2025年度綠色能源借款合同范本wps版
- 2025年度健身中心會員生日特權(quán)活動協(xié)議
- 2025年度快遞業(yè)務(wù)培訓(xùn)與咨詢合同
- 小學(xué)語文閱讀教學(xué)落實學(xué)生核心素養(yǎng)方法的研究-中期報告
- 電梯使用轉(zhuǎn)讓協(xié)議書范文
- 工程變更履歷表
- swagelok管接頭安裝培訓(xùn)教程
- 煤礦崗位標(biāo)準(zhǔn)化作業(yè)流程
- 唯物史觀課件
- 公墓管理考核方案
- 把子肉店創(chuàng)業(yè)計劃書
- 冀教版五年級上冊英語全冊單元測試卷(含期中期末試卷及聽力音頻)
- 靜脈用藥安全輸注藥護(hù)專家指引
- 華住酒店管理制度
評論
0/150
提交評論