2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語(yǔ)言程序設(shè)計(jì),第4章 匯編語(yǔ)言程序格式,Assembly Language Programming,2,? 匯編程序功能 ? 偽操作 ? 匯編語(yǔ)言程序格式 ? 匯編語(yǔ)言程序的上機(jī)過(guò)程,第4章 匯編語(yǔ)言程序格式,3,4.1 匯編程序功能,4.1.1. 程序運(yùn)行步驟及生成的文件,MASMPlus,MASM.EXE,LINK.EXE,4,4.2 基本語(yǔ)法,和其他計(jì)算機(jī)語(yǔ)言一樣,80X86匯編語(yǔ)言的基本語(yǔ)法主要包括:

2、 1. 詞法(字符集、標(biāo)識(shí)符、保留字) 2. 句法(指令語(yǔ)句、偽指令語(yǔ)句) 3. 程序結(jié)構(gòu)的若干規(guī)定。,5,4.2.1 字符集 匯編語(yǔ)言的基本元素是字符,字符按一定語(yǔ)法規(guī)則的有序組合就是語(yǔ)句。 80X86 匯編語(yǔ)言允許使用的字符是: 英文字母: A~Z 和 a~z 數(shù)字字符: 0~9 算術(shù)運(yùn)算符:+ - * / 關(guān)系運(yùn)算符:< > = 分隔符:

3、, ; : ( ) [ ] ‘ SPACE TAB 控制符: CR,LF,F(xiàn)F 其它字符: $ & _ ? · @ % !,基本語(yǔ)法,6,4.2.2 標(biāo)識(shí)符,標(biāo)識(shí)符用來(lái)對(duì)程序中的常量、變量、記錄、結(jié)構(gòu)、段、過(guò)程、模塊等進(jìn)行命名。應(yīng)符合如下規(guī)定: 標(biāo)識(shí)符第一個(gè)字符必須是字母、?、_ 或 @ 從第二個(gè)字

4、符開始可以是字母、數(shù)字、?、_ 或 @ 一個(gè)標(biāo)識(shí)符的長(zhǎng)度可以由131個(gè)字符組成。如: _sum x @block ?tablename 等均是合法的變量名。,基本語(yǔ)法,7,4.2.3 保留字80X86中的寄存器名、指令助記符、偽指令助記符、表達(dá)式運(yùn)算符以及屬性操作符等都是系統(tǒng)專用的保留字,不能做標(biāo)識(shí)符。如:AX、BX、ADD、DB、DW、DD、+、-等,都是保留字。,8,⑴ 80X86匯編語(yǔ)言有兩

5、類語(yǔ)句 指令性語(yǔ)句 匯編指令,經(jīng)匯編后產(chǎn)生一一 對(duì)應(yīng)的機(jī)器指令代碼,在程序運(yùn)行時(shí)使機(jī)器產(chǎn)生動(dòng)作。 【標(biāo)號(hào):】 指令助記符 【操作數(shù)】【;注釋】 例: GOON: ADD AX,1 ;AX加1 偽指令語(yǔ)句 對(duì)源程序匯編時(shí)由匯編程序處理。 【名字】 偽操作命令 【操作數(shù)】【;注釋】 例: X DB 100⑵ MASM對(duì)語(yǔ)句格式的要求: 大小寫無(wú)關(guān)。 每條語(yǔ)句必須占

6、1行,但可以使用續(xù)行符“\”。 為了提高可讀性,應(yīng)該使各個(gè)域?qū)R。,4.2.4 語(yǔ)句,9,4.2.5 程序結(jié)構(gòu) 80X86匯編語(yǔ)言程序,.386data_seg1 segment……data_seg1 endsdata_seg2 segment……data_seg2 endscode_seg segmentassume cs:code_seg, ds:data_seg1, es:data_seg2

7、start:movax, data_seg1movds, axmovax, data_seg2moves, ax…… code_seg endsend start,一個(gè)源程序可以分模塊編寫,每一模塊獨(dú)立匯編生成OBJ文件,多模塊最后連接成一個(gè)可執(zhí)行程序,包含啟動(dòng)地址的模塊稱主模塊。,10,4.3 偽操作,偽操作 提供保證指令正確匯編的信息,是匯編程序?qū)υ闯绦蜻M(jìn)行匯編時(shí)處理的操作。

