《匯編語(yǔ)言》講稿_09 轉(zhuǎn)移指令的原理_第1頁(yè)
《匯編語(yǔ)言》講稿_09 轉(zhuǎn)移指令的原理_第2頁(yè)
《匯編語(yǔ)言》講稿_09 轉(zhuǎn)移指令的原理_第3頁(yè)
《匯編語(yǔ)言》講稿_09 轉(zhuǎn)移指令的原理_第4頁(yè)
《匯編語(yǔ)言》講稿_09 轉(zhuǎn)移指令的原理_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本課件由匯編網(wǎng)()制作提供第9章 轉(zhuǎn)移指令的原理n9.1 操作符offsetn9.2 jmp指令n9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n9.4 轉(zhuǎn)移的目的地址在指令中的jmp指令n9.5 轉(zhuǎn)移地址在寄存器中的jmp指令n9.6 轉(zhuǎn)移地址在內(nèi)存中的jmp指令n9.7 jcxz指令n9.8 loop指令n9.9 根據(jù)位移進(jìn)行轉(zhuǎn)移的意義n9.10 編譯器對(duì)轉(zhuǎn)移位移超界的檢測(cè)本課件由匯編網(wǎng)()制作提供引言n8086CPU的轉(zhuǎn)移指令分為以下幾類: 無(wú)條件轉(zhuǎn)移指令 (如:jmp) 條件轉(zhuǎn)移指令 循環(huán)指令(如:loop) 過程 中斷本課件由匯編網(wǎng)()制作提供9.1 操作符offsetn操作符offset在匯

2、編語(yǔ)言中是由編譯器處理的符號(hào),它的功能是取得標(biāo)號(hào)的偏移地址。 比如下面的程序: assume cs:codesg codeseg segment start:mov ax,offset start ; 相當(dāng)于 mov ax,0 s:mov ax,offset s ; 相當(dāng)于mov ax,3 codesg ends end start本課件由匯編網(wǎng)()制作提供9.1 操作符offsetn問題9.1 有如下程序段,添寫2條指令,使該程序在運(yùn)行中將s處的一條指令復(fù)制到s0處。 思考后看分析。 assume cs:codesg codesg segment s: mov ax,bx ;(nop的機(jī)器碼

3、占一個(gè)字節(jié)) mov si,offset s mov di,offset s0 _ _ s0: nop ;(nop的機(jī)器碼占一個(gè)字節(jié)) nop codesg endsends本課件由匯編網(wǎng)()制作提供9.1 操作符offsetn問題9.1分析n(1)s和s0處的指令所在的內(nèi)存單元的地址是多少? cs:offset s 和cs:offset s0。n(2)將s處的指令復(fù)制到s0處,就是將cs:offeet s 處的數(shù)據(jù)復(fù)制到cs:offset s0處;本課件由匯編網(wǎng)()制作提供9.1 操作符offsetn問題9.1分析(續(xù))n(3)段地址已知在cs中,偏移地址offset s和offset s0

4、已經(jīng)送入si和di中;n(4)要復(fù)制的數(shù)據(jù)有多長(zhǎng)? mov ax,bx指令的長(zhǎng)度為兩個(gè)字節(jié),即1個(gè)字。n完整程序本課件由匯編網(wǎng)()制作提供9.1 操作符offset assume cs:codesg codesg segment s: mov ax,bx ;(mov ax,bx 的機(jī)器碼占兩個(gè)字節(jié)) mov si,offset s mov di,offset s0 mov ax,cs:si mov cs:di,ax s0: nop ;(nop的機(jī)器碼占一個(gè)字節(jié)) nop codesg ends endsn問題9.1完整程序:本課件由匯編網(wǎng)()制作提供9.2 jmp指令njmp為無(wú)條件轉(zhuǎn)移,可以

5、只修改IP,也可以同時(shí)修改CS和IP;njmp指令要給出兩種信息:n轉(zhuǎn)移的目的地址n轉(zhuǎn)移的距離(段間轉(zhuǎn)移、段內(nèi)短轉(zhuǎn)移,段內(nèi)近轉(zhuǎn)移)本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令njmp short 標(biāo)號(hào)(轉(zhuǎn)到標(biāo)號(hào)處執(zhí)行指令) 這種格式的 jmp 指令實(shí)現(xiàn)的是段內(nèi)短轉(zhuǎn)移,它對(duì)IP的修改范圍為 -128127,也就是說,它向前轉(zhuǎn)移時(shí)可以最多越過128個(gè)字節(jié),向后轉(zhuǎn)移可以最多越過127個(gè)字節(jié)。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令比如:程序9.1assume cs:codesgcodesg segment start:mov ax,0 jmp short s

