版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 編譯.ASM文件 匯 編.OBJ文件 調(diào)匯編程序如:TASM.EXE 鏈接 鏈 接.OBJ文件 庫文件可執(zhí)行文件.EXE .COM調(diào)鏈接程序如:TLINK.EXE第1頁/共32頁2.源程序中的語句類型 一個(gè)完整的源程序應(yīng)包含2類語句: 符號(hào)指令、匯編偽指令(偽語句) 標(biāo)號(hào) : 符號(hào)指令符號(hào)指令 變量名 偽指令偽指令標(biāo)號(hào)名、變量名、段名、過程名命名規(guī)則:以字母開頭,后跟字母、數(shù)字長度31個(gè)字符H符號(hào)指令:經(jīng)匯編后,其目標(biāo)指令通知CPU進(jìn)行什么操作H偽指令:為匯編程序,鏈接程序提供匯編鏈接信息此處無冒號(hào)第2頁/共32頁二.常用的偽指令1.字節(jié)字義偽指令 變量名 DB 一串用逗號(hào)間隔的單字節(jié)數(shù) 說
2、明:v DB Define Byte 的縮寫,“定義字節(jié)”。v ? 隨機(jī)數(shù), Dup Duplicate(重復(fù))v 3 Dup(?) 代表3個(gè)用逗號(hào)間隔的隨機(jī)數(shù)v 5 Dup(A)代表5個(gè)用逗號(hào)間隔的A的ASC碼如: N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLO N2 DB ?,?,? ;與下條等價(jià) N2 DB 3 DUP(?)第3頁/共32頁功能:H通知匯編程序把DB后跟的單字 節(jié)數(shù),依次存入從變量(如N1) 開始的單元,負(fù)數(shù)用補(bǔ)碼表示, 單引號(hào)中的字符翻譯成ASC碼。 如: N1 DB 12H,64,-1,3*3 DB 010
3、10101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;與下條等價(jià)N2 DB 3 DUP(?)匯編后12 H40 HFF H09 H55 H41 H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:第4頁/共32頁如: N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;與下條等價(jià)N2 DB 3 DUP(?)功能:H用DB定義的這些內(nèi)存單元(N1 N1+12, N2 N2+2)的屬性均為“字節(jié)型”。匯編后12 H40 HFF H09 H55 H41
4、H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:N1+12:N2+2:第5頁/共32頁2.字定義偽指令 變量名 DW 一串用逗號(hào)間隔的雙字節(jié)數(shù)如:WNUM DW 1234H,12, AB, C DW ?,? DW 2 DUP(?)說明: H DW Define Word “字定義” H ? 雙字節(jié)隨機(jī)數(shù) H 單引號(hào)中只能是一個(gè)或兩個(gè)字符 功能: H通知匯編程序把DW后跟的雙字節(jié)數(shù), 依次存入從變量名開始的單元,每一個(gè)數(shù) 占2個(gè)字節(jié),低位字節(jié)低址單元, 高位字節(jié)相鄰的高址單元。功能:H用DW定義的這些單元的屬性都是“字型”, 如上例, WNUM WNUM
5、+11這12個(gè)單元的屬性都是“字型”。 匯編后WNUM:34 H 12 H 0CH0 042 H41 H43 H0 0X X X X X XX XWNUM+11:第6頁/共32頁功能:H通知匯編程序把DD后跟的數(shù)存入變量名開始的單元, 每一個(gè)數(shù)占4個(gè)字節(jié),低位字節(jié)低址單元,高位字節(jié)高址單元。 H用DD定義的這些單元的屬性都是“雙字型”,上例DNUM DNUM+3單元,這些單元都是雙字型單元3. 雙字定義偽指令 變量名 DD 一串用逗號(hào)間隔的4字節(jié)數(shù) 如: DNUM DD 12345678H 匯編后DNUM: 34H78H 56 H 12H第7頁/共32頁5. 等值偽指令 符號(hào)常數(shù) EQU 表達(dá)
6、式 如: NUM EQU 33 功能: 定義符號(hào)常數(shù)NUM的值為33 6. 等號(hào)偽指令 符號(hào)常數(shù)=表達(dá)式 如: NUM = 33 功能:定義符號(hào)常數(shù)NUM的值為33 4. 多字節(jié)定義偽指令 變量名 DF 一串用逗號(hào)間隔的6字節(jié)數(shù) 變量名 DQ 一串用逗號(hào)間隔的8字節(jié)數(shù) 變量名 DT 一串用逗號(hào)間隔的10字節(jié)數(shù)功能: 通知匯編程序?yàn)镈F/DQ/DT后跟的每一個(gè)數(shù),分配 6/8/10個(gè)單元。 第8頁/共32頁三. 常用運(yùn)算符 1. 算術(shù)運(yùn)算符: +, -, *, / 2. 關(guān)系運(yùn)算符: EQ(等于), NE(不等于), GT(大于),LT(小于), GE(大于或等于)例如: NUM EQU 33
7、MOV AL, NUM;該指令與下條指令等價(jià) MOV AL , 33區(qū)別:H用EQU定義的符號(hào)常數(shù),其值在后繼語句中不能更改;用“=”定義的符號(hào)常數(shù),其值在后繼語句中可以重新定義 第9頁/共32頁 應(yīng)用: H$運(yùn)算符緊跟在 DB、DW、DD偽指令之后,統(tǒng)計(jì)字符串的長度。 例如數(shù)據(jù)段有: BUF DB THE QUICK BROWN FOX ;字符串長度19 LLL EQU $-BUF 匯編后 符號(hào)常數(shù)LLL的值即為193. $運(yùn)算符 H匯編程序?qū)υ闯绦蚴侵鹦袇R編的,$運(yùn)算符可以返回 匯編計(jì)數(shù)器的當(dāng)前值。第10頁/共32頁如: MOV AX, SEG DATA MOV DS, AX設(shè)“DATA”
8、是數(shù)據(jù)段的段名,上述兩條指令算出數(shù)據(jù)段的段基址,先賦給AX,再轉(zhuǎn)賦DS。 5.OFFSET運(yùn)算符 H格式:OFFSET 變量名或標(biāo)號(hào)名 H功能:算出某個(gè)變量或標(biāo)號(hào)名所在單元的偏移地址(有效地址)。4. SEG運(yùn)算符 H格式: SEG 段名或變量名或標(biāo)號(hào)名 H功能: 計(jì)算某一邏輯段的段基址 第11頁/共32頁設(shè)以“DATA”為段名的數(shù)據(jù)段中,存在 BUF DB 12 ,34 ,56代碼段: MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET BUF MOV AL,BX ;AL=12以下兩條指令等價(jià)的: MOV BX,OFFSET BUF LEA BX,BUF第12頁/
9、共32頁6. PTR運(yùn)算符 格式: 類型說明符 PTR 地址表達(dá)式 功能: 在本條指令中臨時(shí)修改地址表達(dá)式的屬性 內(nèi)存單元5種尋址方式子程序的名稱 BYTE(字節(jié)) WORD(字) DWORD(雙字) FAR(遠(yuǎn)) NEAR(近)第13頁/共32頁舉例:設(shè)數(shù)據(jù)段有: BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 代碼段: MOV AX,BUF MOV AL,BUF MOV AX,WORD PTR BUF ; AH=22, AL=11 MOV BUF,12H MOV B
10、UF,1234H MOV WORD PTR BUF,1234H ; BUF單元為34H,BUF+1單元為12H 匯編后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:第14頁/共32頁舉例:設(shè)數(shù)據(jù)段有: BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 MOV BX,OFFSET XX MOV SI,OFFSET YY MOV DI,OFFSET ZZ MOV BX,12H MOV BYTE PTR BX,12H ;XX單元為12H
11、 MOV WORD PTR BX,12H ;XX單元為12H, XX+1單元為0 匯編后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:第15頁/共32頁舉例:設(shè)數(shù)據(jù)段有: BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 MOV SI,1234H MOV WORD PTR SI,1234H MOV AX,BX MOV AL,SI MOV DI,AX INC BX INC SI INC DI INC BYTE PTR BX ;XX單
12、元=0 INC WORD PTR SI ;YY,YY+1單元=0 INC DWORD PTR DI ;ZZ ZZ+2單元=0,ZZ+3=1 匯編后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:第16頁/共32頁7.方括號(hào)用方括號(hào)括起來的地址表達(dá)式是訪問內(nèi)存操作數(shù)常用的尋址方式,方括號(hào)的另一用途是標(biāo)注數(shù)組元素的下標(biāo),下標(biāo)從0開始。 數(shù)組下標(biāo)變量名就是數(shù)組名代碼段: MOV AL,BUF3;AL=44 BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FF
13、H,0FFH,0 如上例數(shù)據(jù)段:第17頁/共32頁一 . 源程序的結(jié)構(gòu) 一個(gè)完整的源程序,在結(jié)構(gòu)上必須: H用段定義語句定義每一個(gè)邏輯段 H用過程定義語句定義每一個(gè)過程 H用ASSUME語句說明段約定 H用匯編結(jié)束語句說明源程序結(jié)束 H程序結(jié)束應(yīng)能安全返回DOS把控制權(quán)還給操 作系統(tǒng)4.2 宏匯編的基本語句 第18頁/共32頁二. 基本語句 1. 方式選擇偽語句 格式之一: 486 H功能:通知匯編程序?qū)⒁韵轮噶顓R編成486的 機(jī)器指令。 H 應(yīng)用:源程序第一條指令。2. 段定義語句 段名 SEGMENT 定位參數(shù) 鏈接參數(shù) 分類名 段長度 段體 段名 ENDS第19頁/共32頁 說明: 段名
14、以字母開頭,命名規(guī)則同變量名、標(biāo)號(hào)名, 段名不說明段體的性質(zhì)。 SEGMENT / ENDS是邏輯段的定界語句。 定位參數(shù)通知鏈接程序:邏輯段的目標(biāo)代碼在存 儲(chǔ)器中如何存儲(chǔ),有4種描述: H BYTE 可以從任意地址存放 H WORD 從偶地址開始存放 H PARA(或缺?。?從能被16整除的地址開始存放 H PAGE 從能被256整除的地址開始存放第20頁/共32頁鏈接參數(shù)有6種描述: H PUBLIC 通知鏈接程序,把不同模塊中,具有 PUBLIC屬性的同名段,在滿足定位參數(shù)的要求 下,按指定的鏈接順序鏈接成一個(gè)邏輯段。 H MEMORY 與PBULIC類似。 H COMMON 通知鏈接程
15、序把不同模塊中都具有 COMMON屬性的同名段,根據(jù)指定的鏈接順序, 按照“覆蓋” 方式,組合成一個(gè)邏輯段。 組合之后的邏輯段體積等于鏈接之前具有COMMON 屬性的同名段中的最大的段體。 H STACK 具有STACK屬性的段是堆棧段,鏈接程 序?qū)淹褩6谓M合成一個(gè)大的堆棧段。 第21頁/共32頁H AT表達(dá)式 如: DATA SEGMENT AT 40H ORG 17H KEYFLAG DB ? DATA ENDS 表明邏輯段段基址為40H,KEYFLAG的偏移地址 為17H。 注意: 因?yàn)槌绦蛟趦?nèi)存中的位置是由操作系統(tǒng)分配的,用戶程序不能指定邏輯段的段基址。 嚴(yán)格地講,“AT表達(dá)式”
16、這一屬性是供操作系統(tǒng)程序使用的。H 缺省 表明該段是獨(dú)立的,鏈接程序?qū)τ诰哂腥笔℃溄訁?shù)的同名段,不進(jìn)行組合。 第22頁/共32頁H 不同模塊同名段鏈接參數(shù)的功能示意圖A段 (PUBLIC) 段體A1主模塊子模塊C PSPUBLIC COMMONSTACK C段 (STACK) 段體C1A段 (PUBLIC) 段體A2C段 (STACK) 段體C2B段 (COMMON)段體B1B段 (COMMON)段體B2 段體A1 段體A2段體B2段體C1段體C2第23頁/共32頁 分類名 分類名的名字由程序員命名,通常數(shù)據(jù)段分類名為 DATA,代碼段分類名為CODE,通知鏈接程序, 把分類名相同的同名邏輯
17、段放在鄰近的內(nèi)存區(qū)。 段長度: USE16 表示該段體積最大64K,單元偏移地址為16 位,采用16位尋址。 USE32 表示該段體積最大4G,單元偏移地址為32 位,采用32位尋址。 在實(shí)模式下運(yùn)行, 應(yīng)選用USE16。第24頁/共32頁 邏輯段有4類屬性參數(shù),每一參數(shù)又有多種選擇,怎樣使用? H 在實(shí)模式環(huán)境下,各邏輯段應(yīng)采用16位尋址,所以段長度選用USE16。 H 堆棧段選用 STACK 為鏈接參數(shù),STACK為分類名,由于選用 STACK 為鏈接參數(shù),匯編后DOS將自動(dòng)給SS:SP賦值。 H 只有在模塊化程序中,才有必要考慮鏈接參數(shù)的選擇。 在單一模塊程序中,定位參數(shù),鏈接參數(shù),分類
18、名均 選用“缺省”表示即可。段參數(shù)應(yīng)用小結(jié)第25頁/共32頁3. 段約定語句 ASSUME 段寄存器:段名,段寄存器:段名 如: ASSUME CS:CODE, DS:DATA 功能: 通知匯編程序 以CODE為段名的是代碼段,對(duì)CODE段尋址:CS* 24 以DATA為段名的是數(shù)據(jù)段,對(duì)DATA段尋址:DS* 24 說明: H ASSUME語句通常是放在代碼段的第一條語句。 H ASSUME語句不能完成對(duì)段寄存器的賦值(沒有賦 值功能)。 第26頁/共32頁 對(duì)段寄存器賦值有2種方法: H 用SEG運(yùn)算符 如: MOV AX, SEG DATA MOV DS, AX H 把段名賦給段寄存器 如: MOV AX
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版軟件系統(tǒng)合同
- 2025年度合伙企業(yè)持股合同糾紛調(diào)解與仲裁規(guī)則3篇
- 2024物流金融服務(wù)框架協(xié)議
- 2025年度寵物活體產(chǎn)業(yè)鏈上下游資源整合合同3篇
- 2025年中國豪華客車行業(yè)市場(chǎng)調(diào)查研究及投資前景預(yù)測(cè)報(bào)告
- 2025個(gè)人虛擬貨幣購買分期還款協(xié)議3篇
- 2025年度個(gè)人汽車消費(fèi)貸款標(biāo)準(zhǔn)合同范本4篇
- 2025年度個(gè)人公司代持股解除協(xié)議書4篇
- 2025年湖北工業(yè)建筑集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2025年安徽港口集團(tuán)五河有限公司招聘筆試參考題庫含答案解析
- 《色彩基礎(chǔ)》課程標(biāo)準(zhǔn)
- 人力資源 -人效評(píng)估指導(dǎo)手冊(cè)
- 大疆80分鐘在線測(cè)評(píng)題
- 2024屆廣東省廣州市高三上學(xué)期調(diào)研測(cè)試英語試題及答案
- 中煤平朔集團(tuán)有限公司招聘筆試題庫2024
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 不付租金解除合同通知書
- 區(qū)域合作伙伴合作協(xié)議書范本
- 中學(xué)數(shù)學(xué)教學(xué)設(shè)計(jì)全套教學(xué)課件
- 環(huán)衛(wèi)公司年終工作總結(jié)
- 2023年德宏隴川縣人民法院招聘聘用制書記員考試真題及答案
評(píng)論
0/150
提交評(píng)論