微機(jī)原理與接口技術(shù).ppt_第1頁
微機(jī)原理與接口技術(shù).ppt_第2頁
微機(jī)原理與接口技術(shù).ppt_第3頁
微機(jī)原理與接口技術(shù).ppt_第4頁
微機(jī)原理與接口技術(shù).ppt_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 MASM偽指令系統(tǒng),3.1.1匯編語句種類與格式,匯編語言源程序中可以使用3類語句,指令性語句,偽指令語句,宏指令語句,(1)、指令性語句,能夠被CPU所執(zhí)行的語句,一條指令性語句對應(yīng)于一條機(jī)器指令,指令性語句的種類取決與CPU的指令系統(tǒng),(2)、偽指令語句,用于控制匯編過程,為匯編器提供必要的輔助信息的語句,如定義變量、定義符號常量等,該類語句也稱為指示性語句。,(2)、偽指令語句與指令性語句間的區(qū)別,偽指令:匯編后不產(chǎn)生任何機(jī)器代碼 指令性語句:匯編后產(chǎn)生機(jī)器代碼,(3)、宏指令語句,為多次重復(fù)使用的一段程序起一個名字,在程序其他地方使用這段程序時,使用名字替代該段程序。被名字替換

2、的這段程序就叫宏。,宏展開:將名字還原為程序的過程,宏指令:用名字代替一段程序,宏名形成的指令稱為宏指令。,第3章 MASM偽指令系統(tǒng),3.1.2匯編語言語句的格式,指令性語句的一般格式為:,標(biāo)號: 指令助記符 操作數(shù)1,操作數(shù)2 ;注釋,指示性語句的一般格式為:,名字 偽指令定義符 參數(shù),參數(shù) ;注釋,(1)、標(biāo)號、名字,標(biāo)號與符號統(tǒng)稱符號,符號是一個字符串,可以使用字母、數(shù)字、特殊符號,字母:az ,AZ 數(shù)字:09 特殊符號:? . _ $等,(2)、助記符、定義符,助記符:定義了該語句實(shí)現(xiàn)的操作 定義符:定義了該偽指令所要實(shí)現(xiàn)的操作,(3)、參數(shù),用于說明操作的對象,參數(shù)的類型和數(shù)目隨

3、指令或偽指令而變。 參數(shù)可以是:常數(shù)、寄存器數(shù)、存儲器數(shù),(3)、參數(shù),常數(shù):二進(jìn)制常數(shù),由0和1組成,以字母B結(jié)尾 八進(jìn)制常數(shù),由07組成,以字母Q結(jié)尾 十六進(jìn)制常數(shù),以09及AF組成,以字母F結(jié)尾 串常量,用引號引起來的字符串,其值為ASCII碼,(3)、參數(shù),算術(shù)運(yùn)算符: + - * / MOD,參與運(yùn)算的數(shù)為整數(shù),結(jié)果也為整數(shù) 如:ADD AX,100*4 + 2 SUB CX,101 / 2,(3)、參數(shù),邏輯運(yùn)算符: NOT,AND,OR,XOR,SHR,SHL 例如: MOV AX,1 SHL 3 OR AL,3 AND 58Q,(3)、參數(shù),關(guān)系運(yùn)算符: EQ,NE,LT,LE

4、,GT,GE 例如: MOV AX,123 GT 3,(3)、參數(shù),注釋: 用于說明程序的作用,可有可無,如果有,以;號開頭,3.2常用偽指令,常用偽指令有一下幾類,符號定義偽指令,數(shù)據(jù)定義偽指令,標(biāo)號,析值/屬性操作符,段定義偽指令,3.2.1符號定義偽指令,1、等值語句 EQU 格式:變量名 EQU 表達(dá)式 作用:通知匯編器,EQU左邊和右邊是等同的, 使用時,用變量名替代表達(dá)式 示例: COUNT EQU 15 MOV AX,COUNT,3.2.1符號定義偽指令,1、等值語句 EQU 使用注意事項(xiàng): (1)EQU 所定義的符號,僅僅是用于替代右邊的字符,不占用存儲空間,也不產(chǎn)生目標(biāo)代碼

