第3章 80X86的指令系統(tǒng)和尋址方式_第1頁
第3章 80X86的指令系統(tǒng)和尋址方式_第2頁
第3章 80X86的指令系統(tǒng)和尋址方式_第3頁
第3章 80X86的指令系統(tǒng)和尋址方式_第4頁
第3章 80X86的指令系統(tǒng)和尋址方式_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、本章主要內(nèi)容: 數(shù)據(jù)類型 80X86的尋址方式 80X86的指令系統(tǒng)本章重點(diǎn):80X86尋址方式、指令系統(tǒng)第第3章章 80 x86的指令系統(tǒng)和尋址方式的指令系統(tǒng)和尋址方式 指令系統(tǒng)指令系統(tǒng) 一組指令的集合一組指令的集合 操作碼操作碼 操作數(shù)操作數(shù) . 操作數(shù)操作數(shù)指令指令 尋址方式尋址方式 與數(shù)據(jù)有關(guān)的尋址方式與數(shù)據(jù)有關(guān)的尋址方式 與轉(zhuǎn)移地址有關(guān)的尋址方式與轉(zhuǎn)移地址有關(guān)的尋址方式第第3章章 80 x86的指令系統(tǒng)和尋址方式的指令系統(tǒng)和尋址方式物理地址的形成 80X86微機(jī)在其內(nèi)部定點(diǎn)處理單元微處理器和浮點(diǎn)單元FPU的支持下,可處理7種類型數(shù)據(jù):l 無符號(hào)二進(jìn)制數(shù)無符號(hào)二進(jìn)制數(shù)l 帶符號(hào)二進(jìn)制數(shù)

2、帶符號(hào)二進(jìn)制數(shù)l 浮點(diǎn)數(shù)浮點(diǎn)數(shù)l BCDBCD碼碼l 串?dāng)?shù)據(jù)串?dāng)?shù)據(jù)l ASCIIASCII碼數(shù)據(jù)碼數(shù)據(jù)l 指針類數(shù)據(jù)指針類數(shù)據(jù)3.1 數(shù)據(jù)類型數(shù)據(jù)類型80X86微機(jī)中,存儲(chǔ)器既存放數(shù)據(jù)也存放程序即指令微機(jī)中,存儲(chǔ)器既存放數(shù)據(jù)也存放程序即指令80X86的尋址方式包括程序?qū)ぶ贩绞胶蛿?shù)據(jù)尋址方式的尋址方式包括程序?qū)ぶ贩绞胶蛿?shù)據(jù)尋址方式3.2 80X86的尋址方式的尋址方式80X86指令中所需的操作數(shù)來自以下三個(gè)方面指令中所需的操作數(shù)來自以下三個(gè)方面 1.操作數(shù)包含在指令中操作數(shù)包含在指令中 MOV AX , 3069H 2.操作數(shù)包含在微處理器的某個(gè)內(nèi)部寄存器中操作數(shù)包含在微處理器的某個(gè)內(nèi)部寄存器中

3、 MOV AL , BH 3.操作數(shù)包含在存儲(chǔ)器中操作數(shù)包含在存儲(chǔ)器中 MOV AX , 2000H 3.2.1 80X86的尋址方式的尋址方式80X86微機(jī)系統(tǒng)中,任何內(nèi)存單元的地址由段基址和偏微機(jī)系統(tǒng)中,任何內(nèi)存單元的地址由段基址和偏移地址(又稱偏移量)組成,段基址由段寄存器提供,移地址(又稱偏移量)組成,段基址由段寄存器提供,偏移量由以下四個(gè)基本部分組成偏移量由以下四個(gè)基本部分組成 1.基址寄存器基址寄存器 2.變址(間址)寄存器變址(間址)寄存器 3.比例因子比例因子 4.位移量位移量有效地址有效地址 EA=基址基址+變址變址*比例因子比例因子+位移量位移量當(dāng)采用當(dāng)采用16位尋址方式時(shí)

4、,位尋址方式時(shí),80X86使用使用8位或位或16位的位移位的位移量,用量,用BX或或BP作基址寄存器,作基址寄存器,SI和和DI變址寄存器,比變址寄存器,比例因子為例因子為1;3.2.1 80X86的尋址方式的尋址方式當(dāng)采用當(dāng)采用32位尋址方式時(shí),使用位尋址方式時(shí),使用8位或位或16位的位移量,所位的位移量,所有有32位通用寄存器都可作為基址寄存器,除位通用寄存器都可作為基址寄存器,除ESP外的所外的所有通用寄存器都可作變址寄存器,并采用有通用寄存器都可作變址寄存器,并采用2、4、8幾種幾種不同的比例因子。不同的比例因子。 16 16位和位和3232位尋址的差異位尋址的差異地址成分地址成分 1

5、616位尋址位尋址 3232位尋址位尋址基址寄存器基址寄存器 BXBX、BP BP 任何任何3232位通用寄存器位通用寄存器變址寄存器變址寄存器 SISI、DI DI 除除ESPESP外的任何外的任何3232位通用寄存器位通用寄存器比例因子比例因子 1 11 1、2 2、4 4、8 8 立即尋址立即尋址 MOV AX , 3069H寄存器尋址寄存器尋址 MOV AL , BH直接尋址直接尋址 MOV AX , 2000H 寄存器間接尋址寄存器間接尋址 MOV AX , BX 基址尋址基址尋址 MOV AX,AX+24變址尋址變址尋址 ADD AX,TABLESI帶比例因子的變址尋址帶比例因子的

6、變址尋址 MOV AX , TABLE SI*4 ,7 基址變址尋址基址變址尋址 MOV AX , BP DI 基址帶比例因子的變址尋址基址帶比例因子的變址尋址 MOV AX,EI*4EA相對(duì)基址變址尋址相對(duì)基址變址尋址 ADD AX,SIBP+00FFH相對(duì)、比例因子變址基址尋址相對(duì)、比例因子變址基址尋址 MOV AX , DI*4 BP+80H 3.2.1數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 指令格式: MOV AL, 5 MOV AX, 3064H MOV AL, A* 只能用于只能用于 SRC 字段字段 MOV 40H, AL * SRC 和和 DST 的字長一致的字長一致 MOV AH, 306