6、add ax,1 s:inc axcodesg endsend startn左面的程序執(zhí)行后, ax中的值為 1 ,因?yàn)閳?zhí)行 jmp short s 后 ,越過了add ax,1 ,IP 指向了標(biāo)號(hào) s處的 inc ax。也就是說,程序只進(jìn)行了一次ax加1操作。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n匯編指令jmp short s 對(duì)應(yīng)的機(jī)器指令應(yīng)該是什么樣的呢?n我們先看一下別的匯編指令和其對(duì)應(yīng)的機(jī)器指令,(示例)n現(xiàn)在我們?cè)贒ebug中將程序9.1翻譯成為機(jī)器碼,看看結(jié)果本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n匯編指令與機(jī)器碼的對(duì)應(yīng)示例 可以

7、看到,在一般的匯編指令中,匯編指令中的idata(立即數(shù)),不論它是表示一個(gè)數(shù)據(jù)還是內(nèi)存單元的偏移地址,都會(huì)在對(duì)應(yīng)的機(jī)器指令中出現(xiàn),因?yàn)镃PU執(zhí)行的是機(jī)器指令,它必須要處理這些數(shù)據(jù)或地址。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n對(duì)照匯編源程序,我們可以看到,Debug 將 jmp short s 中的 s 表示為inc ax 指令的偏移地址 8 ,并將jmp short s 表示為 jmp 0008 ,表示轉(zhuǎn)移到cs:0008處。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n這一切似乎合理,可是當(dāng)我們查看jmp short s或jmp 0008所對(duì)應(yīng)的

8、機(jī)器碼,去發(fā)現(xiàn)了問題。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令njmp 0008 ( Debug 中的表示)或jmp short s (匯編語(yǔ)言中的表示)所對(duì)應(yīng)的機(jī)器碼為EB 03,注意,這個(gè)機(jī)器碼中竟不包含轉(zhuǎn)移的目的地址。n這意味著,CPU 在執(zhí)行EB 03的時(shí)候,并不知道轉(zhuǎn)移目的地址。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n那么,CPU根據(jù)什么進(jìn)行轉(zhuǎn)移呢?n沒有了目的地址,CPU如何知道轉(zhuǎn)移到哪里呢?本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n令人奇怪的是,匯編指令jmp short s中,明明是帶有轉(zhuǎn)移的目的地址(由標(biāo)號(hào)

9、s 表示)的,可翻譯成機(jī)器指令后,怎么目的地址就沒了呢?本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n沒有了目的地址,CPU如何知道轉(zhuǎn)移到哪里?n我們把程序9.1改寫一下,變成這樣: 程序9.2本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令程序9.2assume cs:codesgcodesg segment start:mov ax,0 mov bx,0 jmp short s add ax,1 s:inc axcodesg endsend start我們?cè)贒ebug中將程序9.2翻譯為機(jī)器碼,看看結(jié)果本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jm

10、p指令n比較一下程序1和2用Debug查看的結(jié)果本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n注意,兩個(gè)程序中的 jmp指令都要使IP 指向 inc ax 指令,但是程序 1 的 inc ax 指令的偏移地址為 0008 ,而程序 2 的 inc ax 指令的偏移地址為000BH。n我們?cè)賮?lái)看兩個(gè)程序中的jmp指令所對(duì)應(yīng)的機(jī)器碼,都是EB 03。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n這說明CPU在指令jmp指令的時(shí)候并不需要轉(zhuǎn)移的目的地址。 兩個(gè)程序中的jmp指令的轉(zhuǎn)移目的地址并不一樣,一個(gè)是cs:0008,另一個(gè)是cs:000B。 如果機(jī)器指令中包

11、含了轉(zhuǎn)移的目的地址的話,那么它們對(duì)應(yīng)的機(jī)器碼應(yīng)該是不同的。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n可是它們對(duì)應(yīng)的機(jī)器碼都是 EB 03,這說明在機(jī)器指令中并不包含轉(zhuǎn)移 的目的地址。 如果機(jī)器指令中不包含目的地址的話,那么,也就是說 CPU不需要這個(gè)目的地址就可以實(shí)現(xiàn)對(duì)IP的修改。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n這種信息是什么呢? 我們一步步地分析。n我們先簡(jiǎn)單回憶一下CPU執(zhí)行指令的過程(如果你需要更多地回憶,可以復(fù)習(xí)一下2.10節(jié)的內(nèi)容)。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令nCPU執(zhí)行指令的過程:n(1)從C