8、4.3.1 處理器選擇偽操作4.3.2 段定義偽操作4.3.3 程序開始和結(jié)束偽操作4.3.4 數(shù)據(jù)定義、存儲(chǔ)分配及表達(dá)式賦值偽操作4.3.5 賦值偽操作4.3.6 地址計(jì)數(shù)器與對(duì)準(zhǔn)偽操作4.3.7 基數(shù)控制偽操作,11,4.3.1 處理器選擇偽指令,在缺省方式下,MASM只承認(rèn)8086指令。 為了使用更高的CPU指令,必須使用處理器選擇偽指令,主要包括: .8086

9、 .286/.286P(含287) .386/.386P (含387) .486/.486P .586/.586P .686/.686P .MMX .XMM分別表示其后面的代碼使用相應(yīng)CPU的指令。其中,結(jié)尾的‘P’表示使用特權(quán)指令。,12,4.3.2 段定義偽操作,1.完

10、整的段定義偽操作 ⑴基本形式 段名 SEGMENT [定位類型] [組合類型][使用類型][ 類別] ……. 段名 ENDS,數(shù)據(jù)/附加/堆棧段: 存儲(chǔ)單元分配和數(shù)據(jù)定義代碼段: 指令、偽指令段名: 作為操作數(shù)出現(xiàn)在指令中時(shí),MASM將其視為 立即數(shù),表示段地址,定位類型:BYTE(不對(duì)齊),WORD(偶數(shù)邊界),DWORD(4的倍數(shù)),QWORD(8的倍數(shù)),PARA(小段邊界

11、,16的倍數(shù)。為默認(rèn)值),PAGE(頁(yè)邊界,256)組合類型:(連接時(shí)的段合并方法) PRIVATE:私有段,連接時(shí)不與其它同名段合并。(默認(rèn)) PUBLIC :按連接命令指定的順序合并同名段,每模塊 從小段邊界開始。 COMMON: 重疊存放同名段(覆蓋模式) AT 表達(dá)式:段地址由表達(dá)式計(jì)算(不能用此方法指定 代碼段) MEM

12、ORY:與PUBLIC相同 STACK :合并同名堆棧段,段定義偽操作,段的起始地址的邊界值,14,使用類型:USE16 使用16位尋址方式(段長(zhǎng)64KB) USE32 使用32位尋址方式(段長(zhǎng)4GB) 類別:類名,用于段的合并。⑵明確段寄存器和段的關(guān)系 ASSUME 段寄存器 : 段名[,段寄存器 : 段名…] 明確指出段與段寄存器的缺省對(duì)應(yīng)關(guān)系,即告訴MASM某個(gè)段的段地址在哪

13、個(gè)段寄存器里。實(shí)際上,數(shù)據(jù)段之所以成為數(shù)據(jù)段,是由于DS指向它。,段定義偽操作,15,⑶ 取消段寄存器和段的關(guān)系 ASSUME NOTHING⑷ 設(shè)置段寄存器的初值A(chǔ)SSUME 只是告訴匯編器段寄存器指向哪個(gè)段,并不設(shè)置 段寄存器的值;CS與IP的初值 不能在程序中顯式設(shè)置,由系統(tǒng)自動(dòng)設(shè)置為END后指定的起始地址;DS、ES的初值 必須在程序中用MOV指令設(shè)置;SS與SP的初值 可在程序中顯式設(shè)置。然而,若堆棧

14、段定義時(shí)給出了屬性STACK,則由系統(tǒng)自動(dòng)設(shè)置;,段定義偽操作,16,例:定義用戶堆棧 stack_seg segment dw 40H dup (?) tos label word stack_seg ends code_seg segment ……

15、 mov ax, stack_seg mov ss, ax mov sp, offset tos …… code_seg ends,,,,STACK,,40H,(SP),,(SS),段定義偽操作,低地址,棧底,高地址,17,data_seg1 segment…data_seg1 ends