7、4H (1) 立即尋址方式立即尋址方式* 操作數(shù)在指令中給出操作數(shù)在指令中給出(2) 寄存器尋址方式寄存器尋址方式* 操作數(shù)在指定的寄存器中操作數(shù)在指定的寄存器中 MOV AX, BX MOV AL, BH MOV AX, 3064H* 字節(jié)寄存器只有字節(jié)寄存器只有 AH AL BH BL CH CL DH DL* SRC 和和 DST 的字長一致的字長一致 MOV AH, BX * CS 不能用不能用 MOV 指令改變指令改變 MOV CS, AX 例例:MOV AX, 2000H EA=2000H, 假設(shè)假設(shè)(DS)=3000H, 那么那么PA=32000H* 隱含的段為數(shù)據(jù)段隱含的段為數(shù)

8、據(jù)段 DS* 可使用段跨越前綴可使用段跨越前綴 MOV AX, ES: 2000H* 操作數(shù)地址可由變量(符號(hào)地址)表示操作數(shù)地址可由變量(符號(hào)地址)表示, 但要注意但要注意VALUE DB 10 變量的屬性變量的屬性MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE 5030 32000AH AL3050(AX) = 3050H3)直接尋址方式直接尋址方式* (直接可以理解為在編譯階(直接可以理解為在編譯階段已經(jīng)確定的地址)段已經(jīng)確定的地址) EA 在基址寄存器在基址寄存器(BX/BP) 或變址寄存器或變址寄存器(SI/DI) 中中 MOV

9、AX, BX PA = 16d (DS) + (BX) MOV AX, ES:BX PA = 16d (ES) + (BX) MOV AX, BP PA = 16d (SS) + (BP) * 不允許使用不允許使用AX、CX、DX 存放存放 EA MOV AX, CX * SRC 和和 DST 的字長一致的字長一致 MOV DL, BX ; BX指示一個(gè)字節(jié)單元指示一個(gè)字節(jié)單元 MOV DX, BX ; BX指示一個(gè)字單元指示一個(gè)字單元 * 適于數(shù)組、字符串、表格的處理適于數(shù)組、字符串、表格的處理(4)寄存器間接尋址寄存器間接尋址* 有效地址有效地址 =(BX)(BP) 8位位(SI) 16位

10、位(DI)+位移量位移量 指令格式指令格式: MOV AX, COUNTSI MOV AX, COUNTSI 或或 MOV AX, COUNT+SIMOV AX, COUNT+SI 假設(shè)假設(shè) (DS)=3000H, (SI)=2000H, COUNT=3000H(DS)=3000H, (SI)=2000H, COUNT=3000H, 則則: PA = 35000HPA = 35000H 假設(shè)假設(shè)(35000H)=1234H, (35000H)=1234H, 那那么么 (AX)=1234H(AX)=1234H* 適于數(shù)組、字符串、表格的處理適于數(shù)組、字符串、表格的處理(5)寄存器相對(duì)尋址方式寄存

11、器相對(duì)尋址方式*(變址尋址)變址尋址)指令格式:指令格式: MOV AX, BX DIMOV AX, BX DI MOV AX, BX+DI MOV AX, BX+DI MOV AX, ES:BX SI MOV AX, ES:BX SI* 適于數(shù)組、字符串、表格的處理適于數(shù)組、字符串、表格的處理* 必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合 MOV AX, BX BP MOV AX, SI DI 有效地址有效地址 =(BX) (SI)(BP) (DI)+(6) 基址變址尋址方式基址變址尋址方式*基址變址尋址 MOV AX, MASK BX SI 或或

12、MOV AX, MASK BX+SI 或或 MOV AX, MASK+BX+SI 有效地址有效地址 =(BX) (SI) 8位位(BP) (DI) 16位位+位移量位移量( 7 ) 相對(duì)基址變址尋址方式相對(duì)基址變址尋址方式相對(duì)基址變址尋址EA= = (基址寄存器基址寄存器) + (變址寄存器變址寄存器) 比例因子比例因子 + 位移量位移量( 1 ) 比例變址尋址方式比例變址尋址方式 例:例:MOV EAX, COUNT ESI 4 80386 新增的尋址方式新增的尋址方式(2) 基址比例變址尋址方式基址比例變址尋址方式 例:例:MOV ECX, EAX EDI 4 (3) 相對(duì)基址比例變址尋址

13、方式相對(duì)基址比例變址尋址方式 例:例:MOV EAX, TABLE EBP EDI 4 (4)帶位移量的基址變址尋址帶位移量的基址變址尋址 例:例:add edx,esiebp+00fffff0h(5)帶位移量、帶比例因子變址基址尋址帶位移量、帶比例因子變址基址尋址 例:例:mov eax,edi*4 ebp+80 段內(nèi)尋址段內(nèi)尋址 段內(nèi)直接尋址段內(nèi)直接尋址 JMP 1000H 段內(nèi)間接尋址段內(nèi)間接尋址 JMP BX 段間尋址段間尋址 段間直接尋址段間直接尋址 JMP 2500H:3600H 段間間接尋址段間間接尋址 JMP DWORD PTR DI 3.2.2 程序?qū)ぶ贩绞匠绦驅(qū)ぶ贩绞綗o條件

14、轉(zhuǎn)移指令為例 只要執(zhí)行無條件轉(zhuǎn)移指令JMP,就使程序轉(zhuǎn)到指定的目標(biāo)地址處,從目標(biāo)地址處開始執(zhí)行那里的指令 操作數(shù)label是要轉(zhuǎn)移到的目標(biāo)地址(目的地址、轉(zhuǎn)移地址) JMP指令分成4種類型: 段內(nèi)轉(zhuǎn)移、直接尋址 段內(nèi)轉(zhuǎn)移、間接尋址 段間轉(zhuǎn)移、直接尋址 段間轉(zhuǎn)移、間接尋址JMP labelJMP label;程序轉(zhuǎn)向;程序轉(zhuǎn)向labellabel標(biāo)號(hào)指定的地址標(biāo)號(hào)指定的地址目標(biāo)地址的尋址方式 直接尋址方式 轉(zhuǎn)移地址象立即數(shù)一樣,直接在指令的機(jī)器代碼中,就是直接尋址方式 間接尋址方式 轉(zhuǎn)移地址在寄存器或主存單元中,就是通過寄存器或存儲(chǔ)器的間接尋址方式目標(biāo)地址的范圍:段內(nèi) 段內(nèi)轉(zhuǎn)移近轉(zhuǎn)移(near)

