




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第四章 8086匯編語言程序設計,幾個概念 8086匯編語言的語句 8086匯編中的偽指令 8086匯編中的運算符 匯編語言程序設計 宏定義與宏調(diào)用 系統(tǒng)調(diào)用,幾個概念,匯編語言 匯編語言源程序 匯編 匯編程序,什么是匯編程序? 匯編語言源程序不能由機器直接執(zhí)行,必須翻譯成由機器代碼組成的目標程序,這一過程稱為匯編。把匯編語言源程序翻譯成目標程序的軟件稱為匯編程序。如8086 系統(tǒng)的匯編程序ASM-86,及其擴展功能后的8086宏匯編程序MASM-86,什么是匯編語言? 匯編語言是一種采用助記符(英文縮寫)表示的程序設計語言。使用匯編語言編寫的程序稱為匯編語言源程序。它與機器語言(0、1編寫的
2、代碼)密切相關,機器語言與匯編語言,機器語言:機器語言是計算機硬件系統(tǒng)能夠直接識別 的計算機語言,每一條語句實際上是一條 二進制形式的指令代碼,由操作碼和操作 數(shù)組成。參見P52-53 匯編語言:匯編語言用助記符代替操作碼,用符號地 址代替操作數(shù),4.1 8086匯編語言的語句,匯編語言由指令性語句和指示性語句組成。 一、指令性語句格式 標號: 操作碼 操作數(shù)1, 操作數(shù)2; 注釋 二、指示性語句格式 標識符(名字) 指示符(偽指令) 表達式 三、有關屬性 存儲器操作數(shù)的屬性有三種:段值、段內(nèi)偏移量和 類型,指令語句的一般格式如下: 標號: 操作碼 操作數(shù);注釋 1、標號:標號是機器指令語句存
3、放地址的符號表示, 代表該指令目標代碼的第一個字節(jié)地址,后 面必須緊跟冒號“:” 。 2、操作碼:操作碼為語句的核心成分,表示該語句的 操作類型。 3、操作數(shù):操作數(shù)表示操作碼的操作對象。 4、注釋:注釋均以分號開始,它可占一行或多行,一 般放在一條語句的后面,偽指令語句格式,偽指令語句格式如下: 標識符 偽指令 表達式;注釋 標識符:標識符是偽指令語句的一個可選項。 偽指令:偽指令指定匯編程序要完成的具體操 作,如規(guī)定的數(shù)據(jù)定義偽指令DB、DW、DD,段 定義偽指令SEGMENT,說明偽指令ASSUME等。 表達式:偽指令后面的表達式可以是常數(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 表達式 功能:為常量、表達式及其他各種符號定義一個 等值的符號名,但它不申請存儲單元。不 允許重新定義。 例: PORT EQU 1234 BUFF EQU PORT58 MEM EQU DS:BP20H COUNT EQU CX ABC EQU AAA,2、等號語句 格式:符號名=表達式 功能:為常量、表達式及其他各種符號定義一個 等值的符號名,并能對所定義的符號多次 重復定義,且以最后一次定義的值為準。 例:NUM34 NUM341,二、變量
6、定義語句 格式: 符號名 DB/DW/DD 表達式,1、定義一組數(shù)據(jù) 例1: BUFF DW 1234H,0ABCDH,8EH DW 79DH,7B6AH 可以為一個或連續(xù)的存儲單元設置數(shù)值初值。 2、定義一串字符 例2: STR DB Welcome ! 用DB偽指令為ASCII字符串中的每一個字符分配一個字節(jié)單元,字符串必須用單引號括起來。 3、定義保留存儲單元 例3: SUM DW ?,? 為數(shù)據(jù)項分配存儲單元的一種方法,只是存儲單元中不預置確定的值,常用來預留存儲單元,4、復制操作 復制操作符DUP(Duplication)可預置重復的數(shù)值 n DUP (表達式) 例4:ALL_ZER
7、O DB 0,0,0,0,0 用復制操作可改為: ALL_ZERO DB 5 DUP(0) 為若干重復數(shù)據(jù)單元分配存儲單元。 5、將已定義的地址存入內(nèi)存單元 例5: LIT DD CYC CYC:MOV AX,BX,三、段定義語句 1、段定義語句格式: 段名 SEGMENT 定位類型 組合類型 類別 段名 ENDS 段定義偽指令用于將源程序劃分成若干段,即代碼段(存放程序),數(shù)據(jù)段(存放數(shù)據(jù)),堆棧段,附加段。 只需要掌握 段名 SEGMENT 段名 ENDS,2、段假設語句 ASSUME 段寄存器名:段名, 功能:向匯編程序指示當前各段所用的段寄存 器,設定段寄存器與段的關系。 3、ORG偽
8、指令、地址計數(shù)器$ 格式:ORG 功能:指定在它之后的代碼或數(shù)據(jù)存放的起始地 址的偏移量,以表達式的值作為起始地 址,連續(xù)存放程序或數(shù)據(jù)。 $代表當前的地址。 4、END 表示源代碼結束 格式:END 常數(shù)或表達式 功能:該語句標志整個程序的結束,是源程序的 最后一條語句,四、過程定義語句 過程名 PROC NEAR/FAR RET 過程名 ENDP 功能:完成過程定義,在過程體中實現(xiàn)過程的操作功 能。當一程序塊被定義為過程后,程序中其他 地方就可用CALL指令調(diào)用該過程。 調(diào)用過程的格式為: CALL 過程名 過程名實質(zhì)上是過程入口的符號地址,它和標號 一樣,也有三種屬性:段、偏移量和類型(
9、距離)。 一般來說,被定義為過程的程序塊中應該有返回 指令RET,執(zhí)行RET指令后,控制返回到原來調(diào)用指 令的下條指令,4.3 8086匯編中的運算符,一、常用運算符 1、算術運算符 (加)、(減)、*(乘)、/(除)、 MOD(求余)。 2、邏輯運算符 AND、OR、XOR、NOT,3、關系運算符 EQ(相等)、NE(不等、)、 LT(小于)、GT(大于)、 LE(小于等于)、GE(大于等于)。 關系成立,全1 關系不成立,全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雙字型。 對于標號有2種: 1NEAR(段內(nèi)); 2FAR(段間)。 例:BUFF DB 20H MOV BX,TYPE BUFF MOV BX,01,4)LENGTH操作符 格式:LENGTH 變量名 功能:返回一個變量名所占存儲單元(字節(jié)、字 或雙字)的數(shù)目。若用重復定義子句說 明,則返回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ù)類型不一樣。 新的類型只在當前指令內(nèi)有效。 1)PTR運算符 格式:類型 PTR 表達式 例: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 匯編語言程序設計,常用的匯編語言程序框架: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH ;定義變量 DATA ENDS ;數(shù)據(jù)段結束 CODE SEGMENT;定義代碼段 ASSUME DS:DATA , CS: CODE;段屬性說明 START: MOV AX , DATA;初始化DS MOV DS , AX MOV AX , 4C00H;返回DOS INT 21H CODE ENDS ;代碼段結束 END START ;源程
13、序結束,特點 程序分段 語句由指令性和指示性語句組成 兩種程序框架,框架一: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH ;定義變量 DATA ENDS ;數(shù)據(jù)段結束 CODE SEGMENT;定義代碼段 ASSUME DS:DATA , CS: CODE;段屬性說明 START: MOV AX , DATA;初始化DS MOV DS , AX ; 填寫代碼 MOV AX , 4C00H;返回DOS INT 21H CODE ENDS ;代碼段結束 END START ;源程序結束,框架二: DATA SEGMENT;定義數(shù)據(jù)段 VAL1 DB 12H , 8EH
14、 ;定義變量 DATA ENDS ;數(shù)據(jù)段結束 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 ;代碼段結束 END START ;源程序結束,一、匯編語言程序設計基本步驟 分析問題,確定模型 確定算法 繪制流程圖 編寫程序 檢查和調(diào)試 二、匯編語言程序的基本結構,1、順序結構 p97,2、分支結構,舉例p98,實現(xiàn),用查表法確定多分支 例:某
15、應用程序主菜單有8個可選項,其入口地址分別 記為R0、R1R7。要求編制程序根據(jù)變量N的 值轉向相應的處理程序(N為入口編號)。 步驟: a、把入口地址放在BASE開始的內(nèi)存單元; b、根據(jù)N的內(nèi)容進行查表實現(xiàn)分支轉移,例:某應用程序主菜單有8個可選項,其入口地址分別 記為R0、R1R7。要求編制程序根據(jù)變量N的值 轉向相應的處理程序(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)結構,循環(huán)控制有三種: 計數(shù)法 條件法(比較條件結束) 多重循環(huán)(設定標志結束,Call proc1,ret,4、子程序,1) 實現(xiàn)方法 主程序有調(diào)用指令CALL 子程序有返回指令RET (2) 特點 CALL指令與RET缺一不可 現(xiàn)場保護 入口出口參數(shù)設置,子程序編寫: 1、子程序組成 (1
17、) 使用說明 a、子程序功能 b、使用寄存器情況 c、入口出口參數(shù) (2) 程序體 入口出口參數(shù)傳遞 現(xiàn)場保護 功能程序段,例:編寫AX*10AX子程序,這是一個乘10子程序 ;使用寄存器AX ;入口:AX,出口:AX MUL10PROC FAR PUSH BX ;保護現(xiàn)場 PUSHF ADD AX,AX;2AX MOV BX,AX;2AXBX ADD AX,AX;4AX ADD AX,AX;8AX ADD AX,BX;10AX POPF ;恢復現(xiàn)場 POP BX RET MUL10ENDP,功能程序段,2、現(xiàn)場保護和入口出口參數(shù)傳遞 (1)現(xiàn)場保護 方案一:在子程序中保護 靈活,不方便 方案
18、二:在主程序中保護 方便,不靈活 (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ù)編號進行相關處理 格式: 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)用輸入字符串,設置緩沖區(qū)注意事項: 緩沖區(qū)第
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國環(huán)境美化及園藝服務行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 服務貿(mào)易統(tǒng)計培訓課件
- 學生學習風格與個性化教學策略
- 教師職業(yè)發(fā)展與教學質(zhì)量的提升策略研究
- 退換貨培訓課件
- 教育數(shù)字化轉型中的技術革新與挑戰(zhàn)
- 智慧城市公共服務平臺的數(shù)據(jù)管理與分析
- 鋼結構焊接培訓課件
- 教育大數(shù)據(jù)在教學管理中的創(chuàng)新應用
- 抖音商戶短視頻播放量分析反饋制度
- 2025年廣州市事業(yè)單位教師招聘考試生物學科專業(yè)知識試題
- 幼兒小小運動會活動方案
- C語言程序設計說課課件
- 2023年對外漢語教育學引論知識點
- 產(chǎn)權變更協(xié)議書范本
- 2024年荊州市江北地區(qū)檢察院招聘檢察輔助人員筆試真題
- 2025年四川省廣安市中考物理試題(原卷版)
- 高一下學期期末考模擬卷(第一、二冊綜合)(基礎)- 《溫故知新》2025-2026學年高一數(shù)學下學期復習課(人教A版2029必修第二冊)(原卷版)
- 《文旅服務信息資源分類及編碼規(guī)范》
- 預防慢性病與健康生活指南
- 電解鋅車間管理制度
評論
0/150
提交評論