16、 ; 定義數(shù)據(jù)段data_seg2 segment…data_seg2 ends ; 定義附加段code_seg segment assume cs:code_seg, ds:data_seg1, es:data_seg2start: mov ax, data_seg1 mov ds, ax mov ax, dat

17、a_seg2 mov es, ax ; 段地址?段寄存器 …code_seg ends end start,18,2.簡(jiǎn)化段定義偽操作(自學(xué))⑴ MODEL 偽操作 .MODEL 內(nèi)存模式 [, 語(yǔ)言類型] [, 堆棧選項(xiàng)] ; 用來(lái)指出存儲(chǔ)模式內(nèi)存模式: Tiny Small Medium Compact

18、 Large Huge Flat語(yǔ)言類型:C BASIC FORTRAN PASCAL SYSCALL STDCALL堆棧類型:NEARSTACK 或 FARSTACK⑵ 基本形式 .CODE [名] .DATA .DATA? .FARDATA [名] .FARDATA? [名] .CONST .STACK [尺寸] 缺省為1KB,.model sm

19、all, stdcall.stack.datasource db 33h,34h,35h,36h;在數(shù)據(jù)區(qū)定義4個(gè)字符數(shù)據(jù)target db 80 dup( );分配復(fù)制數(shù)據(jù)空間4×20=80.code.startupmov ax,ds,19,mov es, axcldmov si, offset sourcemov di, offset targetmov cx, 80rep mov

20、sb;串傳送mov si, 0;顯示mov bx, offset targetagain:mov dl, [bx+si]mov ah, 2int 21hinc sicmp si, 80jb again.exit 0end,20,4.3.3 程序開始和結(jié)束偽操作,⒈指定程序名字 NAME module_name TITLE text⒉

21、源程序結(jié)束: END 地址 功能: 表示匯編語(yǔ)言源程序到此結(jié)束,對(duì)END之后的語(yǔ)句不再進(jìn)行匯編??蛇x的地址指出程序執(zhí)行的起始點(diǎn),通常是標(biāo)號(hào)或過(guò)程名。 若程序包含多個(gè)源文件,則每個(gè)源文件的最后必須有一條END語(yǔ)句,但只有主模塊文件可以指出執(zhí)行的起始地址,,21,4.3.4數(shù)據(jù)定義及存儲(chǔ)器分配偽操作,⒈格式: [變量] 類型助記符 操作數(shù) [ , 操作數(shù) , … ] [ ; 注釋

22、]類型助記符 DB, DW, DD, DF, DQ, DT.操作數(shù) 可以是常數(shù)、用 EQU 或 = 定義的符號(hào)常量、表達(dá)式、?和DUP子句等。其中,?表示只保留內(nèi)存空間,未定義初始值。DUP子句的格式為: 重復(fù)次數(shù) DUP (操作數(shù),...,操作數(shù))DATA_WORD DW 100, 100HDATA_BYTE DB 100 DUP (?)MESS1

23、DB ‘AB’MESS2 DW ‘AB’,BYTE, WORD, SWORD, DWORD, SDWORD, FWORD, QWORD, TBYTE, REAL4, REAL8, REAL10,22,例1: OPER1 DB ?, ? OPER2 DW ?, ? … MOV OPER1, 0 ; 字節(jié)指令

24、 MOV OPER2, 0 ; 字指令例2: OPER1 DB 1, 2 OPER2 DW 1234H, 5678H … MOV AX, OPER1+1 × MOV AL, OPER2 × 類型不匹配 MOV AX, WORD PTR OPER1+1

25、 MOV AL, BYTE PTR OPER2 (AX)=3402H (AL)=34H,數(shù)據(jù)定義及存儲(chǔ)器分配偽操作,23,2.說(shuō)明(1)變量可以定義在任何段(包括代碼段),但一般定義在 數(shù)據(jù)段。(2)用DW/DD/DQ/DF/DT定義的數(shù)據(jù)在內(nèi)存按“低字節(jié)在低地址”的方式存放。例如:S1DB'AB'; 等價(jià)于 S1 DB 41H, 42H S2DW'