15、 在當(dāng)前代碼段64KB范圍內(nèi)轉(zhuǎn)移( 32KB范圍) 不需要更改CS段地址,只要改變IP偏移地址 段內(nèi)轉(zhuǎn)移短轉(zhuǎn)移(short) 轉(zhuǎn)移范圍可以用一個(gè)字節(jié)表達(dá),在段內(nèi)128127范圍的轉(zhuǎn)移代碼段代碼段代碼段代碼段目標(biāo)地址的范圍:段間 段間轉(zhuǎn)移遠(yuǎn)轉(zhuǎn)移(far) 從當(dāng)前代碼段跳轉(zhuǎn)到另一個(gè)代碼段,可以在1MB范圍 需要更改更改CS段地址和段地址和IP偏移地址偏移地址 目標(biāo)地址必須用一個(gè)32位數(shù)表達(dá),叫做32位遠(yuǎn)指針位遠(yuǎn)指針,它就是邏輯地址代碼段代碼段代碼段代碼段 實(shí)際編程時(shí),匯編程序會(huì)根據(jù)目標(biāo)地址的距離,實(shí)際編程時(shí),匯編程序會(huì)根據(jù)目標(biāo)地址的距離,自動(dòng)處理自動(dòng)處理成短轉(zhuǎn)移、近轉(zhuǎn)移或遠(yuǎn)轉(zhuǎn)移成短轉(zhuǎn)移、近轉(zhuǎn)移或遠(yuǎn)

16、轉(zhuǎn)移 程序員可用操作符程序員可用操作符short、near ptr 或或far ptr 強(qiáng)制強(qiáng)制段間轉(zhuǎn)移、直接尋址JMP far ptrJMP far ptr label label;IPlabel的偏移地址;CSlabel的段地址 將標(biāo)號(hào)所在段的段地址作為新的CS值,標(biāo)號(hào)在該段內(nèi)的偏移地址作為新的IP值;這樣,程序跳轉(zhuǎn)到新的代碼段執(zhí)行jmp far ptr othersegjmp far ptr otherseg;遠(yuǎn)轉(zhuǎn)移到代碼段2的otherseg段間轉(zhuǎn)移、間接尋址JMP far ptr memJMP far ptr mem;IPmem,CSmem+2 用一個(gè)雙字存儲(chǔ)單元表示要跳轉(zhuǎn)的目標(biāo)地址

17、。這個(gè)目標(biāo)地址存放在主存中連續(xù)的兩個(gè)字單元中的,低位字送IP寄存器,高位字送CS寄存器mov word ptr bx,0mov word ptr bx+2,1500hJMP far ptr bx ;轉(zhuǎn)移到1500h:0段內(nèi)轉(zhuǎn)移、直接尋址JMP label;IPIP+位移量位移量是緊接著JMP指令后的那條指令的偏移地址,到目標(biāo)指令的偏移地址的地址位移當(dāng)向地址增大方向轉(zhuǎn)移時(shí),位移量為正;向地址減小方向轉(zhuǎn)移時(shí),位移量為負(fù)jmpjmp againagain;轉(zhuǎn)移到;轉(zhuǎn)移到againagain處繼續(xù)執(zhí)行處繼續(xù)執(zhí)行again:again:dec cxdec cx;標(biāo)號(hào);標(biāo)號(hào)againagain的指令的指令

18、jmpjmp outputoutput;轉(zhuǎn)向;轉(zhuǎn)向outputoutputoutput:output:movmov result,al result,al;標(biāo)號(hào);標(biāo)號(hào)outputoutput的指令的指令段內(nèi)轉(zhuǎn)移、間接尋址JMP r16/m16 ;IPr16/m16 將一個(gè)16位寄存器或主存字單元內(nèi)容送入IP寄存器,作為新的指令指針,但不修改CS寄存器的內(nèi)容jmp ax;IPAXjmp word ptr 2000h ;IP2000h 80868086和和8028680286的操作數(shù)寬度和尋址寬度都是的操作數(shù)寬度和尋址寬度都是1616位的位的 3232位處理器的操作數(shù)寬度和尋址寬度可以是位處理器的

19、操作數(shù)寬度和尋址寬度可以是1616位的,位的,也可以是也可以是3232位的。位的。 1.W1.W域與操作數(shù)寬度域與操作數(shù)寬度 2.2.默認(rèn)的操作數(shù)寬度和尋址寬度默認(rèn)的操作數(shù)寬度和尋址寬度 3.3.指令的操作數(shù)寬度和尋址寬度前綴指令的操作數(shù)寬度和尋址寬度前綴3.2.3 操作數(shù)寬度和尋址寬度的確定操作數(shù)寬度和尋址寬度的確定 1616位端口對(duì)齊于偶數(shù)地址位端口對(duì)齊于偶數(shù)地址 3232位端口對(duì)齊于能被位端口對(duì)齊于能被4 4整除的地址整除的地址 I/OI/O地址空間的尋址方式很簡單,僅有兩種地址空間的尋址方式很簡單,僅有兩種 1.1.直接尋址直接尋址 例:例:in al,32h in al,32h 2.

20、 DX2. DX間接尋址間接尋址 例:例:in ax,dxin ax,dx3.2.4 I/O3.2.4 I/O地址空間地址空間訪問存儲(chǔ)器的方式訪問存儲(chǔ)器的方式 默認(rèn)的默認(rèn)的段寄存器段寄存器可跨越的可跨越的段寄存器段寄存器偏移地址偏移地址取指令取指令 CS 無 IP堆棧操作堆棧操作 SS 無 SP一般數(shù)據(jù)訪問一般數(shù)據(jù)訪問 DS CS ES SS 有效地址EABP作為基址的尋址作為基址的尋址 SS CS DS ES BP串操作的源操作數(shù)串操作的源操作數(shù) DS CS ES SS SI串操作的目的操作數(shù)串操作的目的操作數(shù) ES 無 DI注:段注:段 寄寄 存存 器器 的的 使使 用用 規(guī)規(guī) 定定3.2

