版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、本章學習要點: (1)常見的偽指令及它們的用法 (2)匯編語言的結構 一、匯編語句的種類和格式 1. 語句的種類 匯編語言有多種類型的語句,指令語句、偽指令語句、宏指令語句。 匯編語言在對源程序進行匯編時,把指令語句翻譯成機器指令,也就是說指令語句有著與之對應的機器指令。 偽指令語句沒有與其對應的機器指令,只是指示匯編程序如何對源程序進行匯編,包括符號的定義、變量的定義、段的定義等。通俗點講,它實際上是屬于一種說明語句。 2.語句的格式 指令語句格式: (標號)指令助記符(操作數(shù)(,操作數(shù))(;注釋) 偽指令語句的格式如下: (名字)偽指令定義符(參數(shù),參數(shù))(;注釋),偽指令定義符:規(guī)定了偽
2、指令的功能 參數(shù):說明偽指令操作的對象,如常數(shù)(數(shù)值表達式)等 名稱:給所定義的內(nèi)容起的名稱。 在匯編語言中,名字和標號很容易區(qū)分,名字后面沒有冒號,而標號后一定用冒號。 標號和名字最多由31個字母、數(shù)字及規(guī)定的特殊字符組成,并且不能以數(shù)字來開頭。 標號和名字不能是匯編語言的保留字,如不能是“MOV”。 匯編語言不區(qū)分保留字中字母的大小寫。如“MOV AX ,03H”等同于“mov ax , 03h” 偽指令有多種,常見的如: (1)段定義偽操作 (2)數(shù)值數(shù)據(jù)定義及存儲器分配 (3)符號數(shù)據(jù)定義 (4)程序開始和結束偽操作 (5)表達式賦值偽操作 此外還有基數(shù)控制偽操作、對準偽操作等。,看看
3、下列代碼有哪些偽指令:,二、常見的偽指令/偽操作 (1)段定義語句 為了與存儲器的分段結構相對應,匯編語言的源程序也是由若干個段組成。 1. 段開始和段結束語句 段定義的一般格式如下: 段名SEGMENT 定位類型 組合類型 類型 段名ENDS 例:一個簡單的段如下所示: DSEGSEGMENT MESS DB HELLO , 0DH , 0AH , $ DSEGENDS,2. 段使用設定語句 匯編程序根據(jù)段開始語句和段結束語句判斷出源程序的段劃分,為了有效地產(chǎn)生目標代碼,匯編程序還要了解各程序段與段寄存器間的對應關系。這種對應關系由段使用設定語句說明。 ASSUME 段寄存器名:段名,段寄存
4、器名:段名 段寄存器名可以是CS,DS,SS和ES。 段名就是段開始和段結束語句中規(guī)定的段名。 例如:CS寄存器對應CSEG段,DS寄存器對應DSEG段。 ASSUME CS : CSEG , DS : DSEG ASSUME偽指令中段名也可以是一個特別的關鍵字NOTHING,它表示某個段寄存器不與任何段有對應關系。,DSEG1 SEGMENT VARW DW 12 DSEG1 ENDS DSEG2 SEGMENT XXX DW 0 DSEG2 ENDS CSEG SEGMENT ASSUME CS:CSEG , DS: DSG1 , ES : DSG2 MOV AX , DSEG1 MOV
5、DS , AX MOV AX , DSEG2 MOV ES , AX ASSUME DS: DSG2 , ES :NOTHING MOV AX , DSEG2 MOV DS , AX DSEG ENDS,(2)關于數(shù)值數(shù)據(jù)定義語句及存儲器分配 通過數(shù)值數(shù)據(jù)定義語句可以為數(shù)據(jù)項分配存儲單元,并根據(jù)需要設置其初值。 還可以用符號代表數(shù)據(jù)項,此時符號就與分配的存儲單元相聯(lián)系。代表數(shù)據(jù)項的符號本省稱為變量名,與之相對應的存儲單元用于存放變量。 1. 數(shù)據(jù)定義的格式 數(shù)據(jù)定義語句是最常用的偽指令語句。一般格式如下: 變量名 數(shù)據(jù)定義符 表達式,表達式,表達式;注釋 例如:VARB DB3 WARW DW
6、 -1234 BUFF DB 100 , 3+4 , 5*6,1)定義字節(jié)數(shù)據(jù)項(DB) 每一個字節(jié)數(shù)據(jù)項只占用一個字節(jié)存儲單元 例:COUNT DB 100 DB 0DH ,0AH , $ TABLEDB 0 , 1 , 4 , 9 , 16 2)定義字數(shù)據(jù)項(DW) 每一個字數(shù)據(jù)項只占用兩個字節(jié)存儲單元 例:FLAG DW 2FCDH, 100,-1 VECTDW 0 DW 100H 3)定義雙字數(shù)據(jù)項(DD) 每一個雙字數(shù)據(jù)項只占用四個字節(jié)存儲單元 例:VECTOR DD 4 FARPTRDD 12345678H, 0 此外,還可以定義8字節(jié)的數(shù)據(jù)項(DQ),10字節(jié)的數(shù)據(jù)項(DT),4
7、)定義沒有初值的數(shù)據(jù)項 如果數(shù)據(jù)定義語句中的表達式只是一個問號(?),則表示不預置對應變量的初值,而僅僅是給變量分配存儲單元。 例:INBUFF DB 5 , ? , ? , ? , 8 , ? VARWDW ? OLDVDD ? 5)定義字符串 定義字節(jié)數(shù)據(jù)的偽指令DB也可以用于方便地定義字符串。 字符串要用引號括起來,單引號和雙引號皆可,只要配對。 例如:MESS DB HELLO! 上述語句與如下語句定義內(nèi)容相同: MESS DB H , E , L , L , O , !,2. 重復操作符DUP 有時需要定義數(shù)組,有時還需要定于數(shù)據(jù)緩沖區(qū)。 例如: BUFFER DB 0 , 0 ,
8、0 , 0 , 0 , 0 , 0 , 0 以上操作太不方便,為此,匯編語言停供了在數(shù)據(jù)定義語句中使用的重復操作符DUP。 比如,上述定義語句與如下定義語句起相同的作用: BUFFER DB 8 DUP(0) 重復操作符DUP的一般格式如下: count DUP (表達式, 表達式, ) 例如: BUFFER1 DB 5 , 0 , 5 DUP(?) BUFFER2 DB 100 DUP(0 , 2 DUP(1 , 2) , 0 , 3) BUFFER3 DB 256 DUP(ABCDE),(3)關于符號數(shù)據(jù)的定義語句 1. 等價語句EQU 格式 EQU 表達式 例:COUNT EQU 100
9、;符號COUNT就代表常數(shù)100 BUFF_LEN EQU 4*COUNT;COUNT是已定義的符號常數(shù) HELLO EQU “How are you!” 例:MOVE EQU MOV COUNT EQU CX 在安排上述語句后,就可以用MOVE代替指令助記符MOV,用COUNT代替寄存器CX。當然,MOV和CX仍可以照樣使用。 當遇到:MOVE AX , CX;MOV AX , CX MOVE COUNT , 100;MOV CX , 100 需要注意:第1,等價語句不另外給符號分配存儲單元; 第2,等價語句定義的符號不能與其它符號相同,也不能被重新定義。,2. 等號語句(=) 匯編語言專門
10、提供了符號語句來定義符號常數(shù),即用符號表示一個常數(shù)。等號語句的一般格式如下: 符號名 = 數(shù)值表達式 例如:XX = 10 用符號定義語句可被重新定義。 例如: ABCD = 1 ABCD = 100,3. 定義符號名語句 格式:符號名 LABEL 類型 其中類型可以是BYTE、WORD、DWORD、NEAR、FAR,其中前3項對應于數(shù)據(jù)項,后2項對應于可執(zhí)行代碼。 功能:指定為某一類型的符號,且該符號的段屬性和偏移屬性與下一個緊接著的存儲單元的段屬性和偏移屬性相同。 例如: BUFFER LABEL WORD BUFF DB 100 DUP(0) 定義了一個符號BUFFER,其類型是WORD
11、。因為段屬性與偏移屬性和BUFF相同,所以內(nèi)容為0000H。 又如: QUIT LABEL FAR EXIT:MOV AH , 4CH “MOV AH , 4CH”有了QUIT和EXIT兩個標號。,(4)程序開始與結束偽操作 END 偽操作 格式: END 標號 其中標號表示程序開始執(zhí)行的起始地址。 注意: 程序是從END所指的“標號”開始執(zhí)行,遇到END指令后結束。 如果END沒有指定標號,則從相應代碼段從開始運行。,注意以下2個程序的區(qū)別:,(5)對準偽操作 1. EVEN 格式:EVEN 功能:使緊隨其后的內(nèi)容從偶地址開始存儲。 DSEG SEGMENT EVEN WORD_ARRAY
12、DW 100 DUP(?) DSEG ENDS,2. ORG 格式: ORG 常數(shù)表達式 功能:使緊隨其后的內(nèi)容從表達式所指定的地址開始存儲。 DSEG SEGMENT ORG 10 VECT1 DW 47A5H ORG 20 VECT2 DW 1234H DSEG ENDS,可以使用符號$來代表當前正在匯編的指令的地址。 例:已知ARRAY的偏移量為0074H,試寫出下列語句所分配空間的內(nèi)容 ARRAY DW 1 , 2 , $+4 , 3, 4, $ + 4,三. 關于表達式的偽操作 (1)數(shù)值表達式 1.常數(shù) 常數(shù)有多種類型和表示方式,如: 1)十進制常數(shù),以字母D結束為標識。 例:MO
13、V AX , 178D 2)十六進制常數(shù),以字母H結束為標識 例:MOV AL , 0AH 注意,在程序編寫時,十六進制數(shù)必須以數(shù)字開頭。 例:要使(AL)為ABH,程序必須使用下列寫法: MOV AL , 0ABH 3)二進制常數(shù),以字母B結束為標識 例:OR AL , 11001010B TEST BL , 00101000B 4)八進制常數(shù),以字母Q結束為標識,如127Q。,5)字符串常數(shù)(串常數(shù)) 串常數(shù)的值是包括在引號中的字符的ASCII代碼值。 例:A的ASCII碼值是41H CMP AL , A 相當于 CMP AL , 41H 6)偽指令RADIX 設置其后數(shù)值的缺省進制 格式
14、:RADIX exp exp的值必須是區(qū)間2,16內(nèi)的一個整數(shù)。 例如: RADIX 8 MOV AL , 10 RADIX 16 MOV AH , 10 但是,為了避免混淆和不必要的誤會,我們提倡慎用RADIX.,2. 算術運算符 算術運算府包括正(+)、負(-),加(+)、減(-)、乘(*)、除(/)和模(MOD),這些算術運算符的意義與高級語言中同樣運算符的意義相似。 ADD AX , 100 * 4 + 2 ; 100 * 4 + 2就構成了一個算術表達式 SUB CX , 100H / 2 MOV AL , -3 3.關系運算符 關系運算符包括相等(EQ)、不等(NE)、小于(LT)
15、、大于(GT)、小于或等于(LE)、大于或等于(GE)。 若關系不成立,則結果為0(一個數(shù)值); 若關系成立,則結果為FFFFH(一個數(shù)值)。 例如, MOV AX , 1234H LT 1024H 等同于 MOV AX , 0H MOV BX , 1234H GT 1024H 等同于 MOV BX , 0FFFFH,4. 邏輯運算符 邏輯運算符包括按位操作的“與”(AND)、“或” (OR) 、“非” (NOT) 、“異或” (XOR) 、“左移”(SHL)和“右移” (SHR)。 邏輯運算的結果也是數(shù)值。 例: MOV BX , (VAL LT 5) AND 20) OR (VAL GE
16、5) AND 30) 當VAL 5時,匯編的結果應該是: MOV BX , 20 否則,匯編結果應該是: MOV BX , 30 注意:邏輯運算符和指令助記符的區(qū)別,表達式中的邏輯運算符屬于偽指令,在匯編時起說明作用;而指令助記符則有機器指令與之對應。,5. 在數(shù)值表達式中使用操作符 (1)HIGH、LOW 功能:取數(shù)值表達式的值的高8位(或低8位)。 例:MOV AL , LOW 3080H 將匯編成:MOV AL , 80H MOV AH , HIGH 2050H 將匯編成:MOV AH , 20H MOV AH , HIGH(1234H + 5) 將匯編成:MOV , 12H MOV A
17、H , HIGH 1234H + 5 將匯編成:MOV AH , 17H 注意:最后1題為什么是先取1234H的高8位再加5,而不是先加5再取高8位?,6. 優(yōu)先級 匯編語言中各種運算符和操作符的優(yōu)先級按高到低排列如下: (1)圓括號,尖括號,方括號,圓點符,LENGTH,SIZE,WIDTH , MASK。 (2)PTR, OFFSET,SEG,TYPE, THIS,冒號。 (3)* , / , MOD, SHL, SHR (4)HIGH, LOW (5)+ , - (6)EQ,NE,LT,LE,GT,GE (7)NOT (8)AND (9)OR , XOR (10)SHORT,7. 其它操
18、作符 SEG、OFFSET、TYPE、LENGTH、SIZE、PTR 1)SEG 變量名或標號 功能:取變量或標號所在段的段值 2)OFFSET 變量名或標號 功能:取變量或標號在段中的偏移 例:定義變量如下,假設VARW的段內(nèi)偏移為100H。 VARW DW 1234H, 5678H VARB DB 3,4 MOV AX, SEG VARW MOV DS, AX MOV BX, OFFSET VARW; 100H 送BX MOV DI, OFFSET VARW 2;102H送DI, ;OFFSET優(yōu)先級高于+ MOV SI, OFFSET VARB; 104H送SI,3)TYPE 變量名或標
19、號 功能:返回變量或標號的類型。 定義常見類型及其對應數(shù)值如下: 字節(jié)(BYTE)變量:1 字(WORD)變量:2 雙字(DWORD)變量:4 近(NEAR)標號:-1 遠(FAR)標號:-2 可見:變量的類型值是對應類型變量所占用的字節(jié)數(shù),而標號的類型值卻沒有實際的物理意義。 例:假設變量VARW的定義為“VARW DW 1234H, 5678H” ADD SI, TYPE VARW 將匯編成:ADD SI , 2,4)LENGTH 變量名 功能:返回利用DUP定義的數(shù)組中元素的個數(shù)。 如果變量定義語句中沒有使用DUP,則總返回1。 如果嵌套使用了DUP,則只返回最外層的重復數(shù)。 例:定義變量如下 VARW DW 1234H, 5678H VARB DB 3,4 VARD DD 5 DUP(?) 則 MOV CX, LENGTH VARW;1送CX MOV CX, LENGTH VARB;1送CX MOV CX, LENGTH VARD;5送CX,5)SIZE 變量名 功能:返回利用DUP定義的數(shù)組占用字節(jié)的個數(shù)。 可按下式計算: SIZE 變量 = (LEGNTH 變量)* (TYPE 變量) 例:定義變量如下 VARW DW 1234H, 5678H VARB DB 3,4 VARD DD 5 DUP(?) 則 MOV CX, SIZE VARW;2送CX MOV CX,
溫馨提示
- 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年度建筑材料加工生產(chǎn)合同范本4篇
- 專業(yè)出國留學輔導協(xié)議樣本(2024)版B版
- 2025年度醫(yī)療器械緊急運輸服務協(xié)議3篇
- 2025年度數(shù)據(jù)中心場地租賃合作協(xié)議4篇
- 2025年度食品試用及消費者滿意度調(diào)查合同4篇
- 2025年度綠色建筑設計與施工一體化服務合同4篇
- 2025年度市政基礎設施改造鏟車租賃協(xié)議書4篇
- 二零二四全新建筑工程施工聯(lián)營協(xié)議書下載3篇
- 2024重慶離婚協(xié)議書標準范文
- 二婚再婚2024年度財產(chǎn)共有協(xié)議
- 2024年黑河嫩江市招聘社區(qū)工作者考試真題
- 第22單元(二次函數(shù))-單元測試卷(2)-2024-2025學年數(shù)學人教版九年級上冊(含答案解析)
- 藍色3D風工作總結匯報模板
- 安全常識課件
- 河北省石家莊市2023-2024學年高一上學期期末聯(lián)考化學試題(含答案)
- 2024年江蘇省導游服務技能大賽理論考試題庫(含答案)
- 2024年中考英語閱讀理解表格型解題技巧講解(含練習題及答案)
- 新版中國食物成分表
- 浙江省溫州市溫州中學2025屆數(shù)學高二上期末綜合測試試題含解析
- 2024年山東省青島市中考生物試題(含答案)
- 保安公司市場拓展方案-保安拓展工作方案
評論
0/150
提交評論