12、S:IP指向內(nèi)存單元讀取指令,讀取的指令進(jìn)入指令緩沖區(qū);n(2)(IP) = (IP)+所讀取指令的長(zhǎng)度,從而指向下一條指令;n(3)執(zhí)行指令。轉(zhuǎn)到1,重復(fù)這個(gè)過程。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n按照這個(gè)步驟,我們參照程序9.2的圖看一下: jmp short s指令的讀取和執(zhí)行過程本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令njmp short s指令的讀取和執(zhí)行過程:n(1)(CS)=0BBDH,(IP)=0006,CS:IP指向EB 03(jmp short s的機(jī)器碼);n(2)讀取指令碼EB 03進(jìn)入指令緩沖器;n(3)(IP)=(

13、IP)+所讀取指令的長(zhǎng)度=(IP)+2=0008,CS:IP指向add ax,1;n(4)CPU指行指令緩沖器中的指令EB 03;n(5)指令EB 03執(zhí)行后,(IP)=000BH,CS:IP指向inc ax。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n從上面的過程中我們看到,CPU 將指令EB 03 讀入后,IP 指向了下一條指令,即 CS:0008 處的add ax,1,接著執(zhí)行EB 03。n如果 EB 03 沒有對(duì) IP 進(jìn)行修改的話,那么,接下來(lái) CPU將執(zhí)行 add ax,1。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n可是,CPU 執(zhí)行的 E

14、B 03確是一條修改IP的轉(zhuǎn)移指令,執(zhí)行后 (IP) = 000BH ,CS:IP指向inc ax,CS:0008處的add ax,1沒有被執(zhí)行。nCPU在執(zhí)行EB 03的時(shí)候是根據(jù)什么修改的 IP,使其指向目標(biāo)指令呢?就是根據(jù)指令碼中的03。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n注意,要轉(zhuǎn)移的目的地址是CS:000B,而CPU 執(zhí)行 EB 03時(shí),當(dāng)前的(IP)=0008,如果將當(dāng)前的IP值加3,使(IP)=000BH,CS:IP就可以指向目標(biāo)指令。n在轉(zhuǎn)移指令EB 03中并沒有告訴CPU要轉(zhuǎn)移的目的地址,卻告訴了 CPU 要轉(zhuǎn)移的位移,即將當(dāng)前的IP向后移動(dòng)3個(gè)字

15、節(jié)。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n因?yàn)槌绦?、2中的jmp 指令轉(zhuǎn)移的位移相同,都是向后 3 個(gè)字節(jié),所以它們的機(jī)器碼都是EB 03。n原來(lái)如此,在“jmp short 標(biāo)號(hào)”指令所對(duì)應(yīng)的機(jī)器碼中,并不包含轉(zhuǎn)移的目的地址,而包含的是轉(zhuǎn)移的位移。n這個(gè)位移,使編譯器根據(jù)匯編指令中的“標(biāo)號(hào)”計(jì)算出來(lái)的,本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n轉(zhuǎn)移位移具體的計(jì)算方法如下圖:本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n結(jié)論: CPU執(zhí)行 jmp short 標(biāo)號(hào) 指令時(shí)并不需要轉(zhuǎn)移的目的地址,只需要知道轉(zhuǎn)移的位移就行了。n具

16、體過程演示本課件由匯編網(wǎng)()制作提供本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n實(shí)際上,指令“jmp short 標(biāo)號(hào)”的功能為(IP)=(IP)+8位位移。n(1)8位位移=“標(biāo)號(hào)”處的地址-jmp指令后的第一個(gè)字節(jié)的地址;n(2)short指明此處的位移為8位位移;n(3)8位位移的范圍為-128127,用補(bǔ)碼表示 (如果你對(duì)補(bǔ)碼還不了解,請(qǐng)閱讀附注2)n(4)8位位移由編譯程序在編譯時(shí)算出。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n還有一種和指令“jmp short 標(biāo)號(hào)”功能相近的指令格式: jmp near ptr 標(biāo)號(hào) 它實(shí)現(xiàn)的時(shí)段內(nèi)近轉(zhuǎn)移