5、(2)符號必須先定義后使用 (3)同一源程序中,EQU所定義的符號不能重新定義,3.2.1符號定義偽指令,1、等號偽指令 格式:變量名 = 表達(dá)式 作用:與EQU類似,但表達(dá)式只能是數(shù)值表達(dá)式,且允許重復(fù)定義 示例: COUNT = 15 MOV AX,COUNT,3.2.2數(shù)據(jù)定義與變量偽指令,1、數(shù)據(jù)定義偽指令 格式: 變量名 DB 初值表達(dá)式 變量名 DW 初值表達(dá)式 變量名 DD 初值表達(dá)式 變量名 DQ 初值表達(dá)式 變量名 DT 初值表達(dá)式,3.2.2數(shù)據(jù)定義與變量偽指令,1、數(shù)據(jù)定義偽指令 DB:變量占1個字節(jié)存儲空間 DW:變量占1個字存儲空間 DD:變量占2個字存儲空間 DQ:

6、變量占4個字存儲空間 DT:變量占5個字存儲空間,3.2.2數(shù)據(jù)定義與變量偽指令,2、功能: 定義變量,并指導(dǎo)匯編器為變量分配指定的存儲空間,并初始化為變量定義語句中的初值表達(dá)式。 示例: B0 DB 2 B1 DB 3,5,?,9 B2 DW 10H,2 DUP(1234H,?) B3 DD 1,2 B4 DB 0,2 DUP(?,1,2 DUP(7),3.2.2數(shù)據(jù)定義與變量偽指令,3、注意事項(xiàng): (1)每個初值所占用的空間取決于偽指令 (2)如果不想初始化,可以用?號,表示分配空間,但初值不確定 (3)對于重復(fù)的初值,可以用DUP描述,3.2.2數(shù)據(jù)定義與變量偽指令,4、變量的訪問: 變

7、量名代表初值表達(dá)式列表所對應(yīng)的存儲單元的首地址,變量的訪問類似于數(shù)組,變量名為該數(shù)組的首地址。,3.2.2數(shù)據(jù)定義與變量偽指令,5、示例: DA2 DB 1,3,5 MOV AL,DA2 MOV AH,DA2 + 2 MOV BL,DA2 + 1,3.2.2數(shù)據(jù)定義與變量偽指令,6、變量的屬性: 變量定義后,具有以下3個屬性: (1)、段屬性:變量所在段的段基址 (2)、偏移屬性:該變量的段內(nèi)偏移量 (3)、類型屬性:該變量所占用的存儲單元,3.2.3標(biāo)號及其屬性,1、標(biāo)號的概念: 標(biāo)號是一條指令的符號地址,它常用作轉(zhuǎn)移指令或子程序調(diào)用指令的操作數(shù)。,3.2.3標(biāo)號及其屬性,2、標(biāo)號的屬性:

8、段屬性:標(biāo)號所在段的段基址 偏移屬性:標(biāo)號所指出的機(jī)器碼的段內(nèi)偏移量 類型屬性:該標(biāo)號的有效范圍,有NEAR類型和 FAR類型,3.2.3標(biāo)號及其屬性,3、標(biāo)號的定義: 在指令助記符前加上標(biāo)號,并用冒號:分隔,3.2.3標(biāo)號及其屬性,4、示例: MOV CX,20 AGAIN:ADD AX,AX DEC CX JNZ AGAIN,3.2.4析值/屬性操作符,1、析值操作符: 析值操作符也稱地址回送操作符,作用是把變量或標(biāo)號的地址取出 (1) 取偏移地址操作符OFFSET 格式 :OFFSET 變量或標(biāo)號 示例:MOV SI,OFFSET BUF (2) 取段基址操作符 SEG 格式:SEG 變

9、量或標(biāo)號 示例:MOV AX,SEG BUF,3.2.4析值/屬性操作符,2、屬性改變操作符: 格式: 類型 PTR 地址表達(dá)式 功能:將地址表達(dá)式所指的內(nèi)存單元臨時指定為PTR前面所給定的類型 允許的類型有:BYTE,WORD,DWORD,NEAR,F(xiàn)AR,3.2.4析值/屬性操作符,2、屬性改變操作符: 用法: (1)、說明存儲單元的類型 MOV BYTE PTR SI,5 (2)、改變存儲單元屬性 A_BYTE DB 1,2,3,4 MOV AX, WORD PTR A_BYTE (3)、建立FAR標(biāo)號 L_NEAR : MOV AX,0 L_FAR EQU FAR PTR L_NEAR

10、,3.2.5段定義偽指令,1、段定義偽指令: 格式: 段名 SEGMENT 定位類型 組合類型 類別 段名 ENDS,3.2.5段定義偽指令,1、段定義偽指令: 說明: (1)、段名的命名方法同符號的命名方法 (2)、關(guān)鍵字SEGMENT開始一個段的定義,ENDS結(jié)束 一個段的定義 (3)、SEGMENT與ENDS之間的內(nèi)容為一個邏輯段 (4)、段定義的參數(shù)可以省略,一般情況都省略,3.2.5段定義偽指令,1、段定義偽指令: 示例: DATA SEGMENT A DB, B DB ABCD DATA ENDS,3.2.5段定義偽指令,2、地址計(jì)數(shù)器: 每個邏輯段都有一個地址計(jì)數(shù)器,用于指出該段

11、已經(jīng)使用的存儲單元數(shù),地址計(jì)數(shù)器名字為:$,在程序中可以使用$讀取當(dāng)前地址計(jì)數(shù)器的值 3、地址計(jì)數(shù)器的修改偽指令ORG: 用于調(diào)整地址計(jì)數(shù)器的值。,3.2.5段定義偽指令,示例: WW1 SEGMENT A1 DB 3 A2 DW 6,7 COUNT EQU $ - A2 ORG $ + 10 A3 DD 8 ORG 200H A4 DQ ? WW1 ENDS,3.3、程序的段結(jié)構(gòu),一個簡單的匯編語言源程序 DATA SEGMENT VAR DB 12H DATA ENDS STACK SEGMENT STACK DB 300H DUP(?) STACK ENDS CODE SEGMENT A

12、SSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX INC VAR MOV AH,4CH,INT 21H CODE ENDS END STRAT,3.3.1、源程序的分段結(jié)構(gòu),段是程序的基本構(gòu)成單位,8086的匯編程序由若干段組成,一般的小程序由數(shù)據(jù)段、堆棧段、代碼段3個段構(gòu)成。 一個程序必須有代碼段,其余段根據(jù)需要定義。,3.3.2、段假設(shè)偽指令,格式:ASSUME 段寄存器:段名,段寄存器:段名, 功能:設(shè)定段和段寄存器的聯(lián)系,設(shè)定好以后訪問該段存儲單元時可以省略段寄存器。 說明:可以多次使用ASSUME偽指令,一條ASSUME偽指令可以設(shè)定14段寄存器,3.3.3、段寄存器的裝填,ASSUME指令僅僅告訴匯編器段寄存器與段之間的對應(yīng)關(guān)系,但并沒有初始化這些段寄存器,因此必須對段寄存器裝入對應(yīng)的段基址,3.3.3、段寄存器的裝填,(1)、DS和ES的裝填 MOV AX,DATA MOV DS,AX,3.3.3、段寄存器的裝填,(1)、SS的裝填 第一種方法:定義堆棧段時,指出組合類型為STACK,SS和SP的初始化由操作系統(tǒng)自動完成 第二種方法:雷同DS,ES的初始化 MOV AX,STAC

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論