版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,第三章 尋址方式與指令系統(tǒng),2,3.1 概述,3,了解:,指令及指令系統(tǒng); 指令的格式; 指令中的操作數(shù)類型; 指令字長(zhǎng)與機(jī)器字長(zhǎng); 指令的執(zhí)行時(shí)間,4,一、指令與指令系統(tǒng),指令: 控制計(jì)算機(jī)完成某種操作的命令 指令系統(tǒng): 處理器所能識(shí)別的所有指令的集合 指令的兼容性: 同一系列機(jī)的指令都是兼容的。,5,二、指令格式,指令中應(yīng)包含的信息:,運(yùn)算數(shù)據(jù)的來(lái)源 運(yùn)算結(jié)果的去向 執(zhí)行的操作,6,指令格式,標(biāo)號(hào): 操作碼 操作數(shù),操作數(shù);注釋,執(zhí)行何種操作,目標(biāo)操作數(shù),源操作數(shù),參加操作的數(shù)據(jù)或數(shù)據(jù)存放的地址,符號(hào)地址,程序注釋,7,指令格式:,零操作數(shù)指令: 操作碼 單操作數(shù)指令: 操作碼 操作數(shù)
2、 雙操作數(shù)指令: 操作碼 操作數(shù),操作數(shù) 多操作數(shù)指令: 三操作數(shù)及以上,8,三、指令中的操作數(shù),立即數(shù) 寄存器 存儲(chǔ)器,表征參加操作的數(shù)據(jù)本身,表征數(shù)據(jù)存放的地址,9,立即數(shù)操作數(shù),立即數(shù)本身是參加操作的數(shù)據(jù),可以是8位或16位,只能作為源操作數(shù)。 例: MOV AX,1234H MOV BL,22H 立即數(shù)無(wú)法作為目標(biāo)操作數(shù) 立即數(shù)可以是無(wú)符號(hào)或帶符號(hào)數(shù),其數(shù)值應(yīng)在可取值范圍內(nèi)。,10,寄存器操作數(shù):,參加運(yùn)算的數(shù)存放在指令給出的寄存器中,可以是16位或8位。 例: MOV AX,BX MOV DL,CH,11,存儲(chǔ)器操作數(shù),參加運(yùn)算的數(shù)存放在存儲(chǔ)器的某一個(gè)或某兩個(gè)單元中。 表現(xiàn)形式: ,
3、立即數(shù)或寄存器, 中的內(nèi)容是存放所尋找數(shù)據(jù)的單元的偏移地址,12,存儲(chǔ)器操作數(shù)例,例: MOV AX,1200H MOV AL,1200H,22H,11H,1200H,偏移地址,AH AL,13,四、指令字長(zhǎng),指令字長(zhǎng): 由操作碼的長(zhǎng)度、操作數(shù)地址長(zhǎng)度、操作數(shù)個(gè)數(shù)決定。,14,五、指令的執(zhí)行速度,指令的字長(zhǎng)影響指令的執(zhí)行速度 對(duì)不同的操作數(shù),指令執(zhí)行的時(shí)間不同: 存儲(chǔ)器,快!,立即數(shù),寄存器,15,3.2 尋址方式,16,尋址方式,尋找操作數(shù)所在地址的方法 尋找轉(zhuǎn)移地址的方法,本節(jié),17,尋址方式,操作數(shù)可能的來(lái)源或存放處: 由指令直接給出 寄存器 內(nèi)存單元 尋找操作數(shù)所在地址的方法可以有三種
4、大類型 指令直接給出的方式 存放于寄存器中的尋址方式 存放于存儲(chǔ)器中的尋址方式,18,一、立即尋址,指令中的源操作數(shù)是立即數(shù),即源操作數(shù)是參加操作的數(shù)據(jù)本身 例:MOV AX,1200H,12H,00H,AH AL,MOV,代碼段,立即尋址僅適合于源操作數(shù),19,二、寄存器尋址,參加操作的操作數(shù)在CPU的通用寄存器中。 例:MOV AX,BX,AX,BX,20,三、直接尋址,指令中直接給出操作數(shù)的偏移地址 默認(rèn)在數(shù)據(jù)段 例:MOV AX,1200H,22H,11H,1200H,偏移地址,數(shù)據(jù)段,AH AL,21,直接尋址,直接尋址方式下,操作數(shù)的段地址默認(rèn)為數(shù)據(jù)段,但允許段重設(shè),即由指令定義段
5、。 例:MOV AX,ES:1200H,物理地址 =段地址X16+有效地址 =(DS) X16+EA,22,直接尋址 寄存器間接尋址 寄存器相對(duì)尋址 寄存器比例尋址 基址變址尋址 基址變址相對(duì)尋址,存儲(chǔ)器尋址,物理地址=段地址X16+有效地址(EA),存儲(chǔ)器尋址方式,23,四、寄存器間接尋址,參與操作的操作數(shù)存放在內(nèi)存中,其偏移地址為指令中的寄存器的內(nèi)容。,24,寄存器間接尋址例,例:MOV AX,BX 設(shè)BX=1200H,22H,11H,1200H,偏移地址,AH AL,11 22,數(shù)據(jù)段,代碼段,MOV,25,寄存器間接尋址,由寄存器間接給出操作數(shù)的偏移地址; 存放偏移地址的寄存器稱為間址
6、寄存器,它們是:BX,BP,SI,DI 操作數(shù)的段地址(數(shù)據(jù)處于哪個(gè)段)取決于選擇哪一個(gè)間址寄存器: BX,SI,DI BP,默認(rèn)在數(shù)據(jù)段,默認(rèn)在堆棧段,26,寄存器間接尋址,寄存器 間接尋址,基址尋址(間址寄存器為基址寄存 器BX,BP) 變址尋址(間址寄存器為變址寄存 器SI,DI),物理地址=(DS)X16+(SI/DI/BX)或(SS) X16+(BP),書寫時(shí)對(duì)間接尋址的寄存器加上中括號(hào),如:BP,27,五、寄存器相對(duì)尋址,操作數(shù)的偏移地址為寄存器的內(nèi)容加上一個(gè)位移量 例: MOV AX,BX+DATA 設(shè):DS=2000H,BX=0220H,DATA=05H 則:AX=20225H
7、,操作數(shù)物理地址 =(DS)X16+(SI/DI/BX)+8位或16位偏移量 或=(SS) X16+(BP)+ 8位或16位偏移量,28,六、基址、變址尋址,操作數(shù)的偏移地址為 一個(gè)基址寄存器的內(nèi)容 + 一個(gè)變址寄存器的內(nèi)容; 操作數(shù)的段地址由選擇的基址寄存器決定 基址寄存器為BX,默認(rèn)在數(shù)據(jù)段 基址寄存器為BP,默認(rèn)在堆棧段 基址變址尋址方式與相對(duì)尋址方式一樣,主要用于一維數(shù)組操作。,29,操作數(shù)物理地址 =(DS)X16+(BX)+(SI/DI) 或=(SS) X16+(BP)+(SI/DI),30,例:,執(zhí)行下列指令: MOV SI,1100H MOV BX,SI MOV AX,BX+S
8、I,22H,11H,2200H,偏移地址,AH AL,11 22,數(shù)據(jù)段,31,七、基址、變址、相對(duì)尋址,操作數(shù)的偏移地址為: 基址寄存器內(nèi)容+變址寄存器內(nèi)容+位移量 操作數(shù)的段地址由選擇的基址寄存器決定。 基址變址相對(duì)尋址方式主要用于二維表格操作。,操作數(shù)物理地址 =(DS)X16+(BX)+(SI/DI)+8位或16位偏移量 或=(SS) X16+(BP)+(SI/DI)+8位或16位偏移量,32,例:,執(zhí)行以下程序段: MOV DI,1100H MOV BP,DI MOV AL,BPDI5,22H,11H,2205H,偏移地址,AL,22,堆棧段,33,八、寄存器比例尋址,變址寄存器的內(nèi)
9、容乘上比例因子,再加上偏移量,稱為比例變址方式 變址寄存器的內(nèi)容乘上比例因子,再加上基址寄存器的內(nèi)容,稱為基址比例變址方式 變址寄存器的內(nèi)容乘上比例因子,再加上基址寄存器的內(nèi)容和位移量,稱為基址比例變址偏移方式。 例: MUL BL 指令執(zhí)行:ALBL,AX,34,九、隱含尋址,指令中隱含了一個(gè)或兩個(gè)操作數(shù)的地址,即操作數(shù)在默認(rèn)的地址中。 例: MUL BL 指令執(zhí)行: ALBL,AX,35,3.2 8086指令系統(tǒng),36,掌握:,指令碼的含義 指令對(duì)操作數(shù)的要求 指令的對(duì)標(biāo)志位的影響 指令的功能,37,8086指令系統(tǒng),從功能上包括六大類:,數(shù)據(jù)傳送 算術(shù)運(yùn)算 邏輯運(yùn)算和移位 串操作 程序控
10、制 處理器控制,38,八位寄存器: AH,AL,BH,H,BL,CH,CL,DH,DL 十六位通用寄存器: AX,BX,CX,DX,SP,BP,SI,DI 堆棧指針 SP 指令指針 IP(或PC) 標(biāo)志位Flags 目的和源變址寄存器DI, SI 段寄存器CS, DS, ES, SS 通用寄存器r AL或AX(取決于操作數(shù)長(zhǎng)度) acc,介紹指令系統(tǒng)使用的符號(hào):,39,src , dest源,目的操作數(shù)(下列尋址方式都可以用) BX+SI+n,BX+DI+n,BP+SI+n,BP+DI+n SI+n,DI+n, BP+n, BX+n N,r 存儲(chǔ)器單元的內(nèi)容(正常在數(shù)據(jù)段) ES: 附加存儲(chǔ)器
11、段的內(nèi)容 OPRD 操作數(shù) Seg 段寄存器(CS,DS,ES,SS) i m 立即數(shù) (n 8位, nn 16位, nnnn 32位 ),40,8086/8088指令助記符表 (自學(xué)),41,8086/8088指令助記符表(續(xù)),42,數(shù)據(jù)傳送指令,通用數(shù)據(jù)傳送 輸入輸出 地址傳送 標(biāo)志位操作,43,一、通用數(shù)據(jù)傳送,一般數(shù)據(jù)傳送指令 堆棧操作指令 交換指令 查表轉(zhuǎn)換指令 字位擴(kuò)展指令,特點(diǎn): 該類指令的執(zhí)行對(duì)標(biāo)志位不產(chǎn)生影響,44,1. 一般數(shù)據(jù)傳送指令,一般數(shù)據(jù)傳送指令 MOV 格式: MOV dest,src 操作: src 例: MOV AL,BL,dest,45,一般數(shù)據(jù)傳送指令,
12、注意點(diǎn): 兩操作數(shù)字長(zhǎng)必須相同; 兩操作數(shù)不允許同時(shí)為存儲(chǔ)器操作數(shù); 兩操作數(shù)不允許同時(shí)為段寄存器; 在源操作數(shù)是立即數(shù)時(shí),目標(biāo)操作數(shù)不能是段寄存器; IP和CS不作為目標(biāo)操作數(shù),F(xiàn)LAGS一般也不作為操作數(shù)在指令中出現(xiàn)。,46,一般數(shù)據(jù)傳送指令例,判斷下列指令的正確性: MOV AL,BX MOV AX,SI+05H MOV BXBP,BX MOV DS,1000H MOV DX,09H MOV 1200,SI,位數(shù)不一致 正確 BX/BP不能配對(duì) 立即數(shù)不能直接傳送給段寄存器 位數(shù)不一致 不能同為存儲(chǔ)器,47,一般數(shù)據(jù)傳送指令應(yīng)用例,將(*)的ASCII碼2AH送入內(nèi)存數(shù)據(jù)段1000H開始
13、的100個(gè)單元中。 題目分析: 確定首地址 確定數(shù)據(jù)長(zhǎng)度 寫一次數(shù)據(jù) 修改單元地址 修改長(zhǎng)度值 判斷寫完否? 未完繼續(xù)寫入,否則結(jié)束,1063H,100B,1000H,2AH,數(shù)據(jù)段,2AH,2AH,2AH,48,一般數(shù)據(jù)傳送指令應(yīng)用例,程序段: MOV DI,1000H MOV CX,64H MOV AL,2AH AGAIN:MOV DI,AL INC DI ;DI+1 DEC CX ;CX-1 JNZ AGAIN ;CX0則繼續(xù) HLT,49,2. 堆棧操作指令,掌握: 有關(guān)堆棧的概念 棧頂、棧首、棧底 堆棧指令的操作原理 執(zhí)行過(guò)程,執(zhí)行結(jié)果,50,堆棧操作的原則,先進(jìn)后出 以字為單位,5
14、1,堆棧操作指令,壓棧指令 PUSH 格式: PUSH OPRD 出棧指令 POP 格式: POP OPRD,16位寄存器或 存儲(chǔ)器兩單元,16位寄存器或 存儲(chǔ)器兩單元,52,壓棧指令 PUSH,指令執(zhí)行過(guò)程: SP - 2 SP 操作數(shù)高字節(jié) SP+1 操作數(shù)低字節(jié) SP,SP,堆棧段,SP,高8位,低8位,53,壓棧指令的操作,設(shè)AX=1234H,SP=1200H 執(zhí)行 PUSH AX 指令后堆棧區(qū)的狀態(tài):,1200H,堆棧段,SP-2=11FEH,12H,34H,1200H,堆棧段,12H 34H,AX,入棧后,入棧前,54,出棧指令POP,指令執(zhí)行過(guò)程: SP SP+1 SP SP+2
15、,操作數(shù)低字節(jié),操作數(shù)高字節(jié),SP,堆棧段,SP,高8位,低8位,55,出棧指令的操作,執(zhí)行 POP AX,12H,34H,11FEH,堆棧段,代碼段,PUSH,12 34,AX,SP+2,1200H,出棧后,出棧前,56,堆棧操作指令說(shuō)明,指令的操作數(shù)必須是16位的; 操作數(shù)可以是寄存器或存儲(chǔ)器兩單元,但不能是立即數(shù); 不能從棧頂彈出一個(gè)字給CS; PUSH和POP指令在程序中一般成對(duì)出現(xiàn); PUSH指令的操作方向是從高地址向低地址,而POP指令的操作正好相反。,57,堆棧操作指令例,MOV AX,1234H MOV SP,AX MOV BX,5678H MOV BX,AH MOV BX+1
16、,BL PUSH AX PUSH BX PUSH WORD PTRBX POP WORD PTRBX POP AX POP BX,如此,會(huì)使AX和BX的內(nèi)容互換,58,3. 交換指令,格式: XCHG REG,MEM/REG 注: 兩操作數(shù)必須有一個(gè)是寄存器操作數(shù) 不允許使用段寄存器。 例: XCHGAX,BX XCHG2000,CL,59,4. 換碼指令(查表指令),格式: XLAT 說(shuō)明: 用BX的內(nèi)容代表表格首地址,AL內(nèi)容為表內(nèi)位移量,BX+AL得到要查找元素的偏移地址 操作: 將BX+AL所指單元的內(nèi)容送AL,60,查表指令例,數(shù)據(jù)段中存放有一 張ASCII碼轉(zhuǎn)換表, 設(shè)首地址為20
17、00H, 現(xiàn)欲查出表中第11 個(gè)代碼的ASCII碼,30,31,32,.,39,41,42,.,45,46,2000H+0,2000H+11,0,1,2,9,A,B,E,F,61,查表指令例,可用如下指令實(shí)現(xiàn): MOV BX,2000H ;BX表首地址 MOV AL,0BH ;AL序號(hào) XLAT ;查表轉(zhuǎn)換 執(zhí)行后:AL = 42H 還可用其他方法實(shí)現(xiàn),如: MOV BX,2000H MOV AL,BX+0BH,62,二、輸入輸出指令,掌握: 指令的格式及操作 指令的兩種尋址方式 指令對(duì)操作數(shù)的要求,63,輸入輸出指令,專門面向I/O端口操作的指令 指令格式: 輸入指令: IN acc,POR
18、T 輸出指令 :OUT PORT,acc,端口地址,64,指令尋址方式,根據(jù)端口地址碼的長(zhǎng)度,指令具有兩種不同的端口地址表現(xiàn)形式。 直接尋址 端口地址為8位時(shí),指令中直接給出8位端口地址; 尋址256個(gè)端口。 間接尋址 端口地址為16位時(shí),指令中的端口地址必須由DX指定; 可尋址64K個(gè)端口。,65,I/O指令例,IN AX,80H MOV DX,2400H IN AL,DX OUT 35H ,AX OUT AX,35H,66,三、地址傳送指令,取偏移地址指令LEA 地址指針傳送指令 *指針?biāo)图拇嫫骱虳S指令LDS *指針?biāo)图拇嫫骱虴S指令LES,67,取偏移地址指令LEA,操作: 將變量的1
19、6位偏移地址取出送目標(biāo)寄存器 當(dāng)程序中用符號(hào)地址表示內(nèi)存偏移地址時(shí),須使用該指令。 格式: LEA REG,MEM 指令要求: 源操作數(shù)必須是一個(gè)存儲(chǔ)器操作數(shù),目標(biāo)操作數(shù)通常是間址寄存器。,符號(hào)地址,68,LEA指令,比較下列指令: MOV SI,DATA1 LEA SI,DATA1 MOV BX,BX LEA BX,BX,DATA1,符號(hào)地址,12H,34H,1100H,88H,77H,BX=1100H,執(zhí)行結(jié)果:SI=1234H,執(zhí)行結(jié)果:SI=DATA1,執(zhí)行結(jié)果:BX=7788H,執(zhí)行結(jié)果:BX=1100H,69,LEA指令在程序中的應(yīng)用,將數(shù)據(jù)段中首地址為MEM1 的50個(gè)字節(jié)的數(shù)據(jù)
20、傳送到同一邏輯段首地址為MEM2的區(qū)域存放。編寫相應(yīng)的程序段 。,70,LEA指令在程序中的應(yīng)用,開 始,取源地址,取目標(biāo)地址,送數(shù)據(jù)塊長(zhǎng)度到CL,傳送一個(gè)字節(jié),修改地址指針,修改計(jì)數(shù)值,計(jì)數(shù)值=0?,結(jié) 束,N,Y,71,LEA指令在程序中的應(yīng)用,LEA SI,MEM1 LEA DI,MEM2 MOV CL,50 NEXT: MOV AL,SI MOV DI,AL INC SI INC DI DEC CL JNZ NEXT HLT,72,地址指針傳送指令,*指針?biāo)图拇嫫骱虳S指令LDS *指針?biāo)图拇嫫骱虴S指令LES,作用:將源操作數(shù)指定的連續(xù)4個(gè)存儲(chǔ)器單元中存放的32位地址指針(包括段地址
21、和偏移地址)送2個(gè)16位寄存器。 格式: LDS(LES) DEST,SRC DEST:寄存器 SRC:必須使用存儲(chǔ)器尋址,73,地址指針傳送指令應(yīng)用實(shí)例,*偏移地址通用寄存器 *段地址段寄存器DS或ES,PONET DD 55663344H LDS BX, POINT LES BX, POINT,74,例: 假設(shè): (DS)=B 000H (BX)=080AH 指令:LES DI, BX 執(zhí)行指令后: (DI)=05A2H (ES)=4000H,75,綜合舉例: 設(shè): (DS)=5000H TABLE=1000H 分析下列指令執(zhí)行結(jié)果: MOV BX,TABLE ;(BX)=0040H MO
22、V BX,OFFSET TABLE ;(BX)=1000H LEA BX,TABLE ;(BX)=1000H LES BX,TABLE ;(BX)=0040H,(ES)=3000H LDS BX,TABLE ;(BX)=0040H,(DS)=3000H,76,四、標(biāo)志位操作指令,LAHF SAHF PUSHF POPF,隱含操作數(shù)AH,隱含操作數(shù)FLAGS,77,1. LAHF,SAHF,LAHF 操作: 將FLAGS的低8位裝入AH,SF,PF,AF,ZF,CF,.,AH,FLAGS,D15,D0,D7,D0,SAHF,執(zhí)行與LAHF相反的操作,78,2. PUSHF,POPF,針對(duì)FLAG
23、S的堆棧操作指令 將標(biāo)志寄存器壓棧或從堆棧彈出,79,算術(shù)運(yùn)算類指令,80,算術(shù)運(yùn)算類指令,加法運(yùn)算指令 減法運(yùn)算指令 乘法指令 除法指令,算術(shù)運(yùn)算指令的執(zhí)行大多對(duì)狀態(tài)標(biāo)志位會(huì)產(chǎn)生影響,81,一、加法指令,普通加法指令A(yù)DD 帶進(jìn)位位的加法指令A(yù)DC 加1指令I(lǐng)NC,加法指令對(duì)操作數(shù)的要求與MOV指令相同,82,1. ADD指令,格式: ADD OPRD1,OPRD2 操作: OPRD1+OPRD2,ADD指令的執(zhí)行對(duì)全部6個(gè)狀態(tài)標(biāo)志位都產(chǎn)生影響,OPRD1,OPRD1:寄存器,存儲(chǔ)器 OPRD2:立即數(shù),寄存器,存儲(chǔ)器,83,ADD指令例,MOV AL,78H ADD AL,99H 指令執(zhí)行
24、后6個(gè)狀態(tài)標(biāo)志位的狀態(tài),OPRD1:寄存器,存儲(chǔ)器 OPRD2:立即數(shù),寄存器,存儲(chǔ)器,84,特點(diǎn): 可以進(jìn)行8位、16位的無(wú)符號(hào)數(shù)和帶符號(hào)數(shù)的加法運(yùn)算; 源操作數(shù)和目標(biāo)操作數(shù)不能同時(shí)為存儲(chǔ)器, 不能為段寄存器; 指令影響標(biāo)志位的情況: OF=1, 8位帶符號(hào)數(shù)相加,和超出范圍(128127), 16位帶符號(hào)數(shù)相加,和超出范圍(-32768+32767); CF=1, 8位無(wú)符號(hào)數(shù)相加,和超過(guò)255, 16位無(wú)符號(hào)數(shù)相加,和超過(guò)65535。 其他條件標(biāo)志(SF,AF,PF,ZF)根據(jù)定義設(shè)定。,85,ADD指令例,01111000 + 10011001 00010001,1,標(biāo)志位狀態(tài): CF
25、= SF= AF= ZF= PF= OF=,1,0,1,0,1,0,86,2. ADC指令,指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響與ADD指令完全一樣 指令的操作: OPRD1+OPRD2+CF OPRD1 ADC指令多用于多字節(jié)數(shù)相加,使用前要先將CF清零。,87,ADC指令應(yīng)用例求兩個(gè)20B數(shù)的和,LEA SI,M1 LEA DI,M2 MOV CX,20 CLC ;使CF=0 NEXT : MOV AL,SI ADC DI,AL INC SI INC DI DEC CX JNZ NEXT HLT,88,3. INC指令,格式: INC OPRD 操作: OPRD+1 OPRD,常用于在
26、程序中修改地址指針,不能是段寄存器或立即數(shù),89,二、減法指令,普通減法指令SUB 考慮借位的減法指令SBB 減1指令DEC 比較指令CMP 求補(bǔ)指令NEG,減法指令對(duì)操作數(shù)的要求與對(duì)應(yīng)的加法指令相同,90,1. SUB指令,格式: SUB OPRD1,OPRD2 操作: OPRD1- OPRD2 OPRD1 對(duì)標(biāo)志位的影響與ADD指令同,91,2. SBB指令,指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響與SUB指令完全一樣 指令的操作: OPRD1- OPRD2- CF OPRD1,92,3. DEC指令,格式: DEC OPRD 操作: OPRD - 1 OPRD,指令對(duì)操作數(shù)的要求與INC
27、相同 指令常用于在程序中修改計(jì)數(shù)值,93,4. NEG指令(求補(bǔ)),格式: NEG OPRD 操作:把操作數(shù)按位求反后末位+1 0 - OPRD OPRD,8/16位寄存器或存儲(chǔ)器操作數(shù),用0減去操作數(shù),相當(dāng)于對(duì)該操作數(shù)求補(bǔ)碼,94,應(yīng)用舉例:求絕對(duì)值 在內(nèi)存中, 從AREA1開始存放100個(gè)帶符號(hào)數(shù)。 將各數(shù)的絕對(duì)值存于AREA2的開始單元。,流程圖,95,程序: LEA SI, AREA1 LEA DI, AREA2 MOV CX, 100 CHECK: MOV AL, SI OR AL, AL ;(AL)內(nèi)容不變,置標(biāo)志 JNS NEXT ;SF=0轉(zhuǎn)NEXT NEG AL ;負(fù)數(shù)求補(bǔ)
28、NEXT: MOV DI, AL ;送目標(biāo) INC SI INC DI DEC CX JNZ CHECK HLT,96,5. CMP指令,格式: CMP OPRD1,OPRD2 操作: OPRD1- OPRD2 指令執(zhí)行的結(jié)果不影響目標(biāo)操作數(shù),僅影響標(biāo)志位!,97,CMP指令,用途: 用于比較兩個(gè)數(shù)的大小,可作為條件轉(zhuǎn)移指令轉(zhuǎn)移的條件 指令對(duì)操作數(shù)的要求及對(duì)標(biāo)志位的影響與SUB指令相同 (1)根據(jù)Z標(biāo)志,判斷兩者是否相等; (2)根據(jù)CF標(biāo)志, 判斷兩個(gè)無(wú)符號(hào)數(shù)的大??; (3)用S、O標(biāo)志,判斷二個(gè)帶符號(hào)數(shù)的大小。,98,CMP指令,兩個(gè)無(wú)符號(hào)數(shù)的比較: CMP AX,BX 若 AX BX 若
29、 AX BX,CF=0,CF=1,99,CMP指令,兩個(gè)帶符號(hào)數(shù)的比較 CMP AX,BX 兩個(gè)數(shù)的大小由OF和SF共同決定 OF和SF狀態(tài)相同 AX BX OF和SF狀態(tài)不同 AX BX,100,CMP指令例,LEA BX,MAX LEA SI,BUF MOV CL,20 MOV AL,SI NEXT:INC SI CMP AL,SI JNC GOON ;CF=0轉(zhuǎn)移 XCHG SI,AL,GOON:DEC CL JNZ NEXT MOV BX,AL HLT,101,程序功能,MAX,BUF,XXH,XXH,XXH,在20個(gè)數(shù)中找最大的數(shù),并將其存放在MAX單元中。,102,三、乘法指令,無(wú)
30、符號(hào)的乘法指令MUL *帶符號(hào)的乘法指令I(lǐng)MUL,注意點(diǎn): 乘法指令采用隱含尋址,隱含的是存放被乘數(shù)的累加器AL或AX及存放結(jié)果的AX,DX.,103,1. 無(wú)符號(hào)數(shù)乘法指令,格式: MUL OPRD 不能是立即數(shù) 操作: OPRD為字節(jié)數(shù) OPRD為16位數(shù),ALOPRD,AXOPRD,DXAX,AX,104,無(wú)符號(hào)數(shù)乘法指令例,MUL BYTE PTRBX,BX,XXH,AL XXH,AX,105,四、除法指令,無(wú)符號(hào)除法指令 格式: DIV SRC,106,除法指令的操作,若OPRD是字節(jié)數(shù) 執(zhí)行:AX/OPRD 結(jié)果: AL=商 AH=余數(shù) 若OPRD是雙字節(jié)數(shù) 執(zhí)行: DXAX/OP
31、RD 結(jié)果: AX=商 DX=余數(shù),指令要求被除數(shù)是除數(shù)的雙倍字長(zhǎng),107,108,有符號(hào)除法指令 格式: IDIV SRC,109,四. 字位擴(kuò)展指令,將符號(hào)數(shù)的符號(hào)位擴(kuò)展到高位; 指令為零操作數(shù)指令,采用隱含尋址,隱含的操作數(shù)為AX及AX,DX 無(wú)符號(hào)數(shù)的擴(kuò)展規(guī)則為在高位補(bǔ)0,110,字節(jié)到字的擴(kuò)展指令,格式: CBW 操作: 將AL內(nèi)容擴(kuò)展到AX 規(guī)則: 若最高位=1,則執(zhí)行后AH=FFH 若最高位=0,則執(zhí)行后AH=00H,111,字到雙字的擴(kuò)展指令,格式: CWD 操作: 將AX內(nèi)容擴(kuò)展到DX AX 規(guī)則: 若最高位=1,則執(zhí)行后DX=FFFFH 若最高位=0,則執(zhí)行后DX=0000
32、H,112,字位擴(kuò)展指令例,判斷以下指令執(zhí)行結(jié)果: MOV AL,44H CBW MOV AX,0AFDEH CWD MOV AL,86H CBW,113,五、BCD碼調(diào)整指令,將指令執(zhí)行的二進(jìn)制運(yùn)算結(jié)果調(diào)整為壓縮BCD碼或擴(kuò)展BCD碼表示的十進(jìn)制數(shù)。 共6條,均為隱含尋址方式,隱含的操作數(shù)是 AL或AL、AH; 不能單獨(dú)使用,要緊跟在相應(yīng)的算術(shù)運(yùn)算指令 之后;,在用BCD碼進(jìn)行十進(jìn)制數(shù)加、減、乘運(yùn)算時(shí),應(yīng)分兩步進(jìn)行: (1)先按二進(jìn)制數(shù)運(yùn)算規(guī)則進(jìn)行運(yùn)算,得到中間結(jié)果。 (2)用十進(jìn)制調(diào)整指令對(duì)中間結(jié)果進(jìn)行修正,得到運(yùn)算結(jié)果的BCD碼。 注意: BCD碼的運(yùn)算只能在8位累加器AL中進(jìn)行; 十進(jìn)
33、制數(shù)的乘、除運(yùn)算只能用非壓縮的BCD格式; 除法運(yùn)算時(shí),應(yīng)先調(diào)整,后運(yùn)算。,五、BCD碼調(diào)整指令,(1)壓縮型BCD碼調(diào)整指令 格式:DAA;加法調(diào)整 DAS;減法調(diào)整 說(shuō)明:將加法(ADD或ADC)或減法(SUB或SBB)運(yùn)算的結(jié)果(在AL寄存器中)調(diào)整為壓縮BCD碼。注意,參與運(yùn)算的應(yīng)是壓縮BCD碼。 壓縮BCD碼的加法調(diào)整指令,半字節(jié)1位BCD相加,超過(guò)9或有進(jìn)位,要加6調(diào)整,低半字節(jié)調(diào)整后有進(jìn)位,高半字節(jié)再調(diào)整。表示為: 若 AL&0FH9 或 AF=1,(即AL中的低4位大于9) 則 AL+6AL,1 AF 若 AL&0F0H90H 或 CF=1, 則 AL+60HAL,1CF,11
34、6,壓縮BCD碼的減法調(diào)整指令,半字節(jié)1位BCD相減,有借位,要減6調(diào)整。表示為: 若 AL&0FH9 或 AF=1,則 AL-6AL, 1 AF 若 AL9FH 或 CF=1, 則 AL-60HAL, 1 CF,例 48+29=77 (用壓縮的BCD碼實(shí)現(xiàn)加法運(yùn)算) MOV AL,48H;AL 48的壓縮BCD碼 ADD AL,29H;AL 48H+29H = 71H DAA;調(diào)整,AL= 77H即77的壓縮BCD碼,118,(2)非壓縮型BCD碼調(diào)整指令 1)加減法調(diào)整 格式:AAA;加法調(diào)整 AAS;減法調(diào)整 說(shuō)明:將加法(ADD或ADC)或減法(SUB或SBB)運(yùn)算的結(jié)果(在AL寄存器
35、中)調(diào)整為非壓縮BCD碼。調(diào)整后的AL寄存器中高4位被清0,如有進(jìn)位或借位,則在AH中。,2)乘法調(diào)整 格式:AAM 說(shuō)明:把AL中的數(shù)值調(diào)整為非壓縮BCD碼,并存入AX中。 在用此指令進(jìn)行調(diào)整之前應(yīng)先執(zhí)行無(wú)符號(hào)數(shù)的乘法指令,相乘的兩個(gè)數(shù)必須是非壓縮BCD碼,即BCD碼在低4位中,相乘的結(jié)果在AL中(兩個(gè)乘數(shù)均小于10,它們的乘積小于100)。執(zhí)行調(diào)整指令A(yù)AM時(shí),將AL內(nèi)容除以10,將商放在AH中作為結(jié)果的十位數(shù)(BCD碼),余數(shù)放在AL中,作為結(jié)果的個(gè)位數(shù)(BCD碼)。,120,3)除法調(diào)整 格式:AAD 操作:AL AH10 + AL,AH 0 說(shuō)明:將AH寄存器的內(nèi)容乘以10并加上AL
36、寄存器的內(nèi)容,結(jié)果送回AL,同時(shí)將AH清0。其操作實(shí)質(zhì)是將AX寄存器中的非壓縮BCD碼轉(zhuǎn)換成二進(jìn)制數(shù),存放在AL中。 注意:該指令與其他調(diào)整指令對(duì)加、減、乘法調(diào)整在運(yùn)算后進(jìn)行,而除法調(diào)整應(yīng)在除法運(yùn)算之前。除法所得的商還需用AAM指令進(jìn)行調(diào)整方可得到正確的非壓縮BCD碼的結(jié)果。,121,邏輯運(yùn)算和移位指令,122,指令類型,邏輯運(yùn)算 與,或,非,異或 移位操作 非循環(huán)移位,循環(huán)移位,123,一、邏輯運(yùn)算,邏輯運(yùn)算指令對(duì) 操作數(shù)的 要求大多與MOV指令 相同。 “非”運(yùn)算指令 要求操作數(shù) 不能是立即數(shù); 除“非”運(yùn)算指令 外,其余指令的執(zhí)行都會(huì)使標(biāo)志位OF=CF=0,124,1.“與”指令:,格式
37、: AND OPRD1,OPRD2 操作: 兩操作數(shù)相“與”,結(jié)果送目標(biāo)地址。,125,“與”指令的應(yīng)用,實(shí)現(xiàn)兩操作數(shù) 按位相與的 運(yùn)算 AND BL,SI 使目標(biāo)操作數(shù)的 某些位不變,某些位清零 AND AL,0FH 在操作數(shù) 不變的 情況下使CF和OF清零 AND AX,AX,126,“與”指令應(yīng)用例,從地址為3F8H 端口中讀入一個(gè)字節(jié)數(shù),如果該數(shù) bit1位為1,則可從38FH端口將DATA為首地址的 一個(gè)字輸出,否則就不能進(jìn)行數(shù) 據(jù)傳送。 編寫相應(yīng)的 程序段。,127,“與”指令應(yīng)用例,開 始,取待輸出數(shù)的偏移地址,讀入狀態(tài)字,測(cè)試bit1位狀態(tài),Bit1=1?,取輸入口地址,取輸出
38、口地址,輸出一個(gè)字,N,Y,128,“與”指令應(yīng)用例,LEA SI,DATA MOV DX,3F8H WATT:IN AL,DX AND AL,02H JZ WATT ;ZF=1轉(zhuǎn)移 MOV DX,38FH MOV AX,SI OUT DX,AX,129,2.“或”運(yùn)算指令,格式: OR OPRD1,OPRD2 操作: 兩操作數(shù)相“或”,結(jié)果送目標(biāo)地址,130,“或”指令的應(yīng)用,實(shí)現(xiàn)兩操作數(shù) 相 “或”的 運(yùn)算 OR AX,DI 使某些位不變,某些位置“1” OR CL,0FH 在不改變操作數(shù)的 情況下使OF=CF=0 OR AX,AX,131,“或”指令的應(yīng)用例,OR AL,AL JPE G
39、OON OR AL,80H GOON:.,PF=1轉(zhuǎn)移,132,3.“非”運(yùn)算指令,格式: NOT OPRD 操作: 操作數(shù)按位取反再送回原地址 注: 指令中的操作數(shù)不能是立即數(shù) 指令的執(zhí)行對(duì)標(biāo)志位無(wú)影響 例:NOT BYTE PTRBX,133,4.“異或”運(yùn)算指令,格式: XOR OPRD1,OPRD2 操作: 兩操作數(shù)相“異或”,結(jié)果送目標(biāo)地址 即“相同為0,不同為1” 例: XOR BL,80H XOR AX,AX,134,5.“測(cè)試”指令,格式: TEST OPRD1,OPRD2 操作: 執(zhí)行“與”運(yùn)算,但運(yùn)算的結(jié)果不送回目標(biāo)地址。 應(yīng)用: 常用于測(cè)試某些位的狀態(tài),135,例:,從地
40、址為3F8H的 端口中讀入一個(gè)字節(jié)數(shù),當(dāng)該數(shù)的 bit1, bit3, bit5位同時(shí)為1時(shí),可從38FH端口將DATA為首地址的一個(gè)字輸出,否則就不能進(jìn)行數(shù) 據(jù)傳送。 編寫相應(yīng)的 程序段。,136,源程序代碼:,LEA SI,DATA MOV DX,3F8H WATT:IN AL,DX MOV DX,38FH MOV AX,SI OUT DX,AX,AND AL,2AH CMP AL,2AH JNZ WATT,TEST AL,02H JZ WATT ;ZF=1轉(zhuǎn)移 TEST AL,08H JZ WATT TEST AL,20H JZ WATT,AND AL,2AH XOR AL,2AH JN
41、Z WATT,137,(1)AND指令用來(lái)對(duì)指令的指定位清“0”。 (2)OR指令常用來(lái)對(duì)某些位置1。 (3)XOR指令用在程序開頭,使某個(gè)寄存器清“0”。 (4)NOT指令對(duì)某個(gè)數(shù)據(jù)取反,+1成補(bǔ)碼。 (5)TEST指令用來(lái)檢測(cè)指定位為1,還是0。,邏輯指令應(yīng)用小結(jié):,138,二、移位指令,非循環(huán)移位指令 循環(huán)移位指令,注: 移動(dòng)一位時(shí)由指令直接給出; 移動(dòng)兩位及以上,則移位次數(shù)由CL指定。,139,1. 非循環(huán)移位指令,邏輯左移 算術(shù)左移 邏輯右移 算術(shù)右移,140,算術(shù)左移和邏輯左移,算術(shù)左移指 令: SAL OPRD,1 SAL OPRD,CL 邏輯左移指 令: SHL OPRD,1
42、SHL OPRD,CL,有符號(hào)數(shù),無(wú)符號(hào)數(shù),141,邏輯右移,格式: SHR OPRD,1 SHR OPRD,CL,0,CF,無(wú)符號(hào)數(shù)的右移,142,邏輯右移例:,MOV AL,68H MOV CL,2 SHR AL,CL,0,CF,0 1 1 0 1 0,AL,0,0,0,0 0 1 1 0 1 0 0,AL,CF,0,0,0 0 0 1 1 0 1 0,AL,CF,0,0,移動(dòng)1次,移動(dòng)2次,143,算術(shù)右移,格式: SAR OPRD,1 SAR OPRD,CL,有符號(hào)數(shù)的右移,CF,144,非循環(huán)移位指令的應(yīng)用,左移可實(shí)現(xiàn)乘法運(yùn)算 右移可實(shí)現(xiàn)除法運(yùn)算,145,2. 循環(huán)移位指令,不帶進(jìn)位
43、位的循環(huán)移位 帶進(jìn)位位的循環(huán)移位,左移 ROL 右移 ROR,左移 RCL 右移 RCR,指令格式、對(duì)操作數(shù)的要求與非循環(huán)移位指令相同,146,不帶進(jìn)位位的循環(huán)移位,CF,CF,147,帶進(jìn)位位的循環(huán)移位,CF,CF,148,循環(huán)移位指令的應(yīng)用,用于對(duì)某些位狀態(tài)的測(cè)試; 高位部分和低位部分的交換; 與非循環(huán)移位指令一起組成32位或更長(zhǎng)字長(zhǎng)數(shù)的移位。,149,循環(huán)移位指令小結(jié),150,串操作指令,151,串操作指令說(shuō)明,針對(duì)數(shù)據(jù)塊或字符串的操作; 可實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器的數(shù)據(jù)傳送; 待操作的數(shù)據(jù)串稱為源串,目標(biāo)地址稱為目標(biāo)串。,152,串操作指令的特點(diǎn),源串一般存放在數(shù)據(jù)段DS,偏移地址由SI指定
44、。允許段重設(shè); 目標(biāo)串必須在附加段ES,偏移地址由DI指定; 指令自動(dòng)修改地址指針,修改方向由DF決定。 DF=0 DF=1 數(shù)據(jù)塊長(zhǎng)度值由CX指定 可增加自動(dòng)重復(fù)前綴以實(shí)現(xiàn)自動(dòng)修改CX內(nèi)容。,增地址方向;,減地址方向;,153,串操作指令的特點(diǎn),154,串操作指令流程(以傳送操作為例),取源串地址,取目標(biāo)串地址,設(shè)串長(zhǎng)度,傳送一個(gè)字節(jié)或字,修改地址指針,修改串長(zhǎng)度值,傳送完否?,N,Y,設(shè)操作方向,155,重復(fù)前綴,無(wú)條件重復(fù) REP 條件重復(fù) REPE 相等重復(fù) REPZ 為零重復(fù) REPNE 不相等重復(fù) REPNZ 不為零重復(fù),CX0或ZF=1 重復(fù),CX0或ZF=0 重復(fù),CX0 重復(fù)
45、,156,串操作指令,串傳送 MOVS 串比較 CMPS 串掃描 SCAS 串裝入 LODS 串送存 STOS,157,1. 串傳送指令,格式: MOVS OPRD1,OPRD2 MOVSB (SI)(SI)1,(DI)(DI) 1 MOVSW (SI)(SI)2,(DI)(DI)2 串傳送指令常與無(wú)條件重復(fù)前綴連用,當(dāng)方向標(biāo)志 CLD , DF=0時(shí) 用“+” STD , DF=1時(shí) 用“-”,158,串傳送指令,對(duì)比用MOV指令和MOVS指令實(shí)現(xiàn)將200個(gè)字節(jié)數(shù)據(jù)從內(nèi)存的一個(gè)區(qū)域送到另一個(gè)區(qū)域的程序段。,159,串傳送指令例,用串傳送指令實(shí)現(xiàn)200個(gè)字節(jié)數(shù)據(jù)的傳送: LEA SI,MEM1
46、 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT,160,2. 串比較指令,格式: CMPS OPRD1,OPRD2 CMPSB CMPSW 串比較指令常與條件重復(fù)前綴連用,指令的執(zhí) 行不改變操作數(shù),僅影響標(biāo)志位。 前綴的操作對(duì)標(biāo)志位不影響,161,執(zhí)行操作: (ES) :(DI) -(DS):(SI),結(jié)果不存,置標(biāo)志。 字節(jié)操作:(SI) (SI)1,(DI)(DI) 1 字操作:(SI) (SI)2,(DI) (DI)2 注意: 兩數(shù)相減,只影響標(biāo)志,不影響操作數(shù)。 其它操作規(guī)定與MOVS同。,162,例:利用CMPS指令對(duì)STRING1和STRING2
47、二個(gè)字符串進(jìn)行 比較,相同在RESULT 單元送00H,不同送0FFH。 MOV SI,OFFSET STRING1 MOV DI,OFFSET STRING2 MOV CX,COUNT CLD REPZ CMPSB JNZ UNMAT ;若串不同,在RESUL單元中置0FFH MOV AL,0 ;若串相等,在RESULT單元中置00H JMP OULPT UNMAT:MOV AL,0FFH OUTPT: MOV RESULT,AL HLT,串比較指令例,163,3. 串掃描指令,格式: SCAS OPRD SCASB SCASW 執(zhí)行與CMPS指令相似的操作,只是這里的源 操作數(shù)是AX或AL
48、,目 標(biāo) 操作數(shù),164,串掃描指令的應(yīng)用,常用于在指定存儲(chǔ)區(qū)域中尋找某個(gè)關(guān)鍵字。,例:要搜索的關(guān)鍵字 放在(AL)或(AX)中,搜索某一數(shù)據(jù)塊或字符串中有無(wú)關(guān) 鍵字,若有,把搜索次數(shù)記下來(lái),且記錄關(guān)鍵字地址;若次數(shù)為0,表示沒有要搜索的關(guān)鍵字。,165,MOV DI,0FFSET BLOCK;設(shè)置數(shù)據(jù)塊地址指針 MOV CX,COUNT ;設(shè)置數(shù)據(jù)塊長(zhǎng)度 MOV AL,CHAR ; 關(guān)鍵字送入AL或AX REP NE SCASB ;(CX)0,ZF=0 繼續(xù)SCASB JZ FOUND ; ZF=1 轉(zhuǎn)FOUND MOV DI,0 JMP DONE FOUND:DEC DI MOV POIN
49、TR,DI MOV BX,OFFSET BLOCK SUB BX,DI MOV DI,BX ;把搜索次數(shù)記下來(lái),且記錄關(guān)鍵字地址 DONE: HLT,串掃描指令的應(yīng)用,166,4、串裝入指令,格式: LODS OPRD LODSB LODSW 操作: 對(duì)字節(jié): 對(duì) 字:,源操作數(shù),DS:SI,DS:SI,AL,AX,167,4. 串裝入指令,用于將內(nèi)存某個(gè)區(qū)域的數(shù)據(jù)串依次裝入累加 器,以便顯示或輸出到接口。 LODS指令一般不加重復(fù)前綴。,168,5. 串存儲(chǔ)指令,格式: STOS OPRD STOSB STOSW 操作: 對(duì)字節(jié): AL 對(duì) 字: AX,目 標(biāo) 操作數(shù),ES:DI,ES:DI
50、,169,串存儲(chǔ)指令的應(yīng)用,常用于將內(nèi)存某個(gè)區(qū)域置同樣的值 此時(shí): 將待送存的數(shù)據(jù)放入AL(字節(jié)數(shù))或AX(字?jǐn)?shù)據(jù)); 確定操作方向(增地址/減地址)和區(qū)域大小(串長(zhǎng)度值); 使用串存儲(chǔ)指令+無(wú)條件重復(fù)前綴,實(shí)現(xiàn)數(shù)據(jù)傳送。,170,串存儲(chǔ)指令例 內(nèi)存某個(gè)區(qū)域清零,將內(nèi)存某單元清零 設(shè)計(jì)思想:,區(qū)域首地址送ES:DI,串長(zhǎng)度送CX,置方向標(biāo)志DF,0送累加器AL,執(zhí)行串送存指令,171,例:在附加段STORE開始存5個(gè)空格 程序: MOV AL,20H ;_ (AL) MOV CX,5 MOV DI,offset STORE CLD REP STOSB ;(ES):(DI) (AL) (DI)
51、(DI)+1,172,小結(jié):串操作指令重復(fù)前綴,操作數(shù),地址指針,173,程序控制指令,轉(zhuǎn)移指令 循環(huán)控制 過(guò)程調(diào)用 中斷控制,174,程序的執(zhí)行方向,程序控制類指令的本質(zhì)是: 控制程序的執(zhí)行方向 決定程序執(zhí)行方向的因素: CS,IP 控制程序執(zhí)行方向的方法: 修改CS 和IP ,則程序轉(zhuǎn)向另一個(gè)代碼段執(zhí)行; 僅修改IP,則程序?qū)⒏淖儺?dāng)前的執(zhí)行順序,轉(zhuǎn)向本代碼段內(nèi)其它某處執(zhí)行。,175,一、轉(zhuǎn)移指令,無(wú)條件轉(zhuǎn)移指令 無(wú)條件轉(zhuǎn)移到目標(biāo)地址,執(zhí)行新的指令 有條件轉(zhuǎn)移指令 在具備一定條件的情況下轉(zhuǎn)移到目標(biāo)地址,通過(guò)修改指令的偏移地址或段地址及偏移地址 實(shí)現(xiàn)程序的轉(zhuǎn)移,176,1. 無(wú)條件轉(zhuǎn)移指令,格
52、式: JMP OPRD,目標(biāo)地址,與JMP在同一代碼段,與JMP不在同一代碼段,原則上可實(shí)現(xiàn)在整個(gè)內(nèi)存空間的轉(zhuǎn)移,177,無(wú)條件段內(nèi)轉(zhuǎn)移,轉(zhuǎn)移的目標(biāo)地址在當(dāng)前代碼段內(nèi),段地址不 改變。 即:目標(biāo)地址是16位偏移地址。,指令中直接給出目標(biāo)地址,由指令中的寄存器或存儲(chǔ)器操作數(shù)指出目標(biāo)地址,段內(nèi)直接轉(zhuǎn)移,段內(nèi)間接轉(zhuǎn)移,178,段內(nèi)直接轉(zhuǎn)移,轉(zhuǎn)移的目標(biāo)地址由指令直接給出 格式: JMP Label,近地址標(biāo)號(hào),段內(nèi)直接短轉(zhuǎn)移:偏移量為8位,在符號(hào)地址前加SHORT 段內(nèi)直接近轉(zhuǎn)移:偏移量為16位,在符號(hào)地址前加NEAR PTR,179,段內(nèi)直接轉(zhuǎn)移示圖,JMP,Label,代碼段,位移量,下一條要執(zhí)行
53、指令的偏移地址=當(dāng)前IP+位移量,JMP Label,180,段內(nèi)間接轉(zhuǎn)移,段內(nèi)間接轉(zhuǎn)移 轉(zhuǎn)移的目標(biāo)地址存放在某個(gè)16位寄存器或存儲(chǔ)器 的某兩個(gè)單元中 例: JMP BX 若:BX=1200H 則:轉(zhuǎn)移的目標(biāo)地址=1200H,JMP,代碼段,1200H,MOV,181,段內(nèi)間接轉(zhuǎn)移例,JMP WORD PTRBX 設(shè):BX=1200H,JMP,代碼段,數(shù)據(jù)段,BX=1200,XXH,XXH,IP,指令碼,182,無(wú)條件段間轉(zhuǎn)移,轉(zhuǎn)移的目標(biāo)地址不在當(dāng)前代碼段內(nèi)。 目標(biāo)地址為32位,包括段地址和偏移地址。,指令中直接給出目標(biāo)地址,由指令中的32位存儲(chǔ)器操作數(shù)指出目標(biāo)地址,段間直接轉(zhuǎn)移,段間間接轉(zhuǎn)移
54、,183,段間直接轉(zhuǎn)移,段內(nèi)直接轉(zhuǎn)移 轉(zhuǎn)移的目標(biāo)地址由指令直接給出 格式:(CS) 、 (IP)都改變 JMP FAR PTR Label,遠(yuǎn)地址標(biāo)號(hào),執(zhí)行操作: (IP)Label所在的段內(nèi)偏移地址。 (CS)Label所在的段的段址。,184,段間直接轉(zhuǎn)移示圖,JMP,Label,代碼段1,Label與JMP之間的位移量,代碼段2,XXH,XXH,XXH,XXH,IP,CS,185,段間間接轉(zhuǎn)移,段內(nèi)間接尋址 轉(zhuǎn)移的目標(biāo)地址由指令中的32位操作數(shù)給出 例: JMP DWORD PTRBX,XXH,XXH,XXH,XXH,BX,IP,CS,JMP,指令碼,代碼段1,代碼段2,數(shù)據(jù)段,186,
55、無(wú)條件轉(zhuǎn)移指令例,(1) 2000:0100 MOV AX,1200H (2) 2000:0103 JMP NEXT (3) 2000:0120 NEXT: MOV BX,1200H (4) JMP BX (5) 2000:1200,187,無(wú)條件轉(zhuǎn)移指令例,MOV SI,1122H MOV WORD PTRSI,0120H ADD SI,2 MOV WORD PTRSI,0122H,JMP DWORD PTRSI-2,JMP WORD PTRSI,IP,CS,IP,188,2. 條件轉(zhuǎn)移指令,在滿足一定條件下,程序轉(zhuǎn)移到目標(biāo)地址繼續(xù)執(zhí)行 條件轉(zhuǎn)移指令均為段內(nèi)短轉(zhuǎn)移,即轉(zhuǎn)移 范圍為: -128
56、-+127,189,條件轉(zhuǎn)移指令的應(yīng)用,幾種條件轉(zhuǎn)移指令的應(yīng)用 JC/JNC 判斷CF的狀態(tài)。常用于比大小 JZ/JNZ 判斷ZF的狀態(tài)。常用于循環(huán)體的結(jié)束判斷 JO/JNO 判斷OF的狀態(tài)。常用于有符號(hào)數(shù)溢出的判斷 JP/JPE 判斷PF的狀態(tài)。用于判斷運(yùn)算結(jié)果低8位中1的個(gè)數(shù)是否為偶數(shù) JA/JAE/JB/JBE 判斷CF或CF+ZF的狀態(tài)。常用于無(wú)符號(hào)數(shù)的大小比較,190,轉(zhuǎn)移指令例,統(tǒng)計(jì)內(nèi)存數(shù)據(jù)段中以TABLE為首地址的100個(gè)8位符號(hào)數(shù)中正數(shù)、負(fù)數(shù)和零元數(shù)的個(gè)數(shù)。,191,轉(zhuǎn)移指令例(流程圖),將存放各元素個(gè)數(shù)的單元清零,取首地址 設(shè)串長(zhǎng)度,取一個(gè)字節(jié)數(shù),正數(shù)個(gè)數(shù)加1,零元素加1,為負(fù)?,為零?,負(fù)數(shù)個(gè)數(shù)加1,N,Y,N,Y,192,按轉(zhuǎn)移條件不同,條件轉(zhuǎn)移指令可以
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年常德貨運(yùn)從業(yè)資格證模擬考試題目
- 2025年河南a2貨運(yùn)從業(yè)資格證模擬考試題
- 布藝意向采購(gòu)合同范例
- 學(xué)生定崗實(shí)習(xí)合同范例
- 2025年張家口道路運(yùn)輸從業(yè)資格證
- 2025年隴南貨運(yùn)上崗證考試考哪些科目
- 昆山學(xué)校食堂外包合同范例
- 唐山幼兒師范高等專科學(xué)?!都?xì)胞生物學(xué)1》2023-2024學(xué)年第一學(xué)期期末試卷
- 買賣地基合同范例
- 唐山學(xué)院《高等代數(shù)方法(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【MOOC】有機(jī)化學(xué)實(shí)驗(yàn)-南京工業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 02565+24273中醫(yī)藥學(xué)概論
- 第十一單元跨學(xué)科實(shí)踐活動(dòng)10調(diào)查我國(guó)航天科技領(lǐng)域中新型材料、新型能源的應(yīng)用教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級(jí)化學(xué)人教版下冊(cè)
- 【MOOC】市場(chǎng)調(diào)查與研究-南京郵電大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024年公安機(jī)關(guān)理論考試題庫(kù)500道
- 2024年中國(guó)主題公園競(jìng)爭(zhēng)力評(píng)價(jià)報(bào)告-中國(guó)主題公園研究院
- 2024油氣管道無(wú)人機(jī)巡檢作業(yè)標(biāo)準(zhǔn)
- 廣東省深圳市寶安區(qū)多校2024-2025學(xué)年九年級(jí)上學(xué)期期中歷史試題
- 重大(2023)版信息科技五年級(jí)上冊(cè)教學(xué)設(shè)計(jì)
- 工業(yè)循環(huán)水處理行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 廣州市海珠區(qū)六中鷺翔杯物理體驗(yàn)卷
評(píng)論
0/150
提交評(píng)論