17、。n指令“jmp near ptr 標(biāo)號(hào)”的功能為: (IP)=(IP)+16位位移。本課件由匯編網(wǎng)()制作提供9.3 依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令n指令“jmp near ptr 標(biāo)號(hào)”的說明:n(1)16位位移=“標(biāo)號(hào)”處的地址-jmp指令后的第一個(gè)字節(jié)的地址;n(2)near ptr指明此處的位移為16位位移,進(jìn)行的是段內(nèi)近轉(zhuǎn)移;n(3)16位位移的范圍為 -3276932767,用補(bǔ)碼表示;n(4)16位位移由編譯程序在編譯時(shí)算出。本課件由匯編網(wǎng)()制作提供9.4 轉(zhuǎn)移的目的地址在指令中的jmp指令n前面講的jmp指令,其對(duì)應(yīng)的機(jī)器碼中并沒有轉(zhuǎn)移的目的地址,而是相對(duì)于當(dāng)前IP的轉(zhuǎn)移位移

18、。n指令 “jmp far ptr 標(biāo)號(hào)” 實(shí)現(xiàn)的是段間轉(zhuǎn)移,又稱為遠(yuǎn)轉(zhuǎn)移。本課件由匯編網(wǎng)()制作提供9.4 轉(zhuǎn)移的目的地址在指令中的jmp指令n指令 “jmp far ptr 標(biāo)號(hào)” 功能如下:n(CS)=標(biāo)號(hào)所在段的段地址;n(IP)=標(biāo)號(hào)所在段中的偏移地址。nfar ptr指明了指令用標(biāo)號(hào)的段地址和偏移地址修改CS和IP。n我們看下面的程序 本課件由匯編網(wǎng)()制作提供9.4 轉(zhuǎn)移的目的地址在指令中的jmp指令n程序9.3: assume cs:codesg codesg segment start:mov ax,0 mov bx,0 jmp far ptr s db 256 dup (0

19、) s: add ax,1 inc ax codesg ends end start本課件由匯編網(wǎng)()制作提供9.4 轉(zhuǎn)移的目的地址在指令中的jmp指令n我們?cè)贒ebug中將程序9.3翻譯成為機(jī)器碼,看到的結(jié)果如圖:本課件由匯編網(wǎng)()制作提供n如圖中所示: 源程序中的db 256 dup (0),被Debug解釋為相應(yīng)的若干條匯編指令 。這不是關(guān)鍵,關(guān)鍵是,我們要注意一下jmp far ptr s所對(duì)應(yīng)的機(jī)器碼:EA 0B 01 BD 0B ,其中包含轉(zhuǎn)移的目的地址。9.4 轉(zhuǎn)移的目的地址在指令中的jmp指令本課件由匯編網(wǎng)()制作提供n“0B 01 BD 0B” 是目的地址在指令中的存儲(chǔ)順序,

20、高地址的“BD 0B”是轉(zhuǎn)移的段地址:0BBDH,低地址的“0B 01” 是偏移地址:010BH。n對(duì)于“jmp X 標(biāo)號(hào)”格式的指令的深入分析請(qǐng)參看附注3。9.4 轉(zhuǎn)移的目的地址在指令中的jmp指令本課件由匯編網(wǎng)()制作提供9.5 轉(zhuǎn)移地址在寄存器中的jmp指令n指令格式:jmp 16位寄存器n功能:IP =(16位寄存器)n這種指令我們?cè)谇懊娴恼n程(參見2.11節(jié))中已經(jīng)講過,這里就不再詳述。本課件由匯編網(wǎng)()制作提供9.6 轉(zhuǎn)移地址在內(nèi)存中的jmp指令n轉(zhuǎn)移地址在內(nèi)存中的jmp指令有兩種格式:(1) jmp word ptr 內(nèi)存單元地址(段內(nèi)轉(zhuǎn)移) 功能:從內(nèi)存單元地址處開始存放著一個(gè)

21、字,是轉(zhuǎn)移的目的偏移地址。 內(nèi)存單元地址可用尋址方式的任一格式給出。 示例本課件由匯編網(wǎng)()制作提供9.6 轉(zhuǎn)移地址在內(nèi)存中的jmp指令n(1) jmp word ptr 內(nèi)存單元地址(段內(nèi)轉(zhuǎn)移) 示例: mov ax,0123Hmov bx,axjmp word ptr bx執(zhí)行后,(IP)=0123Hmov ax,0123Hmov ds:0,axjmp word ptr ds:0執(zhí)行后,(IP)=0123H本課件由匯編網(wǎng)()制作提供9.6 轉(zhuǎn)移地址在內(nèi)存中的jmp指令n轉(zhuǎn)移地址在內(nèi)存中的jmp指令的第二種格式:(2) jmp dword ptr 內(nèi)存單元地址(段間轉(zhuǎn)移) 功能:從內(nèi)存單元地