21、.5 3.2.5 段寄存器的確定段寄存器的確定 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 算術(shù)指令算術(shù)指令 邏輯指令邏輯指令 移位與循環(huán)移位指令移位與循環(huán)移位指令 位操作指令位操作指令 位串操作指令位串操作指令 串操作指令與重復(fù)前綴串操作指令與重復(fù)前綴 轉(zhuǎn)移指令轉(zhuǎn)移指令 調(diào)用與返回指令調(diào)用與返回指令3.3 80X86的指令系統(tǒng)的指令系統(tǒng)指令的匯編格式指令的匯編格式指令的基本功能指令的基本功能指令支持的尋址方式指令支持的尋址方式指令的執(zhí)行對(duì)標(biāo)志位的影響指令的執(zhí)行對(duì)標(biāo)志位的影響指令的特殊要求指令的特殊要求操作的上下文環(huán)境操作的上下文環(huán)境對(duì)于每一條指令重點(diǎn)關(guān)注:對(duì)于每一條指令重點(diǎn)關(guān)注: 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送

22、指令 MOV、PUSH、POP、XCHG 累加器專用傳送指令累加器專用傳送指令 IN、OUT、XLAT 地址傳送指令地址傳送指令 LEA、LDS、LES 標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令 LAHF、SAHF、PUSHF、POPF 類型轉(zhuǎn)換指令類型轉(zhuǎn)換指令 CBW、CWD 3.3.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令:重點(diǎn)掌握 數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作 傳送指令也是最常使用的一類指令 傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置 除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位 重點(diǎn)掌握MOV XCHG XLAT PUSH POP LEA傳送指令:傳送指令: MOV DST, SRC執(zhí)行操作:執(zhí)

23、行操作: (DST) (SRC)注意注意: * DST、SRC 不能同時(shí)為段寄存器不能同時(shí)為段寄存器 MOV DS, ES * 立即數(shù)不能直接送段寄存器立即數(shù)不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即數(shù)和不能是立即數(shù)和CS* DST、SRC 不能同時(shí)為存儲(chǔ)器尋址不能同時(shí)為存儲(chǔ)器尋址* 不影響標(biāo)志位不影響標(biāo)志位MOV AX, DSEGMOV DS, AX 1 、通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令1) 傳送指令MOV(move) 把一個(gè)字節(jié)或字的操作數(shù)從源地址傳送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即數(shù)送寄存器或主存;立即數(shù)送寄存器或

24、主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄;段寄存器送寄存器或主存存器或主存例例3.1:立即數(shù)傳送:立即數(shù)傳送mov al,4;al4,字節(jié)傳送mov cx,0ffh;cx00ffh,字傳送mov si,200h;si0200h,字傳送mov byte ptr si,0ah;byte ptr 說明是字節(jié)操作mov word ptr

25、 si+2,0bh;word ptr 說明是字操作 注意立即數(shù)是字節(jié)量還是字量注意立即數(shù)是字節(jié)量還是字量 明確指令是字節(jié)操作還是字操作明確指令是字節(jié)操作還是字操作例例3.2:寄存器傳送:寄存器傳送mov ax,bx;axbx,字傳送mov ah,al;ahal,字節(jié)傳送mov ds,ax;dsax,字傳送mov bx,al;bxal,字節(jié)傳送例例3.3:存儲(chǔ)器傳送:存儲(chǔ)器傳送mov al,bxmov dx,bp;dxss:bpmov es,si;esds:si 不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令例例3.4:段寄存器傳送:段寄存器傳送mov si,dsmov ax,es

26、;axesmov ds,ax;dsaxes 對(duì)段寄存器的操作有一些限制對(duì)段寄存器的操作有一些限制MOV指令傳送功能MOV并非任意傳送并非任意傳送立即數(shù)立即數(shù)段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存儲(chǔ)儲(chǔ)器器非法傳送種種 兩個(gè)操作數(shù)的類型不一致 例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反 兩個(gè)操作數(shù)不能都是存儲(chǔ)器 傳送指令很靈活,但主存之間的直接傳送卻不允許 段寄存器的操作有一些限制 段寄存器屬專用寄存器,對(duì)他們的操作能力有限兩個(gè)操作數(shù)的類型要一致 絕大多數(shù)雙操作數(shù)

27、指令,除非特別說明,目的操作數(shù)與源操作數(shù)必須類型一致,否則為非法指令MOV AL,050AH;非法指令:050Ah為字,而AL為字節(jié) 寄存器有明確的字節(jié)或字類型,有寄存器參與的指令其操作數(shù)類型就是寄存器的類型 對(duì)于存儲(chǔ)器單元與立即數(shù)同時(shí)作為操作數(shù)的情況,必須顯式指明;byte ptr指示字節(jié)類型,word ptr指示字類型兩個(gè)操作數(shù)不能都是存儲(chǔ)器 8086指令系統(tǒng)不允許兩個(gè)操作數(shù)都是存儲(chǔ)單元(除串操作指令),要實(shí)現(xiàn)這種傳送,可通過寄存器間接實(shí)現(xiàn)mov ax,buffer1;axbuffer1(將buffer1內(nèi)容送ax)mov buffer2,ax;buffer2ax;這里buffer1和bu

28、ffer2是兩個(gè)字變量;實(shí)際表示直接尋址方式要小心段寄存器的操作 不允許立即數(shù)傳送給段寄存器MOV DS,100H;非法指令:立即數(shù)不能傳送段寄存器 不允許直接改變CS值MOV CS,SI;不允許使用的指令 不允許段寄存器之間的直接數(shù)據(jù)傳送MOV DS,ES;非法指令:不允許段寄存器間傳送 進(jìn)棧指令:進(jìn)棧指令: PUSH SRC 執(zhí)行操作:執(zhí)行操作: (SP) (SP) 2 ( (SP)+1, (SP) ) (SRC) 出棧指令:出棧指令: POP DST 執(zhí)行操作:執(zhí)行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2堆棧:堆棧:先進(jìn)后出先進(jìn)后出的存儲(chǔ)區(qū),段地址