26、AB'; 等價(jià)于 S2 DW 4142H (3)當(dāng)DW與DD后的操作數(shù)是地址表達(dá)式時(shí),分別表示其16位偏移地址和32位分段地址(段地址在高字,偏移地址在低字)。例如:XDB10 DUP (?)ADDR1DW X ; ADDR1的內(nèi)容(字)為變量X的偏移地址ADDR2DDX ; ADDR2的高字為X的段地址, ;低字為X的偏移地址,數(shù)據(jù)定義及存儲(chǔ)器分配偽操作,24,(4)

27、變量在定義后,其類型便被確定,使用時(shí)要注意類型匹配。 例如:OP1 DB?, ? OP2 DW ?, ?下列兩條指令執(zhí)行不同類型的操作: MOV OP1 + 1, 0 ; 將0作為1個(gè)字節(jié)送到地址OP1 + 1 MOV OP2 + 2, 0 ; 將0作為1個(gè)字送到地址OP2 + 2然而,下列兩條指令是錯(cuò)誤的: MOV OP1,

28、AX; 類型不匹配 MOV OP2, AL; 類型不匹配 若希望進(jìn)行與變量類型不一致的操作可以采用下面介紹的LABEL偽指令或類型操作符PTR等。,數(shù)據(jù)定義及存儲(chǔ)器分配偽操作,25,5. LABEL ⑴基本形式:名字LABEL類型 ⑵功能:將名字作為一個(gè)符號(hào)地址,指定其類型,地址由所在位置確定。然而,并不為名字分配內(nèi)存空間。 ⑶說(shuō)明: 當(dāng)類型是BYTE、WORD、D

29、WORD時(shí),名字作為相應(yīng)類型的變量; 當(dāng)類型是NEAR或FAR時(shí),名字作為相應(yīng)類型的標(biāo)號(hào)。,數(shù)據(jù)定義及存儲(chǔ)器分配偽操作,26,【例】 定義地址相同、類型不同的兩個(gè)變量。balabel bytewadw50 dup (?) 將100個(gè)字節(jié)的數(shù)組首地址賦予兩個(gè)不同類型的變量:字節(jié)類型變量BA與字類型變量WA。如: mov wa + 2, 0 ;將0作為1個(gè)字送到地址WA + 2 mov ba + 2, 0

30、 ;將0作為1個(gè)字節(jié)送到地址BA + 2盡管WA + 2與BA + 2指向同一內(nèi)存地址,兩條指令的操作類型不同,數(shù)據(jù)定義及存儲(chǔ)器分配偽操作,27,4.3.5 賦值偽操作,⒈表達(dá)式賦值偽操作(EQU) 不占存儲(chǔ)單元 格式: 表達(dá)式名 EQU 表達(dá)式 CONSTANT EQU 256 ALPHA EQU 7 BETA EQU ALPHA-2

31、 ⒉ “=”偽操作 (允許重復(fù)定義) 格式:變量=表達(dá)式 EMP=7 … EMP=EMP+1,28,4.3.6 地址計(jì)數(shù)器$,⒈ $ 保存當(dāng)前正在匯編的指令的地址例: ORG $+8 ; 跳過(guò)8個(gè)字節(jié)的存儲(chǔ)區(qū) JNE $+6 ; 轉(zhuǎn)向地址是JNE的首址+6⒉ $ 用在偽操作的參數(shù)字段——表示地址計(jì)數(shù)器的當(dāng)前值 ARRAY DW 1, 2 , $+4 ,

32、 3 , 4 , $+4,29,4.3.7 基數(shù)控制與對(duì)準(zhǔn)偽操作,⒈基數(shù)控制偽操作 .RADIX格式:.RADIX 表達(dá)式 (2,8,10,16) 功能: 規(guī)定無(wú)標(biāo)記數(shù)的基數(shù)例: .RADIX 16 MOV BX, 0FF MOV BX, 178D⒉ 對(duì)準(zhǔn)偽操作EVEN 格式: EVEN功能:使下一地址從偶地址開始A DB ‘morning’EVENB