22、址處開始存放著兩個(gè)字,高地址處的字是轉(zhuǎn)移的目的段地址,低地址處是轉(zhuǎn)移的目的偏移地址。(CS)=(內(nèi)存單元地址+2)(IP)=(內(nèi)存單元地址) 內(nèi)存單元地址可用尋址方式的任一格式給出。 示例本課件由匯編網(wǎng)()制作提供9.6 轉(zhuǎn)移地址在內(nèi)存中的jmp指令n(2) jmp dword ptr 內(nèi)存單元地址(段間轉(zhuǎn)移) 示例: mov ax,0123Hmov bx,axmov word ptr bx+2,0jmp dword ptr bx執(zhí)行后,(CS)=0(IP)=0123HCS:IP指向0000:0123。mov ax,0123Hmov ds:0,axmov word ptr ds:2,0jmp

23、dword ptr ds:0執(zhí)行后,(CS)=0(IP)=0123HCS:IP指向0000:0123。本課件由匯編網(wǎng)()制作提供特別提示n檢測(cè)點(diǎn)9.1(p170)n沒有完成此檢測(cè)點(diǎn),請(qǐng)不要向下進(jìn)行。本課件由匯編網(wǎng)()制作提供9.7 jcxz指令n jcxz指令為有條件轉(zhuǎn)移指令,所有的有條件轉(zhuǎn)移指令都是短轉(zhuǎn)移,在對(duì)應(yīng)的機(jī)器碼中包含轉(zhuǎn)移的位移,而不是目的地址。對(duì)IP的修改范圍都為-128127。n指令格式:jcxz 標(biāo)號(hào) (如果(cx)=0,則轉(zhuǎn)移到標(biāo)號(hào)處執(zhí)行。)n操作本課件由匯編網(wǎng)()制作提供9.7 jcxz指令njcxz 標(biāo)號(hào) 指令操作:n當(dāng)(cx)=0時(shí),(IP)=(IP)+8位位移)n8位

24、位移=“標(biāo)號(hào)”處的地址-jcxz指令后的第一個(gè)字節(jié)的地址;n8位位移的范圍為-128127,用補(bǔ)碼表示;n8位位移由編譯程序在編譯時(shí)算出。n當(dāng)(cx)=0時(shí),什么也不做(程序向下執(zhí)行)。本課件由匯編網(wǎng)()制作提供9.7 jcxz指令n我們從 jcxz的功能中可以看出,指令“jcxz 標(biāo)號(hào)”的功能相當(dāng)于: if(cx)=0)jmp short 標(biāo)號(hào); (這種用C語(yǔ)言和匯編語(yǔ)言進(jìn)行的綜合描述,或許能使你對(duì)有條件指令理解得更加清楚。)本課件由匯編網(wǎng)()制作提供特別提示n檢測(cè)點(diǎn)9.2(p171)n沒有完成此檢測(cè)點(diǎn),請(qǐng)不要向下進(jìn)行。本課件由匯編網(wǎng)()制作提供9.8 loop指令nloop指令為循環(huán)指令,

25、所有的循環(huán)指令都是短轉(zhuǎn)移,在對(duì)應(yīng)的機(jī)器碼中包含轉(zhuǎn)移的位移,而不是目的地址。對(duì)IP的修改范圍都為-128127。n指令格式:loop 標(biāo)號(hào) (cx)=(cx)-1,如果(cx)0,轉(zhuǎn)移到標(biāo)號(hào)處執(zhí)行。n操作本課件由匯編網(wǎng)()制作提供9.8 loop指令nloop 標(biāo)號(hào) 指令操作:n(1)(cx)=(cx)-1;n(2)如果(cx)0,(IP)=(IP)+8位位移。n8位位移=“標(biāo)號(hào)”處的地址-loop指令后的第一個(gè)字節(jié)的地址;n8位位移的范圍為-128127,用補(bǔ)碼表示;n8位位移由編譯程序在編譯時(shí)算出。n當(dāng)(cx)=0,什么也不做(程序向下執(zhí)行)。本課件由匯編網(wǎng)()制作提供9.8 loop指令n我們從loop的功能中可以看出,指令“l(fā)oop 標(biāo)號(hào)”的功能相當(dāng)于: (cx)-; if(cx)0)jmpshort 標(biāo)號(hào)本課件由匯編網(wǎng)()制作提供特別提示n檢測(cè)點(diǎn)9.3(p172)n沒有完成此檢測(cè)點(diǎn),請(qǐng)不要向下進(jìn)行。本課件由匯編網(wǎng)()制作提供9.9 根據(jù)位移進(jìn)行轉(zhuǎn)移的意義n前面我們講到: jmp short 標(biāo)號(hào) jmp near ptr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論