29、存放在的存儲(chǔ)區(qū),段地址存放在SSSS中,中, SP在任何時(shí)候都指向棧頂,進(jìn)出棧后自動(dòng)修改在任何時(shí)候都指向棧頂,進(jìn)出棧后自動(dòng)修改SPSP。 注意注意: * 堆棧操作必須以字為單位。堆棧操作必須以字為單位。 * 不影響標(biāo)志位不影響標(biāo)志位 * 不能用立即尋址方式不能用立即尋址方式 PUSH 1234H * DST不能是不能是CS POP CS 2)進(jìn)、出棧指令進(jìn)、出棧指令進(jìn)棧指令PUSHpush axpush axpush 2000hpush 2000hPUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/

30、seg出棧指令POPpop axpop axpop 2000hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2堆棧的特點(diǎn) 堆棧操作的單位是字,進(jìn)棧和出棧只對(duì)字量 字量數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié) 堆棧操作遵循先進(jìn)后出原則,但可用存儲(chǔ)器尋址方式隨機(jī)存取堆棧中的數(shù)據(jù) 堆棧常用來 臨時(shí)存放數(shù)據(jù) 傳遞參數(shù) 保存和恢復(fù)寄存器例:假設(shè)例:假設(shè) (AX) = 2107 H , 執(zhí)行執(zhí)行 PUSH AX* * * * *(SP)PUSH AX 執(zhí)行前執(zhí)行

31、前(SP)* * * * *07H07H21H21H低地址低地址 高地址高地址PUSH AX 執(zhí)行后執(zhí)行后進(jìn)棧方向進(jìn)棧方向(SP)* * * * *07H07H21H21HPOP BX 執(zhí)行執(zhí)行前前(SP)* * * * *07H07H21H21H低地址低地址 高地址高地址 POP BX 執(zhí)行后執(zhí)行后 (BX) = 2107H例:例: POP BX出棧方向出棧方向例例3.5:現(xiàn)場保護(hù)恢復(fù):現(xiàn)場保護(hù)恢復(fù)push ax;進(jìn)入子程序后push bxpush ds.pop ds;返回主程序前pop bxpop ax 交換指令:交換指令: XCHG OPR1, OPR2 執(zhí)行操作:執(zhí)行操作: (OPR1

32、) (OPR2)注意注意: * 不影響標(biāo)志位不影響標(biāo)志位 * 不允許使用不允許使用段寄存器段寄存器 例:例:XCHG BX, BP+SI XCHG AL, BH3)交換指令交換指令 XCHG 把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換 寄存器與寄存器之間對(duì)換數(shù)據(jù) 寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù) 不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)XCHG reg,reg/memXCHG reg,reg/mem;regreg reg/memreg/mem3)交換指令交換指令 XCHG例例3.6:寄存器間交換:寄存器間交換mov ax,1234h;ax=1234hmov bx,5678h;bx=5678hxchg ax,bx;ax=567

33、8h,bx=1234hxchg ah,al;ax=7856h例例3.7:寄存器與存儲(chǔ)器交換:寄存器與存儲(chǔ)器交換xchg ax,2000h;字交換;等同于 xchg 2000h,axxchg al,2000h ;字節(jié)交換;等同于 xchg 2000h,al 輸入指令輸入指令 IN (I/O CPU) 長格式:長格式: IN AL, PORT (字節(jié))(字節(jié)) IN AX, PORT (字)(字) 執(zhí)行操作:執(zhí)行操作:(AL) ( PORT ) (字節(jié))(字節(jié)) (AX) ( PORT+1, PORT )(字)(字) 短格式:短格式: IN AL, DX (字節(jié))(字節(jié)) IN AX, DX (字

34、)(字) 執(zhí)行操作:執(zhí)行操作:(AL) ( (DX) ) (字節(jié))(字節(jié)) (AX) ( (DX)+1, (DX) )(字)(字) 2、 累加器專用傳送指令(只限使用累加器專用傳送指令(只限使用AX或或AL)輸出指令輸出指令 OUT (CPU I/O)長格式:長格式: OUT PORT, AL (字節(jié))(字節(jié)) OUT PORT, AX (字)(字)執(zhí)行操作:執(zhí)行操作:( PORT ) (AL) (字節(jié))(字節(jié)) ( PORT+1, PORT ) (AX)(字)(字)短格式:短格式: OUT DX, AL (字節(jié))(字節(jié)) OUT DX, AX (字)(字)執(zhí)行操作:執(zhí)行操作:( (DX) )

35、 (AL) (字節(jié))(字節(jié)) ( (DX)+1, (DX) ) (AX)(字)(字)注意注意: * 不影響標(biāo)志位不影響標(biāo)志位* 前前256個(gè)端口號(hào)個(gè)端口號(hào)00HFFH可直接在指令中指定(長格式)可直接在指令中指定(長格式)* 如果如果端口號(hào)端口號(hào) 256,端口號(hào)端口號(hào) DX(短格式)(短格式)例:例: IN AX, 28H IN AX, 28H MOV DATA_WORD, AX MOV DATA_WORD, AX例:例: MOV DX, 3FCHMOV DX, 3FCH IN AX, DX IN AX, DX例:例: OUT 5, ALOUT 5, AL例:測試某狀態(tài)寄存器(端口號(hào)例:測試某

36、狀態(tài)寄存器(端口號(hào)27H27H)的第)的第2 2位是否為位是否為1 1 IN AL, 27H IN AL, 27H TEST AL, 00000100B TEST AL, 00000100B JNZ ERROR JNZ ERROR ;若第2位為1,轉(zhuǎn)ERROR處理例:例:Sound程序程序 mov dxmov dx, 100, 100 in al, 61h in al, 61h and al,11111100b and al,11111100bsoundsound: xorxor al, 2 ; al, 2 ; 1 0 11 0 1 out 61h, al out 61h, al ;ON OF

37、F ONON OFF ON mov cx mov cx, 140h , 140h ;脈寬;脈寬( (發(fā)聲時(shí)間間隔發(fā)聲時(shí)間間隔) )Wait1Wait1: loop wait1loop wait1 dec dx dec dx jne jne sound sound設(shè)備控制寄存器設(shè)備控制寄存器端口端口61H1 / 0 0 控制其它外部設(shè)備控制其它外部設(shè)備與門與門放大器放大器2號(hào)定時(shí)器門控號(hào)定時(shí)器門控1 0 換碼指令執(zhí)行前:在主存建立一個(gè)字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址存放于BX,AL存放相對(duì)表格首地址的位移量 換碼指令執(zhí)行后:將AL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼3. 換碼指令XLAT(tr

38、anslate) 將BX指定的緩沖區(qū)中、AL指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給ALXLATXLAT;alds:bx+alalds:bx+al (BX) 30 H F004031 H F0041 (AL) = 3 32 H F0042 33 H F0043TABLE(DS)=F000H換碼指令:換碼指令:XLAT 或或XLAT OPR執(zhí)行操作:執(zhí)行操作:(AL) ( (BX) + (AL) )例:例:MOV BX, OFFSET TABLE ; (BX)=0040H MOV AL, 3 XLAT TABLE 指令執(zhí)行后指令執(zhí)行后 (AL)=33H注意注意: * 不影響標(biāo)志位不影響標(biāo)志位* 字節(jié)表

39、格字節(jié)表格(長度不超過長度不超過256) 首地址首地址 (BX)* 需轉(zhuǎn)換的代碼位移量需轉(zhuǎn)換的代碼位移量 (AL) 4、地址傳送指令 地址傳送指令將存儲(chǔ)器單元的邏輯地址送至指定的寄存器 有效地址傳送指令 LEA 指針傳送指令 LDS和LES 注意不是獲取存儲(chǔ)器單元的內(nèi)容 有效地址送寄存器指令:有效地址送寄存器指令: LEA REG, SRC 執(zhí)行操作:執(zhí)行操作: (REG) SRC 指針?biāo)图拇嫫骱椭羔標(biāo)图拇嫫骱虳S指令:指令: LDS REG, SRC 執(zhí)行操作:執(zhí)行操作: (REG) (SRC) (DS) (SRC+2) 相繼二字相繼二字 寄存器寄存器、DS 指針?biāo)图拇嫫骱椭羔標(biāo)图拇嫫骱虴S