33、DW 2 DUP (?),30,⒊對(duì)準(zhǔn)偽操作ORG格式: ORG 常數(shù)表達(dá)式 功能: 使下一地址是常數(shù)表達(dá)式的值 ORG 100H START: …...⒋ 對(duì)準(zhǔn)偽操作ALIGN格式: ALIGN boundry 功能: 使下一地址從boundry的整數(shù)倍開始, boundry的值為2的冪. ALIGN 4 ARRAY DD 100 DUP(?),,基數(shù)控制與對(duì)準(zhǔn)偽操作,3

34、1,4.4 匯編語(yǔ)言程序格式,數(shù)據(jù) 是指令和偽指令語(yǔ)句中操作數(shù)的基本組成部分,它的大小和屬性對(duì)機(jī)器語(yǔ)言代碼的生成有直接關(guān)系。匯編語(yǔ)言能識(shí)別的數(shù)據(jù)是常量、變量和標(biāo)號(hào)。 4.4.1 常量 4.4.2 變量 4.4.3 標(biāo)號(hào) 4.4.4 表達(dá)式和運(yùn)算符,32,4.4.1 常量 常量是匯編時(shí)已經(jīng)確定的值,主要用于偽指令中給變量賦值,或作為指令語(yǔ)句中的立即數(shù)或存儲(chǔ)器操作數(shù)的組成部分(如位移量)。 為了便于程序設(shè)計(jì),

35、常量有多種表示形式,缺省的基數(shù)是十進(jìn)制,且可以用.RADIX改變。 常量可以用數(shù)值形式直接寫在匯編語(yǔ)言的語(yǔ)句中,也可以預(yù)先為它定義一個(gè)名字,供程序員編程時(shí)直接引用。這里,用名字表示的常量為符號(hào)常量,符號(hào)常量使用偽指令EQU或=進(jìn)行定義。 例: PI EQU 3.1415926e+0,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,33,4.4.1 常量,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,34,變量 用于定義存儲(chǔ)器中的數(shù)據(jù),在程序運(yùn)行過(guò)程中可修改。為

36、了便于對(duì)變量的訪問(wèn),變量常常以變量名的形式出現(xiàn)在程序中。變量名可以認(rèn)為是存放數(shù)據(jù)的存儲(chǔ)單元符號(hào)地址,它的三個(gè)屬性是: 段屬性:指變量所在段的段基址 偏移地址屬性: 指變量所在段中的偏移量 類型屬性: 指變量占用存儲(chǔ)單元的字節(jié)數(shù) 例:XBYTE DB 1,2,3 XWORD DW 123,456,789,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,4.4.2 變量,35,標(biāo)號(hào) 是給指令性語(yǔ)句

37、所在地址取的名字,它表明該指令 在存儲(chǔ)器中的位置,可作為轉(zhuǎn)移類指令的操作數(shù),以確定程序轉(zhuǎn)移的目標(biāo)地址。和變量一樣,標(biāo)號(hào)也有以下三個(gè)屬性: 段屬性:指標(biāo)號(hào)所在段的段基址 偏移地址屬性:指標(biāo)號(hào)所在段中的偏移量,即標(biāo)號(hào)所在 地址與段基址之間的字節(jié)距離。 距離屬性(或類型屬性):標(biāo)號(hào)可作為轉(zhuǎn)移和調(diào)用指令的目標(biāo)地址,也可作為過(guò)程定義偽指令的過(guò)程名。 有NEAR(段內(nèi),隱含)和FAR(段間)之分。 可以用LABEL偽指令加以改變

38、。,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,4.4.3 標(biāo)號(hào),36,表達(dá)式 由常量、變量、標(biāo)號(hào)和操作符構(gòu)成。有兩類: 數(shù)值表達(dá)式 結(jié)果是數(shù)值; 地址表達(dá)式 結(jié)果是存儲(chǔ)器地址.格式: 變量名/標(biāo)號(hào)名 ± 常數(shù) 類型由相應(yīng)的變量或標(biāo)號(hào)確定。 兩個(gè)地址表達(dá)式的差 表示兩個(gè)地址之間的距離(字節(jié)數(shù)),兩個(gè)地址必須在同一個(gè)段內(nèi)。 注意:不能將兩個(gè)地址表達(dá)式相加。 $是一個(gè)特殊的地址表達(dá)式,表示當(dāng)前地址,即地址