40、指令:指令: LES REG, SRC 執(zhí)行操作:執(zhí)行操作: (REG) (SRC) (ES) (SRC+2) 相繼二字相繼二字 寄存器寄存器、ES 有效地址傳送指令LEA(load EA) 將存儲(chǔ)器操作數(shù)的有效地址傳送至指定的16位寄存器中LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEA例例3.7:獲取有效地址:獲取有效地址mov bx,0400hmov si,3chlea bx,bx+si+0f62h;BX0400h003ch0f62h139EH 獲得主存單元的有效地址;不是物理地獲得主存單元的有效地址;不是物理地址,也不是該單元的內(nèi)容址,

41、也不是該單元的內(nèi)容 可以實(shí)現(xiàn)計(jì)算功能可以實(shí)現(xiàn)計(jì)算功能指針傳送指令LDS r16,mem;r16mem,;DSmem+2 LDS指令將主存中mem指定的字送至r16,并將mem的下一字送DS寄存器LES r16,mem;r16mem,;ESmem+2 LES指令將主存中mem指定的字送至r16,并將mem的下一字送ES寄存器例例3.8:地址指針傳送:地址指針傳送mov word ptr 3060h,0100hmov word ptr 3062h,1450hles di,3060h ;es=1450h,di=0100hlds si,3060h ;ds=1450h,si=0100h memmem指定

42、主存的連續(xù)指定主存的連續(xù)4 4個(gè)字節(jié)作為邏輯個(gè)字節(jié)作為邏輯地址(地址(3232位的地址指針),送入位的地址指針),送入DS:r16DS:r16或或ES:r16ES:r16例:例:LEA BX, BX+SI+0F62H LDS SI, 10H LES DI, BX40 H00 H00 H30 H TABLE(DS):1000HMOV BX, TABLE ; (BX)=0040HMOV BX, OFFSET TABLE ; (BX)=1000HLEA BX, TABLE ; (BX)=1000HLDS BX, TABLE ; (BX)=0040H ; (DS)=3000HLES BX, TABLE

43、 ; (BX)=0040H ; (ES)=3000H注意注意: * 不影響標(biāo)志位不影響標(biāo)志位 * REG 不能是不能是段寄存器段寄存器 * SRC 必須為存儲(chǔ)器尋址方式必須為存儲(chǔ)器尋址方式 標(biāo)志送標(biāo)志送AH指令:指令: LAHF 執(zhí)行操作:執(zhí)行操作: (AH) (FLAGS的低字節(jié)的低字節(jié)) AH送標(biāo)志寄存器指令:送標(biāo)志寄存器指令: SAHF 執(zhí)行操作:執(zhí)行操作: (FLAGS的低字節(jié)的低字節(jié)) (AH) 標(biāo)志進(jìn)棧指令:標(biāo)志進(jìn)棧指令: PUSHF 執(zhí)行操作:執(zhí)行操作: (SP) (SP) - 2 ( (SP)+1, (SP) ) (FLAGS) 標(biāo)志出棧標(biāo)志出棧指令:指令: POPF 執(zhí)行操作

44、:執(zhí)行操作: (FLAGS) ( (SP)+1, (SP) ) (SP) (SP) + 2* 影響標(biāo)志位影響標(biāo)志位5 、標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令 CBW AL AX 執(zhí)行操作:執(zhí)行操作: 若若(AL)的最高有效位為的最高有效位為0,則,則(AH)= 00H 若若(AL)的最高有效位為的最高有效位為1,則,則(AH)= FFH CWD AX (DX,AX) 執(zhí)行操作:若執(zhí)行操作:若(AX)的最高有效位為的最高有效位為0,則,則(DX)= 0000H 若若(AX)的最高有效位為的最高有效位為1,則,則(DX)= FFFFH 例:例:(AX) = 0BA45H CBW ; (AX)=00