39、計(jì)數(shù)器的當(dāng)前值。,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,4.4.4 表達(dá)式和運(yùn)算符,存放數(shù)據(jù),稱為變量;存放指令,稱為標(biāo)號(hào)。,37,⑴ 算術(shù)操作符七種:+、-、*、/、MOD、SHL、SHR結(jié)果類型:均為整數(shù) ;例: NUM=15*4MOV DX,BLOCK +(6 - 1)*2;將BLOCK數(shù)組的第6個(gè)字傳送到DX寄存器MOV AL,00001010B SHL 4 ;(AL)=10100000B; 將000

40、01010B 邏輯左移4位 例: 數(shù)組ARRAY定義如下,把數(shù)組長(zhǎng)度存入CX的指令 MOV CX,(END-ARRAY)/2;程序在匯編時(shí)將表達(dá)式形成指令MOV CX,7,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,表達(dá)式和運(yùn)算符,38,⑵ 邏輯操作符:AND, OR, XOR, NOT 只能用于數(shù)字表達(dá)式中 例: IN AL,PORT_VAL OUT PORT_VAL A

41、ND 0FEH, AL ;輸出總在偶數(shù)端口上例: OPR1 EQU 25 OPR2 EQU 7 …… AND AX, OPR1 AND OPR2,表達(dá)式和運(yùn)算符,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,39,⑶ 關(guān)系操作符: EQ, NE, LT, LE, GT, GE計(jì)算結(jié)果為邏輯值:真 0FFFFH

42、 假 0000H 例:MOV FID, (OFFSET Y - OFFSET X) LE 128 X: ……Y: ……若?128(真),匯編結(jié)果 MOV FID, -1若?128(假),匯編結(jié)果 MOV FID, 0例: MOV AX,5 EQ 101B ;(AX)= 0FFFFH MOV

43、 AH,10H GT 16 ;(AX)=0,表達(dá)式和運(yùn)算符,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,40,⑷數(shù)值回送操作符 運(yùn)算對(duì)象:變量或標(biāo)號(hào)。格式:運(yùn)算符 運(yùn)算對(duì)象 。 結(jié)果: 數(shù)值。① SEG 返回變量/標(biāo)號(hào)所在段的段基址;② OFFSET 返回變量/標(biāo)號(hào)所在段內(nèi)的偏移地址;③TYPE 返回變量/標(biāo)號(hào)的類型屬性;④LENGTH 加在變量名之前,返回變量中所定義的元素個(gè)數(shù)。 若變量

44、是用DUP說(shuō)明的,則返回DUP前面的數(shù)值; 否則返回的值總是1。⑤SIZE 加在變量名之前,返回變量所占的總字節(jié)數(shù),且等于 LENTH和TYPE兩個(gè)運(yùn)算符返回值的乘積。,表達(dá)式和運(yùn)算符,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,變量:DB DW DD DF DQ DT 標(biāo)號(hào):NEAR FAR類型值: 1 2 4 6 8 10

45、 -1 -2,41,;TYPEN1 DB 30H,31H,32HN2 DW 4142H,4344HN3 DD 12345678HLAB : MOV AL,TYPE N1MOV AL , TYPE N1 ; (AL)=1MOV AL , TYPE N2 ; (AL)=2MOV AL , TYPE N3 ; (AL)=

46、4,;SIZEN1 DB 10H DUP (?)N2 DW 4142H,4344HN3 DB ‘12345678’LAB: MOV AL,TYPE N1MOV AL,SIZE N1 ; (AL)=16MOV AL,SIZE N2 ; (AL)=2MOV AL,SIZE N3 ; (AL)=1,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,;LENTHN1 DB 10H