45、45H CWD ; (DX)=0FFFFH (AX)=0BA45H注意注意: * 無操作數(shù)指令無操作數(shù)指令 * 隱含對(duì)隱含對(duì)AL 或或AX 進(jìn)行符號(hào)擴(kuò)展進(jìn)行符號(hào)擴(kuò)展 * 不影響不影響條件標(biāo)志位條件標(biāo)志位6、 符號(hào)擴(kuò)展指令符號(hào)擴(kuò)展指令 加法指令加法指令 ADD、ADC、INC 減法指令減法指令 SUB、SBB、DEC、NEG、CMP 乘法指令乘法指令 MUL、IMUL 除法指令除法指令 DIV、IDIV 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令 DAA、DAS、 AAA、AAS、AAM、AAD3.3.2算術(shù)指令:算術(shù)指令: 加法指令:加法指令: ADD DST, SRC 執(zhí)行操作:執(zhí)行操作: (DST) (

46、SRC) + (DST) 帶進(jìn)位加法指令:帶進(jìn)位加法指令: ADC DST, SRC 執(zhí)行操作:執(zhí)行操作: (DST) (SRC) + (DST) + CF 加加1指令:指令: INC OPR 執(zhí)行操作:執(zhí)行操作: (OPR) (OPR) + 1注意注意: * 除除INC指令指令不影響不影響CF標(biāo)志外,均對(duì)條件標(biāo)志位有影響。標(biāo)志外,均對(duì)條件標(biāo)志位有影響。1 、 加法指令加法指令例:雙精度數(shù)的加法例:雙精度數(shù)的加法 (DX) = 0002H (AX) = 0F365H (BX) = 0005H (CX) = 8100H 指令序列指令序列 ADD AX, CX ; (1) ADC DX, BX ;

47、 (2) (1) 執(zhí)行后,執(zhí)行后,(AX) = 7465H CF=1 OF=1 SF=0 ZF=0 (2) 執(zhí)行后,執(zhí)行后,(DX) = 0008H CF=0 OF=0 SF=0 ZF=0減法指令:減法指令: SUB DST, SRC 執(zhí)行操作:執(zhí)行操作: (DST) (DST) - (SRC)帶借位減法指令:帶借位減法指令: SBB DST, SRC 執(zhí)行操作:執(zhí)行操作: (DST) (DST) - (SRC) - CF減減1指令:指令: DEC OPR 執(zhí)行操作:執(zhí)行操作: (OPR) (OPR) - 1求補(bǔ)指令:求補(bǔ)指令: NEG OPR 執(zhí)行操作:執(zhí)行操作: (OPR) - (OPR)

48、比較指令:比較指令: CMP OPR1, OPR2 執(zhí)行操作:執(zhí)行操作: (OPR1) - (OPR2)注意注意: * 除除DEC指令指令不影響不影響 CF標(biāo)志外,均對(duì)條標(biāo)志外,均對(duì)條 件標(biāo)志位有影響。件標(biāo)志位有影響。2、減法指令、減法指令例:例:x、y、z 均為雙精度數(shù),分別存放在地址為均為雙精度數(shù),分別存放在地址為X, X+2; Y, Y+2;Z, Z+2的存儲(chǔ)單元中,用指令序列實(shí)現(xiàn)的存儲(chǔ)單元中,用指令序列實(shí)現(xiàn) w x + y + 24 - z ,并用,并用W, W+2單元存放單元存放wMOV AX, XMOV AX, XMOV DX, X+2MOV DX, X+2ADD AX, YADD

49、 AX, YADC DX, Y+2ADC DX, Y+2 ; x+y ; x+yADD AX, 24ADD AX, 24ADC DX, 0ADC DX, 0 ; x+y+24 ; x+y+24SUB AX, ZSUB AX, ZSBB DX, Z+2SBB DX, Z+2 ; x+y+24-z ; x+y+24-zMOV W, AXMOV W, AXMOV W+2, DX ; MOV W+2, DX ; 結(jié)果存入結(jié)果存入W, W+2W, W+2單元單元 無符號(hào)數(shù)乘法指令:無符號(hào)數(shù)乘法指令: MUL SRC 帶符號(hào)數(shù)乘法指令:帶符號(hào)數(shù)乘法指令: IMUL SRC 執(zhí)行操作:執(zhí)行操作: 字節(jié)操作數(shù)

50、字節(jié)操作數(shù) (AX) (AL) * (SRC) 字操作數(shù)字操作數(shù) (DX, AX) (AX) * (SRC)注意注意: * * AL (AX) AL (AX) 為隱含的乘數(shù)寄存器。為隱含的乘數(shù)寄存器。* * AX (DX,AX) AX (DX,AX) 為隱含的乘積寄存器。為隱含的乘積寄存器。* * SRC SRC不能為立即數(shù)。不能為立即數(shù)。* * 除除CFCF和和OFOF外,對(duì)條件標(biāo)志位無定義外,對(duì)條件標(biāo)志位無定義。3、乘法指令、乘法指令乘法指令對(duì)乘法指令對(duì) CF/OF 的影響:的影響:例:例:(AX) = 16A5H,(BX) = 0611H (1) IMUL BL ; (AX) (AL)

51、* (BL) ; A5*11 5B*11=060B F9F5 ; (AX) = 0F9F5H CF=OF=1 (2) MUL BX ; (DX, AX) (AX) * (BX) ; 16A5*0611=0089 5EF5 ; (DX)=0089H (AX)=5EF5H CF=OF=1 -128 * - 128-32767 0 ,0 乘積的高一半為零乘積的高一半為零 1, 1 否則否則MUL指令指令: CF,OF =0,0 乘積的高一半是低一半的符號(hào)擴(kuò)展乘積的高一半是低一半的符號(hào)擴(kuò)展1,1 否則否則 IMUL指令指令: CF,OF =1010 01010101 1011 無符號(hào)數(shù)除法指令:無符號(hào)

52、數(shù)除法指令: DIV SRC 帶符號(hào)數(shù)除法指令:帶符號(hào)數(shù)除法指令: IDIV SRC 執(zhí)行操作:執(zhí)行操作: 字節(jié)操作字節(jié)操作 (AL) (AX) / (SRC) 的商的商 (AH) (AX) / (SRC) 的余數(shù)的余數(shù) 字操作字操作 (AX) (DX, AX) / (SRC) 的商的商 (DX) (DX, AX) / (SRC) 的余數(shù)的余數(shù)注意注意: * * AX (DX,AX) AX (DX,AX) 為隱含的被除數(shù)寄存器。為隱含的被除數(shù)寄存器。 * * AL (AX) AL (AX) 為隱含的商寄存器。為隱含的商寄存器。 * * AH (DX) AH (DX) 為隱含的余數(shù)寄存器。為隱含

53、的余數(shù)寄存器。 * * SRC SRC不能為立即數(shù)。不能為立即數(shù)。 * * 對(duì)所有條件標(biāo)志位均無定義。對(duì)所有條件標(biāo)志位均無定義。如何判別結(jié)果有效?如何判別結(jié)果有效?4 、除法指令、除法指令例:例:x , y , z , v 均為均為16位帶符號(hào)數(shù),計(jì)算位帶符號(hào)數(shù),計(jì)算 ( v - ( x*y + z 540 ) ) / xMOV AX, X MOV AX, X IMUL Y ; xIMUL Y ; x* *y y (DX,AXDX,AX)MOV CX, AXMOV CX, AXMOV BX, DXMOV BX, DXMOV AX, ZMOV AX, ZCWD CWD ;Z Z (DXDX,AX

54、AX)ADD CX, AXADD CX, AXADC BX, DXADC BX, DX ; x ; x* *y+z y+z (BXBX,CXCX)SUB CX, 540 SUB CX, 540 SBB BX, 0SBB BX, 0 ; x ; x* *y+z-540y+z-540MOV AX, VMOV AX, VCWDCWD ;V V (DXDX,AXAX)SUB AX, CXSUB AX, CXSBB DX, BX ; v-(xSBB DX, BX ; v-(x* *y+z-540)y+z-540)IDIV X ; (v-(xIDIV X ; (v-(x* *y+z-540)/xy+z-5

55、40)/x(AXAX) 余數(shù)余數(shù) (DXDX)(1)壓縮的)壓縮的BCD碼調(diào)整指令碼調(diào)整指令 DAA 加法的十進(jìn)制調(diào)整指令加法的十進(jìn)制調(diào)整指令 DAS 減法的十進(jìn)制調(diào)整指令減法的十進(jìn)制調(diào)整指令 (2)非壓縮的)非壓縮的BCD碼調(diào)整指令碼調(diào)整指令 AAA 加法的加法的ASCII碼調(diào)整指令碼調(diào)整指令 AAS 減法的減法的ASCII碼調(diào)整指令碼調(diào)整指令 AAM 乘法的乘法的ASCII碼調(diào)整指令碼調(diào)整指令 AAD 除法的除法的ASCII碼調(diào)整指令碼調(diào)整指令本部分不做要求本部分不做要求壓縮壓縮BCD運(yùn)算舉例:運(yùn)算舉例:(1) MOV AL, BCD1 ; BCD1=34H ADD AL, BCD2 ;

56、BCD2=59H, (AL)=8DH DAA ; 8DH+06H=93H MOV BCD3, AL ; BCD3=93H(2) MOV AL, BCD1 ; BCD1=34H SUB AL, BCD2 ; BCD2=59H , (AL)=0DBH DAS ; 0DBH60H06H=75H MOV BCD3, AL ; BCD3= 75 = - 25 (10n補(bǔ)碼)補(bǔ)碼)非壓縮非壓縮BCD運(yùn)算舉例:運(yùn)算舉例:(1) MUL BL ; (AX)=(AL)(BL)=08 09 AAM ; (AL)/0AH= 48H /0AH 0702(2)AAD ; (AX) (AH) 0AH+(AL)=48H D

57、IV BL ; (AL) = (AX)/(BL)=48H/4=12H AAM ; (AL)/0AH=12H/0AH=0108 邏輯運(yùn)算指令邏輯運(yùn)算指令 AND、OR、NOT、XOR、TEST 循環(huán)、循環(huán)、移位指令移位指令 SHL、SHR 、 SAL 、SAR、 ROL、ROR、RCL、RCR3.3.3邏輯運(yùn)算指令邏輯運(yùn)算指令3.3.4移位與循環(huán)移位指令移位與循環(huán)移位指令邏輯非指令邏輯非指令:NOT OPR * OPR不能為不能為立即數(shù)立即數(shù)執(zhí)行操作:執(zhí)行操作: (OPR) (OPR) * 不影響標(biāo)志位不影響標(biāo)志位 邏輯與指令邏輯與指令:AND DST, SRC執(zhí)行操作:執(zhí)行操作: (DST)

58、(DST) (SRC)邏輯或指令邏輯或指令:OR DST, SRC執(zhí)行操作:執(zhí)行操作: (DST) (DST) (SRC)異或指令異或指令: XOR DST, SRC執(zhí)行操作:執(zhí)行操作: (DST) (DST) (SRC)測試指令測試指令: TEST OPR1, OPR2執(zhí)行操作:執(zhí)行操作: (OPR1) (OPR2)CF OF SF ZF PF AF 0 0 * * * 無定義無定義 根據(jù)運(yùn)算結(jié)果設(shè)置根據(jù)運(yùn)算結(jié)果設(shè)置1 邏輯運(yùn)算指令邏輯運(yùn)算指令例:屏蔽例:屏蔽AL的第的第0、1兩位兩位 AND AL, 0FCH例:置例:置AL的第的第5位為位為1 OR AL, 20H 例:使例:使AL的第的

59、第0、1位變反位變反 XOR AL, 3例:測試某些位是例:測試某些位是0是是1 TEST AL, 1 JZ EVEN * * * * * * * * OR 0 0 1 0 0 0 0 0 * * 1 * * * * * * * * * * * 0 1 XOR 0 0 0 0 0 0 1 1 * * * * * * 1 0 * * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0 * * * * * * * * AND 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 *邏輯左移邏輯左移 SHL OPR, CNT邏輯右移邏輯右移 SHR

60、OPR, CNT算術(shù)左移算術(shù)左移 SAL OPR, CNT(同邏輯左移)(同邏輯左移)算術(shù)右移算術(shù)右移 SAR OPR, CNT CF 0 0 CFCF2邏輯、算術(shù)移位指令邏輯、算術(shù)移位指令循環(huán)左移循環(huán)左移 ROL OPR, CNT循環(huán)右移循環(huán)右移 ROR OPR, CNT帶進(jìn)位循環(huán)左移帶進(jìn)位循環(huán)左移 RCL OPR, CNT帶進(jìn)位循環(huán)右移帶進(jìn)位循環(huán)右移 RCR OPR, CNTCF CFCFCF3循環(huán)移位注意注意: * OPR可用除可用除立即數(shù)立即數(shù)以外的任何尋址方式以外的任何尋址方式 * CNT=1,SHL OPR, 1 CNT1,MOV CL, CNT SHL OPR, CL ; 以以S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論