47、 DUP (?)N2 DW 4142H,4344HN3 DB ‘12345678’LAB : MOV AL , TYPE N1MOV AL , LENTH N1 ; (AL)=16MOV AL , LENTH N2 ; (AL)=1MOV AL , LENTH N3 ; (AL)=1,42,⑸修改屬性運(yùn)算符 用來(lái)修改變量、標(biāo)號(hào)或地址表達(dá)式的屬性 ① “

48、:” ② PTR ③ THIS ④ HIGH和LOW運(yùn)算符⑤ SHORT ⑥ 圓括號(hào)運(yùn)算符( ) ⑦ 方括號(hào)運(yùn)算符[ ] ⑧ 結(jié)構(gòu)和記錄的專用運(yùn)算符 · 、記錄字段名、MASK、WIDTH,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,43,①“ :” 用來(lái)臨時(shí)給地址表達(dá)式指定一個(gè)段屬性,自動(dòng)生成段跨越 前綴 例:MO

49、V AX,ES:[BX] MOV BL,DS:[BP] 注意:CS和ES不能被段跨越,堆棧操作時(shí)SS也不能被跨越。 ②PTR 用來(lái)指明某個(gè)地址表達(dá)式的類型或距離屬性,或者使它們臨時(shí)兼有與原定義不同的類型屬性。 <類型> PTR <地址表達(dá)式>例: DAT DB 4,5,7 ADD BYTE P

50、TR [DI],4 ;指明目標(biāo)操作數(shù)為字節(jié)類型 JMP DWORD PTR [BX] ;指明為段間轉(zhuǎn)移 MOV AX,WORD PTR DAT ;臨時(shí)修改DAT為字,(AX)=0504H,匯編語(yǔ)言數(shù)據(jù)與表達(dá)式,44,③THIS 將其后所指定的類型或距離屬性賦給當(dāng)前的變量、標(biāo)號(hào)和地址表達(dá)式,但不分配新的存儲(chǔ)單元,下一個(gè)分配的存儲(chǔ)單元的段和偏移地址就是它的段和偏移地

51、址.格式如下: THIS <類型>這種運(yùn)算往往與EQU或=連用,為當(dāng)前存儲(chǔ)單元定義一個(gè)指定類型的變量或標(biāo)號(hào),類型屬性可以識(shí)BYTE、WORD、DWORD、NEAR、FAR.例: GAMA EQU THIS BYTE BETA EQU THIS FAR不管GAMA原來(lái)是什么類型,從本語(yǔ)句開始,GAMA將成為字節(jié)變量,而不管BETA原來(lái)是什么距離屬性.從本

52、語(yǔ)句開始,BETA將成為FAR遠(yuǎn)標(biāo)號(hào)。 A EQU THIS BYTE B DD 12345678H C EQU WORD PTR B則第一條語(yǔ)句將緊跟在它后面的雙字變量定義為字節(jié)屬性,并命名為A;第三條語(yǔ)句將雙字變量B定義為字屬性并命名為C,供需要字類型變量時(shí)使用。,45,④HIGH/HIGHWORD和LOW/L

53、OWWORD運(yùn)算符 分別用于從運(yùn)算對(duì)象中分離出高字節(jié)/字和低字節(jié)/字。例如: K1 EQU 1234H MOV AL, LOW K1 ;(AL)=34H⑤SHORT 用于說(shuō)明轉(zhuǎn)移指令的目標(biāo)地址與本指令之間的字節(jié)距離在-128~127范圍內(nèi),應(yīng)用例子見JMP段內(nèi)短轉(zhuǎn)移指令。 ⑥圓括號(hào)運(yùn)算符( ) 用于改變運(yùn)算符的優(yōu)先

54、級(jí)別,()運(yùn)算的優(yōu)先級(jí)別最高。 K1 = 10 OR 5 AND 1 ;K1=0BH K2 =(10 OR 5) AND 1 ;K1=0BH,46,⑦方括號(hào)運(yùn)算符[ ] 該運(yùn)算符可以是數(shù)組變量的下標(biāo)或地址表達(dá)式,以區(qū)別操作數(shù)和操作數(shù)地址。例如: ALPHA DB 30H,31H,32H,33H,34H ;ALPHA為數(shù)組變量 MOV

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論