版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第2 2部分部分四四第第2章:章:2.2 8088/8086的尋址方式的尋址方式從從8088/8086的指令格式入手,論述:的指令格式入手,論述:立即數(shù)尋址方式立即數(shù)尋址方式寄存器尋址方式寄存器尋址方式存儲器尋址方式存儲器尋址方式進(jìn)而熟悉進(jìn)而熟悉8088/8086匯編語言指令格式,尤匯編語言指令格式,尤其是其中操作數(shù)的表達(dá)方法其是其中操作數(shù)的表達(dá)方法為展開為展開8088/8086指令系統(tǒng)做好準(zhǔn)備指令系統(tǒng)做好準(zhǔn)備第第2章:指令的組成章:指令的組成操作碼操作碼說明計算機(jī)要執(zhí)行哪種操作說明計算機(jī)要執(zhí)行哪種操作操作數(shù)操作數(shù)是指令執(zhí)行的參與者,即各種操作的是指令執(zhí)行的參與者,即各種操作的對象對象操作碼
2、操作碼操作數(shù)操作數(shù)指令由操作碼和操作數(shù)兩部分組成指令由操作碼和操作數(shù)兩部分組成第第2章:指令的助記符格式章:指令的助記符格式操作數(shù)操作數(shù)2 2,常被稱為,常被稱為源操作數(shù)源操作數(shù)srcsrc操作數(shù)操作數(shù)1 1,成被稱為,成被稱為目的操作數(shù)目的操作數(shù)destdest后的內(nèi)容是后的內(nèi)容是對指令的解釋對指令的解釋, ,對指令的執(zhí)對指令的執(zhí)行不起作用行不起作用 操作碼操作碼 操作數(shù)操作數(shù)1,操作數(shù)操作數(shù)2 ;注釋注釋匯編語句格式匯編語句格式第第2章:操作數(shù)的尋址方式章:操作數(shù)的尋址方式尋找操作數(shù)的過程就是尋找操作數(shù)的過程就是操作數(shù)的尋址操作數(shù)的尋址把尋找操作數(shù)的方式叫做(操作數(shù))把尋找操作數(shù)的方式叫做
3、(操作數(shù))尋址尋址方式方式MOV指令指令第第2章:章:2.2.1 立即數(shù)尋址方式立即數(shù)尋址方式操作數(shù)是指令的一部分,這種操作數(shù)被稱為操作數(shù)是指令的一部分,這種操作數(shù)被稱為立即立即數(shù)數(shù)imm可以是可以是8位數(shù)值位數(shù)值i8(00HFFH)也可以是也可以是16位數(shù)值位數(shù)值i16(0000HFFFFH)MOV AX, 0102H;AX0102H第第2章:章:2.2.2 寄存器尋址方式寄存器尋址方式操作數(shù)存放在操作數(shù)存放在CPU的內(nèi)部寄存器的內(nèi)部寄存器reg中:中:8位寄存器位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器位寄存器r16:AX、BX、CX、DX、SI、DI、BP、
4、SP4個段寄存器個段寄存器seg:CS、DS、SS、ES寄存器名表示寄存器名表示其內(nèi)容(操作數(shù))其內(nèi)容(操作數(shù))MOV AX, BX;AXBX第第2章:章: 2.2.3 存儲器尋址方式存儲器尋址方式操作數(shù)在主存儲器中,用主存地址表示操作數(shù)在主存儲器中,用主存地址表示程序設(shè)計時,程序設(shè)計時,8088采用邏輯地址表示主存地址采用邏輯地址表示主存地址段地址在默認(rèn)的或用段超越前綴指定的段寄存器中段地址在默認(rèn)的或用段超越前綴指定的段寄存器中指令中只需給出操作數(shù)的偏移地址(有效地址指令中只需給出操作數(shù)的偏移地址(有效地址EA)8086設(shè)計了多種設(shè)計了多種存儲器尋址方式存儲器尋址方式1、直接尋址方式、直接尋
5、址方式2、寄存器間接尋址方式、寄存器間接尋址方式3、寄存器相對尋址方式、寄存器相對尋址方式4、基址變址尋址方式、基址變址尋址方式5、相對基址變址尋址方式、相對基址變址尋址方式第第2章:章:1. 直接尋址方式直接尋址方式直接尋址方式的有效地址在指令中直接給出直接尋址方式的有效地址在指令中直接給出默認(rèn)的默認(rèn)的段地址在段地址在DS段寄存器,可使用段寄存器,可使用段超越前段超越前綴綴改變改變用用中括號包含有效地址中括號包含有效地址,表達(dá)存儲單元的內(nèi)容,表達(dá)存儲單元的內(nèi)容MOV AX, 2000H;AXDS:2000HMOV AX, ES: 2000H;AXES:2000H第第2章:章:2. 寄存器間接
6、尋址方式寄存器間接尋址方式有效地址存放在基址寄存器有效地址存放在基址寄存器BX或變址寄存或變址寄存器器SI、DI中中默認(rèn)的默認(rèn)的段地址在段地址在DS段寄存器,可使用段超段寄存器,可使用段超越前綴改變越前綴改變MOV AX, BX;AXDS:BX第第2章:章:3. 寄存器相對尋址方式寄存器相對尋址方式有效地址有效地址是寄存器內(nèi)容與有符號是寄存器內(nèi)容與有符號8位或位或16位位移位位移量之和,寄存器可以是量之和,寄存器可以是BX、BP或或SI、DI有效地址有效地址BX/BP/SI/DIBX/BP/SI/DI8/168/16位位移量位位移量段地址對應(yīng)段地址對應(yīng)BX/SI/DI寄存器寄存器默認(rèn)是默認(rèn)是D
7、S,對應(yīng),對應(yīng)BP寄存器寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, SI+06H;AXDS:SI+06HMOV AX, 06HSI;AXDS:SI+06H第第2章:章:4. 基址變址尋址方式基址變址尋址方式有效地址有效地址由基址寄存器(由基址寄存器(BX或或BP)的內(nèi)容加上)的內(nèi)容加上變址寄存器(變址寄存器(SI或或DI)的內(nèi)容構(gòu)成:)的內(nèi)容構(gòu)成:有效地址有效地址BX/BPSI/DI段地址對應(yīng)段地址對應(yīng)BX基址寄存器基址寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP基基址寄存器址寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, BX+SI;
8、AXDS:BX+SIMOV AX, BXSI;AXDS:BX+SI第第2章:章:5. 相對基址變址尋址方式相對基址變址尋址方式有效地址有效地址是基址寄存器(是基址寄存器(BX/BP)、變址寄存器)、變址寄存器(SI/DI)與一個)與一個8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量段地址對應(yīng)段地址對應(yīng)BX基址寄存器基址寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP基基址寄存器址寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, BX+DI+6;AXDS:BX+DI+6MOV AX, 6BX+DIMOV AX, 6BXDI
9、第第2章:存儲器尋址方式中的變量章:存儲器尋址方式中的變量變量的定義變量的定義WVAR DW 1234H;定義;定義16位變量位變量WVAR,具有初值,具有初值1234H;匯編時在數(shù)據(jù)段為其分配兩個連續(xù)的存儲單元;匯編時在數(shù)據(jù)段為其分配兩個連續(xù)的存儲單元;假設(shè)其偏移地址為假設(shè)其偏移地址為10HMOV AX,WVAR;指令功能:;指令功能:AX1234H;等同于;等同于 MOV AX,0010H相對尋址方式中,相對尋址方式中,變量名表示其偏移地址變量名表示其偏移地址,相當(dāng),相當(dāng)于位移量于位移量MOV AX, DI+WVAR;等同于;等同于 MOV AX,DI+0010H第第2章:操作數(shù)的表達(dá)符號
10、(章:操作數(shù)的表達(dá)符號(1) 操作數(shù)符號操作數(shù)符號含義(尋址方式含義(尋址方式)i8一個一個8位立即數(shù)位立即數(shù)i16一個一個16位立即數(shù)位立即數(shù)imm代表代表i8或或i16r8任意一個任意一個8位通用寄存器位通用寄存器AH, AL, BH, BL, CH, CL, DH, DLr16任意一個任意一個16位通用寄存器位通用寄存器AX, BX, CX, DX, SI, DI, BP, SPreg代表代表r8或或r16seg段寄存器段寄存器CS、DS、ES、SS第第2章:操作數(shù)的表達(dá)符號(章:操作數(shù)的表達(dá)符號(2)操作數(shù)符號操作數(shù)符號含義(尋址方式)含義(尋址方式)m8一個一個8位存儲器操作數(shù)單元(
11、包括所有主存位存儲器操作數(shù)單元(包括所有主存尋址方式)尋址方式)m16一個一個16位存儲器操作數(shù)單元(包括所有主存位存儲器操作數(shù)單元(包括所有主存尋址方式)尋址方式)mem代表代表m8或或m16dest目的操作數(shù)目的操作數(shù)src源操作數(shù)源操作數(shù) 掌握操作數(shù)的尋址方式后,進(jìn)入指令學(xué)習(xí)掌握操作數(shù)的尋址方式后,進(jìn)入指令學(xué)習(xí)匯編語言的兩種語句格式匯編語言的兩種語句格式執(zhí)行性語句執(zhí)行性語句執(zhí)行性語句用于表達(dá)處理執(zhí)行性語句用于表達(dá)處理器指令器指令(也稱為也稱為硬指令硬指令),匯編后對應(yīng)一條指,匯編后對應(yīng)一條指令代碼。由處理器指令組成的代碼序列是令代碼。由處理器指令組成的代碼序列是程序設(shè)計的主體程序設(shè)計的主
12、體標(biāo)號標(biāo)號: 硬指令助記符硬指令助記符 操作數(shù)操作數(shù),操作數(shù)操作數(shù) ;注釋注釋說明性語句說明性語句用于表達(dá)用于表達(dá)偽指令偽指令,指示源,指示源程序如何匯編、變量怎樣定義、過程怎么程序如何匯編、變量怎樣定義、過程怎么設(shè)置等設(shè)置等名字名字 偽指令助記符偽指令助記符 參數(shù)參數(shù),參數(shù)參數(shù), ;注釋注釋MOV指令的功能指令的功能立即數(shù)尋址方式立即數(shù)尋址方式寄存器尋址方式寄存器尋址方式直接尋址方式直接尋址方式間接尋址方式間接尋址方式相對尋址方式相對尋址方式基址變址尋址方式基址變址尋址方式相對基址變址尋址方式相對基址變址尋址方式第第2章:章:2.3 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令數(shù)據(jù)傳送是計算機(jī)中最基本、最重
13、要的一種操作數(shù)據(jù)傳送是計算機(jī)中最基本、最重要的一種操作, ,傳送指令也是最常使用的一類指令傳送指令也是最常使用的一類指令傳送指令把數(shù)據(jù)從一個位置傳送到另一個位置傳送指令把數(shù)據(jù)從一個位置傳送到另一個位置重點(diǎn)掌握重點(diǎn)掌握MOV XCHG XLAT PUSH POP LEA第第2章:章: 2.3.1 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令提供方便靈活的通用傳送操作提供方便靈活的通用傳送操作有有3條指令條指令MOV:數(shù)據(jù)傳送:數(shù)據(jù)傳送XCHG:數(shù)據(jù)交換:數(shù)據(jù)交換XLAT:代碼轉(zhuǎn)換:代碼轉(zhuǎn)換第第2章:章:1. 傳送指令傳送指令MOV(move)把一個字節(jié)或字的操作數(shù)從源地址傳把一個字節(jié)或字的操作數(shù)從源地址傳送
14、至目的地址送至目的地址格式:格式:MOV dest,srcdest可以是可以是reg、mem;src可以是可以是reg、mem或或imm演示演示第第2章:章:MOV指令立即數(shù)傳送指令立即數(shù)傳送mov cl,4;cl4cl4,字節(jié)傳送,字節(jié)傳送mov dx,0ffh;dx00ffhdx00ffh,字傳送,字傳送mov si,200h;si0200hsi0200h,字傳送,字傳送mov bvar,0ah;字節(jié)傳送字節(jié)傳送;假設(shè);假設(shè)bvarbvar是一個字節(jié)變量,定義如下:是一個字節(jié)變量,定義如下:bvar bvar dbdb 0 0mov wvar,0bh;字傳送字傳送;假設(shè);假設(shè)wvarwva
15、r是一個字變量,定義如下:是一個字變量,定義如下:wvar wvar dwdw 0 0明確指令是字節(jié)操作還是字操作明確指令是字節(jié)操作還是字操作第第2章:章:MOV指令寄存器傳送指令寄存器傳送mov ah,al;ahal,字節(jié)傳送,字節(jié)傳送mov bvar,ch;bvarch ,字節(jié)傳送,字節(jié)傳送mov ax,bx;axbx,字傳送,字傳送mov ds,ax;dsax,字傳送,字傳送mov bx,al;bxal,字節(jié)傳送,字節(jié)傳送 寄存器具有明確的寄存器具有明確的字節(jié)字節(jié)或或字字類型類型第第2章:章:MOV指令存儲器傳送指令存儲器傳送mov al,bx;alds:bxmov dx,bp;dxss
16、:bp+0mov dx,bp+4;dxss:bp+4mov es,si;esds:si 不存在存儲器向存儲器的傳送指令不存在存儲器向存儲器的傳送指令(串操作指令除外)(串操作指令除外)第第2章:非法指令兩個操作數(shù)類型不一致章:非法指令兩個操作數(shù)類型不一致在絕大多數(shù)雙操作數(shù)指令中,在絕大多數(shù)雙操作數(shù)指令中,目的操作數(shù)和源操目的操作數(shù)和源操作數(shù)必須具有一致的數(shù)據(jù)類型作數(shù)必須具有一致的數(shù)據(jù)類型,或者同為字量,或者同為字量,或者同為字節(jié)量,否則為非法指令或者同為字節(jié)量,否則為非法指令MOV AL, 050AH;非法指令,;非法指令,;修正:;修正: mov ax,050ahMOV SI, DL;非法指
17、令,;非法指令,;修正:;修正: mov dh,0; mov si,dx第第2章:非法指令無法確定是字節(jié)量還是字量操作章:非法指令無法確定是字節(jié)量還是字量操作當(dāng)無法通過任一個操作數(shù)確定是操作類型時,需當(dāng)無法通過任一個操作數(shù)確定是操作類型時,需要利用匯編語言的要利用匯編語言的操作符顯式指明:操作符顯式指明:byte ptr(字字節(jié)類型),節(jié)類型),word ptr(字類型)字類型)MOV BX+SI, 255 ;修正:;修正: mov byte ptrbyte ptr bx+si bx+si,255; mov word ptrword ptr bx+si bx+si,255第第2章:非法指令兩個
18、操作數(shù)都是存儲器章:非法指令兩個操作數(shù)都是存儲器8088指令系統(tǒng)除串操作指令外,指令系統(tǒng)除串操作指令外,不允許兩個操作不允許兩個操作數(shù)都是存儲單元數(shù)都是存儲單元(存儲器操作數(shù))(存儲器操作數(shù))MOV buf2, buf1;非法指令,;非法指令,;假設(shè);假設(shè)buf2和和buf1是兩個字變量是兩個字變量;修正:;修正: mov ax,buf1; mov buf2,ax;假設(shè);假設(shè)buf2和和buf1是兩個字節(jié)變量是兩個字節(jié)變量;mov al,buf1;mov buf2,al第第2章:非法指令段寄存器的操作有一些限制章:非法指令段寄存器的操作有一些限制8088指令系統(tǒng)中,指令系統(tǒng)中,能直接對能直接對
19、段寄存器段寄存器操作的指令操作的指令只有只有MOV等個別傳送指令等個別傳送指令,并且不靈活并且不靈活MOV DS, ES;非法指令,;非法指令,;修正:;修正: mov ax,es;mov ds,axMOV DS, 100H;非法指令,;非法指令,;修正:;修正: mov ax,100h;mov ds,ax MOV CS, SI;非法指令;非法指令第第2章:章:2. 交換指令交換指令XCHG(exchange)把兩個地方的數(shù)據(jù)進(jìn)行互換把兩個地方的數(shù)據(jù)進(jìn)行互換寄存器與寄存器之間對換數(shù)據(jù)寄存器與寄存器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(shù)據(jù)不
20、能在存儲器與存儲器之間對換數(shù)據(jù)XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem演示演示第第2章:章:3. 換碼指令換碼指令XLAT(translate)用于將一種代碼轉(zhuǎn)換為另一種代碼用于將一種代碼轉(zhuǎn)換為另一種代碼將將BX指定的緩沖區(qū)中、指定的緩沖區(qū)中、AL指定的位移處的一個指定的位移處的一個字節(jié)數(shù)據(jù)取出賦給字節(jié)數(shù)據(jù)取出賦給AL換碼指令執(zhí)行前:換碼指令執(zhí)行前:在主存建立一個在主存建立一個字節(jié)表格字節(jié)表格,內(nèi)含要轉(zhuǎn)換成的目的代碼,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址表格首地址存放于存放于BXBX,ALAL存放相對表格首地址的存放相對表格首地
21、址的位移量位移量換碼指令執(zhí)行后:換碼指令執(zhí)行后:將將ALAL寄存器的內(nèi)容轉(zhuǎn)換為寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼目標(biāo)代碼XLATXLAT;alds:bx+alalds:bx+al演示演示第第2章:章:2.3.2 堆棧操作指令堆棧操作指令堆棧是一個堆棧是一個“后進(jìn)先出后進(jìn)先出LIFOLIFO”(或說(或說“先進(jìn)先進(jìn)后出后出FILOFILO”)的主存區(qū)域,位于堆棧段中;)的主存區(qū)域,位于堆棧段中;SSSS段寄存器段寄存器記錄其段地址記錄其段地址堆棧只有一個出口,即當(dāng)前棧頂堆棧只有一個出口,即當(dāng)前棧頂(活動(活動端)端),用,用堆棧指針寄存器堆棧指針寄存器SPSP指定。指定。(實(shí)際(實(shí)際上,上,SPSP總指
22、向最后一個壓入堆棧的數(shù)據(jù)。)總指向最后一個壓入堆棧的數(shù)據(jù)。)堆棧只有兩種基本操作:進(jìn)棧和出棧,對堆棧只有兩種基本操作:進(jìn)棧和出棧,對應(yīng)兩條指令應(yīng)兩條指令PUSH和和POP圖示圖示第第2章:進(jìn)棧指令章:進(jìn)棧指令PUSH進(jìn)棧指令進(jìn)棧指令先使堆棧指針先使堆棧指針SP減減2,然后把一,然后把一個字操作數(shù)存入堆棧頂部個字操作數(shù)存入堆棧頂部push axpush 2000h演示演示第第2章:出棧指令章:出棧指令POP出棧指令把棧頂?shù)囊粋€字傳送至指定的目出棧指令把棧頂?shù)囊粋€字傳送至指定的目的操作數(shù),的操作數(shù),然后然后堆棧指針堆棧指針SP加加2pop axpop wvar演示演示第第2章:堆棧操作的特點(diǎn)章:堆
23、棧操作的特點(diǎn)字字?jǐn)?shù)據(jù)數(shù)據(jù)從棧頂壓入和彈出時,都是低地址從棧頂壓入和彈出時,都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)堆棧操作遵循堆棧操作遵循先進(jìn)后出先進(jìn)后出原則原則堆棧段是程序中不可或缺的一個內(nèi)存區(qū),堆棧段是程序中不可或缺的一個內(nèi)存區(qū),常用來常用來n臨時存放數(shù)據(jù)臨時存放數(shù)據(jù)n傳遞參數(shù)傳遞參數(shù)n保存和恢復(fù)寄存器保存和恢復(fù)寄存器第第2章:章:2.3.3 標(biāo)志操作指令標(biāo)志操作指令1. 標(biāo)志位操作指令標(biāo)志位操作指令CLC;復(fù)位進(jìn)位標(biāo)志:;復(fù)位進(jìn)位標(biāo)志:CF0STC;置位進(jìn)位標(biāo)志:;置位進(jìn)位標(biāo)志:CF1CMC(Complement Carry Flag);求反進(jìn)位標(biāo)志:;
24、求反進(jìn)位標(biāo)志: CFCFCLD;復(fù)位方向標(biāo)志:;復(fù)位方向標(biāo)志:DF0STD;置位方向標(biāo)志:;置位方向標(biāo)志:DF1CLI;復(fù)位中斷標(biāo)志:;復(fù)位中斷標(biāo)志:IF0STI;置位中斷標(biāo)志:;置位中斷標(biāo)志:IF12. 標(biāo)志寄存器低字節(jié)與標(biāo)志寄存器低字節(jié)與AH的傳送指令:的傳送指令:LAHF,SAHF3. 標(biāo)志寄存器出入堆棧指令:標(biāo)志寄存器出入堆棧指令:PUSHF,POPF將存儲器操作數(shù)的有效地址送至指定的將存儲器操作數(shù)的有效地址送至指定的16位通用位通用寄存器寄存器第第2章:有效地址傳送指令章:有效地址傳送指令LEA(load effective address)LEA r16, mem;r16mem的有
25、效地址的有效地址EA例題例題 有效地址的獲取有效地址的獲取mov bx,400hmov si,3chlea bx,bx+si+0f62h;BX400H3CH0F62H139EH第第2章:例題:地址傳送與內(nèi)容傳送章:例題:地址傳送與內(nèi)容傳送wvar dw 4142h;假設(shè)偏移地址為;假設(shè)偏移地址為04Hmov ax,wvar;內(nèi)容傳送內(nèi)容傳送:AX4142Hlea si,wvar;地址傳送地址傳送:SI0004Hmov cx,si;內(nèi)容傳送:;內(nèi)容傳送:CX4142Hmov di,offset wvar;mov di,0004h;利用操作符;利用操作符OFFSET獲取變量的有效地址獲取變量的有效
26、地址mov dx,di ;內(nèi)容傳送:;內(nèi)容傳送:DX4142HMOV指令的功能指令的功能XCHG指令的功能指令的功能XLAT指令的功能指令的功能堆棧的圖示堆棧的圖示SSSSSPSP0000H0000H(棧頂)(棧頂)存儲器存儲器高地址高地址堆棧段堆棧段PUSH指令的功能指令的功能POP指令的功能指令的功能第第2章:章:2.4 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令加減乘除加減乘除。這類指令會根據(jù)運(yùn)算結(jié)果影響這類指令會根據(jù)運(yùn)算結(jié)果影響狀態(tài)標(biāo)志狀態(tài)標(biāo)志。加法指令加法指令:ADD, ADC和和INC減法指令減法指令:SUB, SBB, DEC, NEG和和CMP第第2章:章:1. 加和減指令加和減指令 ADD
27、 dest,src;加法:加法:destdestsrc目的操作數(shù)不能為立即數(shù)目的操作數(shù)不能為立即數(shù)兩個操作數(shù)不能同時為存儲器尋址方式兩個操作數(shù)不能同時為存儲器尋址方式SUB dest,src;減法:減法:destdestsrc目的操作數(shù)不能為立即數(shù)目的操作數(shù)不能為立即數(shù)兩個操作數(shù)不能同時為存儲器尋址方式兩個操作數(shù)不能同時為存儲器尋址方式第第2章:例題:章:例題: 加法加法mov ax,7348h;AX7348Hadd al,27h;AL48H27H6FH,AX736FH;OF0,SF0,ZF0,PF1,CF0add ax,3fffh;AX736FH3FFFHB36EH;OF1,SF1,ZF0,
28、PF0,CF0第第2章:章:2. 帶進(jìn)位加和減指令帶進(jìn)位加和減指令 ADC dest,src;加法:;加法:destdestsrcCFSBB dest,src;減法:減法:destdestsrcCF第第2章:例題章:例題 無符號雙字加法和減法無符號雙字加法和減法mov ax,7856h;AX7856Hmov dx,8234h;DX8234Hadd ax,8998h;AX01EEH,CF1adc dx,1234h;DX9469H,CF0sub ax,4491h;AXBD5DH,CF1sbb dx,8000h;DX1468H,CF0第第2章:章:3. 比較指令比較指令CMP(compare)CMP
29、 dest,src;做減法運(yùn)算:;做減法運(yùn)算:destsrc;CMP指令將目的操作數(shù)減去源操作數(shù),但指令將目的操作數(shù)減去源操作數(shù),但差值差值不回送不回送目的操作數(shù)目的操作數(shù)比較指令通過減法運(yùn)算影響比較指令通過減法運(yùn)算影響狀態(tài)標(biāo)志狀態(tài)標(biāo)志,用,用于比較兩個操作數(shù)的大小關(guān)系于比較兩個操作數(shù)的大小關(guān)系cmp ax,bxcmp al,100第第2章:章:4. 增量和減量指令增量和減量指令I(lǐng)NC reg/mem (increment);增量(;增量(加加1):):reg/memreg/mem1DEC reg/mem (decrement);減量(;減量(減減1):):reg/memreg/mem1與加法
30、和減法指令實(shí)現(xiàn)的加與加法和減法指令實(shí)現(xiàn)的加1和減和減1不同的是:不同的是:INC和和DEC不影響不影響CF標(biāo)志標(biāo)志inc si;sisi1dec byte ptr si;sisi1第第2章:章:5. 求補(bǔ)指令求補(bǔ)指令NEG(negtive)NEG reg/mem;reg/mem0reg/memNEG指令對操作數(shù)執(zhí)行指令對操作數(shù)執(zhí)行求補(bǔ)運(yùn)算求補(bǔ)運(yùn)算,即用零,即用零減去操作數(shù),然后結(jié)果返回操作數(shù)減去操作數(shù),然后結(jié)果返回操作數(shù)求補(bǔ)運(yùn)算也可以表達(dá)成:求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按位取將操作數(shù)按位取反后加反后加1第第2章:章:2.4.2 符號擴(kuò)展指令符號擴(kuò)展指令 符號擴(kuò)展是指用一個操作數(shù)的符號位(最高
31、位)符號擴(kuò)展是指用一個操作數(shù)的符號位(最高位)形成另一個操作數(shù),形成另一個操作數(shù),后一個操作數(shù)的高位是全后一個操作數(shù)的高位是全0(正數(shù))或全(正數(shù))或全1(負(fù)數(shù))(負(fù)數(shù)) 符號擴(kuò)展指令有兩條,用來將符號擴(kuò)展指令有兩條,用來將字節(jié)轉(zhuǎn)換為字,字字節(jié)轉(zhuǎn)換為字,字轉(zhuǎn)換為雙字轉(zhuǎn)換為雙字CBW;AL擴(kuò)展成擴(kuò)展成AXCWD;AX擴(kuò)展成擴(kuò)展成AX和和DX 獲得了倍長數(shù)據(jù)獲得了倍長數(shù)據(jù)第第2章:章:2.4.3 乘法和除法指令乘法和除法指令乘法指令分乘法指令分無符號無符號和和有符號有符號乘法指令乘法指令MUL reg/mem;無符號乘法;無符號乘法IMUL reg/mem;有符號乘法;有符號乘法除法指令分除法指令
32、分無符號無符號和和有符號有符號除法指令除法指令DIV reg/mem;無符號除法;無符號除法IDIV reg/mem;有符號;有符號除除法法Mul al ;無符號字節(jié)乘:;無符號字節(jié)乘:ax al*alImul word ptr 2000h; 有符號字乘:有符號字乘:dx.ax ax*m16第第2章:章:2.4.4 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令 對對二進(jìn)制運(yùn)算的結(jié)果二進(jìn)制運(yùn)算的結(jié)果進(jìn)行進(jìn)行十進(jìn)制十進(jìn)制調(diào)整調(diào)整80888088指令系統(tǒng)支持兩種指令系統(tǒng)支持兩種BCDBCD碼調(diào)整運(yùn)算碼調(diào)整運(yùn)算q壓縮壓縮BCD碼碼就是通常的就是通常的8421碼;它用碼;它用4個個二進(jìn)二進(jìn)制位表示一個十進(jìn)制位,一個字節(jié)
33、可以表示兩制位表示一個十進(jìn)制位,一個字節(jié)可以表示兩個十進(jìn)制位,即個十進(jìn)制位,即0099q非壓縮非壓縮BCD碼碼用用8個個二進(jìn)制位表示一個十進(jìn)制二進(jìn)制位表示一個十進(jìn)制位,只用低位,只用低4位表示一個十進(jìn)制位位表示一個十進(jìn)制位09,高,高4位位任意,通常默認(rèn)為任意,通常默認(rèn)為0第第2章:編碼的比較章:編碼的比較真值(十進(jìn)制)真值(十進(jìn)制)864二進(jìn)制編碼二進(jìn)制編碼08H40H壓縮壓縮BCD碼碼08H64H非壓縮非壓縮BCD碼碼08H0604HASCII碼碼38H3634H壓縮壓縮BCD碼加、減法調(diào)整指令碼加、減法調(diào)整指令DAA DAS非壓縮非壓縮BCD碼加減乘除法調(diào)整指令碼加減乘除法調(diào)整指令A(yù)AA
34、 AAS AAM AAD第第2章:章:2.5 位操作類指令位操作類指令 以以二進(jìn)制位二進(jìn)制位為基本單位進(jìn)行數(shù)據(jù)的操作為基本單位進(jìn)行數(shù)據(jù)的操作當(dāng)需要對字節(jié)或字?jǐn)?shù)據(jù)中的各個二進(jìn)制位操作時,當(dāng)需要對字節(jié)或字?jǐn)?shù)據(jù)中的各個二進(jìn)制位操作時,可以考慮采用位操作類指令可以考慮采用位操作類指令要注意這些指令對標(biāo)志位的影響要注意這些指令對標(biāo)志位的影響1. 邏輯運(yùn)算指令邏輯運(yùn)算指令A(yù)ND OR XOR NOT TEST2. 移位指令移位指令SHL SHR SAR3. 循環(huán)移位指令循環(huán)移位指令ROL ROR RCL RCR第第2章:章:2.5.1 邏輯運(yùn)算指令邏輯運(yùn)算指令雙操作數(shù)雙操作數(shù)邏輯指令邏輯指令A(yù)ND、OR、
35、XOR和和TEST設(shè)置設(shè)置CFOF0,根據(jù)結(jié)果設(shè)置根據(jù)結(jié)果設(shè)置SF、ZF和和PF狀態(tài);狀態(tài);運(yùn)算指令助記符運(yùn)算指令助記符 reg, imm/reg/mem運(yùn)算指令助記符運(yùn)算指令助記符 mem, imm/reg 單操作數(shù)單操作數(shù)邏輯指令邏輯指令NOT不影響標(biāo)志位,操不影響標(biāo)志位,操作數(shù)與作數(shù)與INC、DEC和和NEG一樣:一樣:NOT reg/mem第第2章:邏輯與指令章:邏輯與指令A(yù)ND對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果送目的操作數(shù)對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果送目的操作數(shù)AND dest,srcAND dest,src;destdestdestdestsrcsrc第第2章:邏輯或指令章:邏輯
36、或指令OR對兩個操作數(shù)執(zhí)行邏輯或運(yùn)算,結(jié)果送目的操作數(shù)對兩個操作數(shù)執(zhí)行邏輯或運(yùn)算,結(jié)果送目的操作數(shù)OR dest,srcOR dest,src;destdestdestdestsrcsrc第第2章:邏輯異或指令章:邏輯異或指令XOR對兩個操作數(shù)執(zhí)行邏輯異或運(yùn)算,結(jié)果送目的操作數(shù)對兩個操作數(shù)執(zhí)行邏輯異或運(yùn)算,結(jié)果送目的操作數(shù)XOR dest,srcXOR dest,src;destdestdestdestsrcsrc第第2章:測試指令章:測試指令TEST對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,對兩個操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果并不送結(jié)果并不送目的操作數(shù)目的操作數(shù),僅按,僅按AND指令影響標(biāo)志指令影響標(biāo)志TES
37、T dest,srcTEST dest,src;destdestsrcsrc AND與與TEST指令的關(guān)系,指令的關(guān)系,同同SUB與與CMP指令的關(guān)系一樣指令的關(guān)系一樣第第2章:邏輯非指令章:邏輯非指令NOT對一個操作數(shù)執(zhí)行邏輯非運(yùn)算對一個操作數(shù)執(zhí)行邏輯非運(yùn)算NOT reg/memNOT reg/mem;reg/memreg/memreg/memreg/mem第第2章:例章:例2.13 邏輯運(yùn)算邏輯運(yùn)算mov al,75h;AL75Hand al,32h;AL30H;CFOF0, SF0,ZF0,PF1xor al,0f1h;AL80H;CFOF0,SF1,ZF0,PF0not al;AL7F
38、H,標(biāo)志不變,標(biāo)志不變第第2章:邏輯運(yùn)算指令的應(yīng)用章:邏輯運(yùn)算指令的應(yīng)用and bl,11110110b;BL中中D0和和D3清清0,其余位不變,其余位不變or bl,00001001b;BL中中D0和和D3置置1,其余位不變,其余位不變xor bl,00001001b;BL中中D0和和D3求反,其余位不變求反,其余位不變 AND指令可用于復(fù)位某些位(同指令可用于復(fù)位某些位(同0相與),不影響其他位相與),不影響其他位 OR指令可用于置位某些位(同指令可用于置位某些位(同1相或),不影響其他位相或),不影響其他位 XOR指令可用于求反某些位(同指令可用于求反某些位(同1相異或),不影響其他位相
39、異或),不影響其他位邏輯運(yùn)算指令常用應(yīng)用邏輯運(yùn)算指令常用應(yīng)用1.對寄存器清零對寄存器清零 AND AX,0 MOV AX,0 XOR AX,AX2.對對8位寄存器低位寄存器低4位清零位清零 AND AL, 0F0h; 對對8位寄存器高位寄存器高4為清零為清零 AND AL,0FH邏輯運(yùn)算指令常用應(yīng)用邏輯運(yùn)算指令常用應(yīng)用3.將數(shù)字將數(shù)字(09)轉(zhuǎn)換為轉(zhuǎn)換為ASCII碼碼 MOV AL,05H OR AL,30H 或者或者ADD AL,30H4.大小寫轉(zhuǎn)換大小寫轉(zhuǎn)換(A 41H 01000001B a 61H 01100001B) 小寫轉(zhuǎn)換為大寫小寫轉(zhuǎn)換為大寫 AND AL, 11011111b
40、大寫轉(zhuǎn)化為小寫大寫轉(zhuǎn)化為小寫 OR AL,00100000b 大小寫轉(zhuǎn)換大小寫轉(zhuǎn)換 XOR AL,00100000b邏輯運(yùn)算指令常用應(yīng)用邏輯運(yùn)算指令常用應(yīng)用5.比較兩個操作數(shù)是否相同比較兩個操作數(shù)是否相同 例例. 判斷判斷AL中數(shù)據(jù)是否為中數(shù)據(jù)是否為3CH XOR AL,3CH 結(jié)果判斷結(jié)果判斷 ZF=1,則,則(AL)=3CH ZF=0, 則則(AL)3CH6.將指定數(shù)據(jù)求反將指定數(shù)據(jù)求反 (AL)=2AH XOR AL,0FFH 將數(shù)據(jù)指定位求反將數(shù)據(jù)指定位求反邏輯運(yùn)算指令常用應(yīng)用邏輯運(yùn)算指令常用應(yīng)用7.判斷數(shù)據(jù)是正負(fù)數(shù)判斷數(shù)據(jù)是正負(fù)數(shù) TEST AH,80H看看ZF標(biāo)志標(biāo)志 ZF=1,說
41、明結(jié)果為說明結(jié)果為0,則數(shù)據(jù)首,則數(shù)據(jù)首位肯定是位肯定是0,則數(shù)據(jù)是正數(shù);,則數(shù)據(jù)是正數(shù); ZF=0,說明結(jié)果不為說明結(jié)果不為0,則數(shù)據(jù),則數(shù)據(jù)首位肯定是首位肯定是1,則數(shù)據(jù)是負(fù)數(shù);,則數(shù)據(jù)是負(fù)數(shù);邏輯運(yùn)算指令常用應(yīng)用邏輯運(yùn)算指令常用應(yīng)用8.判斷數(shù)據(jù)的奇偶性判斷數(shù)據(jù)的奇偶性 TEST AH,01H看看ZF標(biāo)志標(biāo)志 ZF=1,說明結(jié)果為說明結(jié)果為0,則數(shù)據(jù)最,則數(shù)據(jù)最低位肯定是低位肯定是0,則數(shù)據(jù)是偶數(shù);,則數(shù)據(jù)是偶數(shù); ZF=0,說明結(jié)果不為說明結(jié)果不為0,則數(shù)據(jù),則數(shù)據(jù)最低位肯定是最低位肯定是1,則數(shù)據(jù)是奇數(shù);,則數(shù)據(jù)是奇數(shù);第第2章:章:2.5.2 移位指令移位指令將操作數(shù)移動一位或多位,
42、分成邏輯移位將操作數(shù)移動一位或多位,分成邏輯移位和算術(shù)移位,分別具有左移或右移操作和算術(shù)移位,分別具有左移或右移操作按照移入的位設(shè)置進(jìn)位標(biāo)志按照移入的位設(shè)置進(jìn)位標(biāo)志CF,根據(jù)移位,根據(jù)移位后的結(jié)果影響后的結(jié)果影響SF、ZF、PF第第2章:邏輯(算術(shù))左移指令章:邏輯(算術(shù))左移指令SHL(SAL)SHL或或SAL reg/mem,1/CL;reg/mem左移左移1或或CL位位;最低位補(bǔ);最低位補(bǔ)0,最高位進(jìn)入,最高位進(jìn)入CF演示演示第第2章:邏輯右移指令章:邏輯右移指令SHRSHR reg/mem,1/CL;reg/mem右移右移1/CL位位;最高位補(bǔ);最高位補(bǔ)0,最低位進(jìn)入,最低位進(jìn)入CF演
43、示演示第第2章:算術(shù)右移指令章:算術(shù)右移指令SARSAR reg/mem,1/CL;reg/mem右移右移1/CL位位;最高位不變,最低位進(jìn)入;最高位不變,最低位進(jìn)入CF演示演示第第2章:例章:例2.15 數(shù)據(jù)移位數(shù)據(jù)移位mov dx,6075h;DX01100000 01110101Bshl dx,1;DX11000000 11101010B;CF0,SF1、ZF0、PF0sar dx,1;DX11100000 01110101B;CF0,SF1、ZF0、PF0shr dx,1;DX01110000 00111010B;CF1,SF0、ZF0、PF1mov cl,4;CL4,標(biāo)志不變,標(biāo)志不
44、變sar dx,cl;DX00000111 00000011B;CF1,SF0、ZF0、PF1第第2章:例章:例2.16 將將AL寄存器中的無符號數(shù)乘以寄存器中的無符號數(shù)乘以10 xor ah,ah;實(shí)現(xiàn);實(shí)現(xiàn)AH0,同時使,同時使CF0shl ax,1;AX2ALmov bx,ax;BXAX2ALshl ax,1;AX4ALshl ax,1;AX8ALadd ax,bx;AX8AL2AL10ALsub ah,ahand ah,0 邏輯左移一位相當(dāng)于無符號數(shù)乘以邏輯左移一位相當(dāng)于無符號數(shù)乘以2 邏輯右移一位相當(dāng)于無符號數(shù)除以邏輯右移一位相當(dāng)于無符號數(shù)除以2第第2章:章:2.5.3 循環(huán)移位指令
45、循環(huán)移位指令循環(huán)移位指令類似移位指令,但要將從一循環(huán)移位指令類似移位指令,但要將從一端移出的位返回到另一端形成循環(huán)。分為端移出的位返回到另一端形成循環(huán)。分為:ROL ;不帶進(jìn)位循環(huán)左移不帶進(jìn)位循環(huán)左移ROR ;不帶進(jìn)位循環(huán)右移不帶進(jìn)位循環(huán)右移RCL ;帶進(jìn)位循環(huán)左移帶進(jìn)位循環(huán)左移RCR ;帶進(jìn)位循環(huán)右移帶進(jìn)位循環(huán)右移循環(huán)移位指令的操作數(shù)形式與移位指令相循環(huán)移位指令的操作數(shù)形式與移位指令相同,按指令功能設(shè)置進(jìn)位標(biāo)志同,按指令功能設(shè)置進(jìn)位標(biāo)志CF,但不影,但不影響響SF、ZF、PF、AF標(biāo)志標(biāo)志演示演示演示演示演示演示演示演示SHL和和SAL指令的功能指令的功能SHR指令的功能指令的功能SAR指令
46、的功能指令的功能ROL指令的功能指令的功能ROR指令的功能指令的功能RCL指令的功能指令的功能RCR指令的功能指令的功能第第2章:章:2.6 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 控制轉(zhuǎn)移類指令用于實(shí)現(xiàn)控制轉(zhuǎn)移類指令用于實(shí)現(xiàn)分支、循環(huán)、分支、循環(huán)、過程過程等程序結(jié)構(gòu),是僅次于傳送指令等程序結(jié)構(gòu),是僅次于傳送指令的常用指令的常用指令 控制轉(zhuǎn)移類指令通過控制轉(zhuǎn)移類指令通過改變改變IP(和(和CS)值,值,實(shí)現(xiàn)程序執(zhí)行順序的改變實(shí)現(xiàn)程序執(zhí)行順序的改變第第2章:章:2.6 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 地址尋址方式:地址尋址方式:相對尋址方式相對尋址方式直接尋址方式直接尋址方式間接尋址方式間接尋址方式注意和操
47、作數(shù)的尋址方式加以區(qū)分注意和操作數(shù)的尋址方式加以區(qū)分相對尋址和直接尋址時,一般采用地址的相對尋址和直接尋址時,一般采用地址的標(biāo)號標(biāo)號Label;間接尋址時,采用寄存器名和;間接尋址時,采用寄存器名和存儲器操作數(shù)存儲器操作數(shù).第第2章:章:2.6 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 段內(nèi)轉(zhuǎn)移:在當(dāng)前短段內(nèi)轉(zhuǎn)移:在當(dāng)前短64kB范圍內(nèi)轉(zhuǎn)移,不范圍內(nèi)轉(zhuǎn)移,不需要改變需要改變CS段地址,只要改變段地址,只要改變IP偏移地址偏移地址,也稱,也稱“近轉(zhuǎn)移近轉(zhuǎn)移”段間轉(zhuǎn)移:從當(dāng)前代碼段跳轉(zhuǎn)到另一個代段間轉(zhuǎn)移:從當(dāng)前代碼段跳轉(zhuǎn)到另一個代碼段,需更改碼段,需更改CS段地址和段地址和IP偏移地址,也偏移地址,也稱稱“遠(yuǎn)
48、轉(zhuǎn)移遠(yuǎn)轉(zhuǎn)移”第第2章:章:2.6.1 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令(jump) 操作數(shù)操作數(shù)label是要轉(zhuǎn)移到的是要轉(zhuǎn)移到的目標(biāo)地址目標(biāo)地址(目的目的地址地址、轉(zhuǎn)移地址轉(zhuǎn)移地址)只要執(zhí)行無條件轉(zhuǎn)移指令只要執(zhí)行無條件轉(zhuǎn)移指令JMP,就使程序,就使程序轉(zhuǎn)到指定的目標(biāo)地址,從目標(biāo)地址處開始轉(zhuǎn)到指定的目標(biāo)地址,從目標(biāo)地址處開始執(zhí)行指令執(zhí)行指令JMP labelJMP label;程序轉(zhuǎn)向;程序轉(zhuǎn)向labellabel標(biāo)號指定的地址標(biāo)號指定的地址第第2章:無條件轉(zhuǎn)移指令章:無條件轉(zhuǎn)移指令JMPJMP label;段內(nèi)轉(zhuǎn)移、相對尋址段內(nèi)轉(zhuǎn)移、相對尋址;IPIP位移量位移量 JMP r16/m16;段內(nèi)轉(zhuǎn)
49、移、間接尋址段內(nèi)轉(zhuǎn)移、間接尋址;IPr16/m16 JMP far ptr label;段間轉(zhuǎn)移、直接尋址段間轉(zhuǎn)移、直接尋址;IP偏移地址偏移地址,CS段地址段地址 JMP far ptr mem;段間轉(zhuǎn)移,間接尋址段間轉(zhuǎn)移,間接尋址;IPmem,CSmem2演示演示演示演示演示演示演示演示演示演示第第2章:章:2.6.2 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令Jcc(cc是一個總的表示,代是一個總的表示,代表轉(zhuǎn)換條件的意思):表轉(zhuǎn)換條件的意思):根據(jù)指定的條件確根據(jù)指定的條件確定程序是否發(fā)生轉(zhuǎn)移。定程序是否發(fā)生轉(zhuǎn)移。只能用于短轉(zhuǎn)移只能用于短轉(zhuǎn)移。其通用格式為:其通用格式為:Jcc
50、label;條件滿足條件滿足,發(fā)生轉(zhuǎn)移發(fā)生轉(zhuǎn)移;IPIP8位位移量;位位移量;否則,順序執(zhí)行否則,順序執(zhí)行第第2章:章:Jcc指令的分類指令的分類Jcc指令不影響標(biāo)志,但要利用標(biāo)志(表指令不影響標(biāo)志,但要利用標(biāo)志(表2-3)根據(jù)利用的標(biāo)志位不同,分成三種情況:根據(jù)利用的標(biāo)志位不同,分成三種情況: 判斷單個標(biāo)志位狀態(tài)判斷單個標(biāo)志位狀態(tài) 比較無符號數(shù)高低比較無符號數(shù)高低 比較有符號數(shù)大小比較有符號數(shù)大小 Jcc指令實(shí)際雖然只有指令實(shí)際雖然只有16條,但卻有條,但卻有30個助記符個助記符 采用多個助記符,目的是為了方便記憶和使用采用多個助記符,目的是為了方便記憶和使用第第2章:章:1. 判斷單個標(biāo)志
51、位狀態(tài)判斷單個標(biāo)志位狀態(tài) JZ/JE和和JNZ/JNE利用零標(biāo)志利用零標(biāo)志ZF,判斷結(jié)果是否為零(或相等),判斷結(jié)果是否為零(或相等) JS和和JNS利用符號標(biāo)志利用符號標(biāo)志SF,判斷結(jié)果是正是負(fù),判斷結(jié)果是正是負(fù) JO和和JNO利用溢出標(biāo)志利用溢出標(biāo)志OF,判斷結(jié)果是否產(chǎn)生溢出,判斷結(jié)果是否產(chǎn)生溢出 JP/JPE和和JNP/JPO利用奇偶標(biāo)志利用奇偶標(biāo)志PF,判斷結(jié)果中,判斷結(jié)果中“1”的個數(shù)是偶是奇的個數(shù)是偶是奇 JC/JB/JNAE和和JNC/JNB/JAE利用進(jìn)位標(biāo)志利用進(jìn)位標(biāo)志CF,判斷結(jié)果是否進(jìn)位或借位,判斷結(jié)果是否進(jìn)位或借位第第2章:例題章:例題2.19題目:題目:處理處理AX中
52、存放的無符號數(shù),如果是偶數(shù)則中存放的無符號數(shù),如果是偶數(shù)則除以除以2,如果是奇數(shù)則加,如果是奇數(shù)則加1后除以后除以2問題:問題:如何判斷如何判斷AX中的數(shù)據(jù)是奇數(shù)還是偶數(shù)?中的數(shù)據(jù)是奇數(shù)還是偶數(shù)?解答:解答:判斷判斷AX最低位是最低位是“0”(偶數(shù)),還是(偶數(shù)),還是“1”(奇數(shù))??梢杂梦徊僮黝愔噶睿ㄆ鏀?shù))??梢杂梦徊僮黝愔噶?:用邏輯與指令將除最低位外的其他位變成用邏輯與指令將除最低位外的其他位變成0,保留最低位,保留最低位不變。判斷這個數(shù)據(jù)是不變。判斷這個數(shù)據(jù)是0,AX就是偶數(shù);否則,為奇數(shù)就是偶數(shù);否則,為奇數(shù)2:將最低位用移位指令移至進(jìn)位標(biāo)志,判斷進(jìn)位標(biāo)志是將最低位用移位指令移至進(jìn)
53、位標(biāo)志,判斷進(jìn)位標(biāo)志是0,AX就是偶數(shù);否則,為奇數(shù)就是偶數(shù);否則,為奇數(shù)3:將最低位用移位指令移至最高位(符號位),判斷符號將最低位用移位指令移至最高位(符號位),判斷符號標(biāo)志是標(biāo)志是0,AX就是偶數(shù);否則,為奇數(shù)就是偶數(shù);否則,為奇數(shù)第第2章:例題章:例題2.19解答解答1 用用JZ指令實(shí)現(xiàn)指令實(shí)現(xiàn) test ax,01h ;測試;測試AX的最低位的最低位D0(不用(不用AND指令,以免改變指令,以免改變AX) jz even ;標(biāo)志;標(biāo)志ZF1,即,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移內(nèi)是偶數(shù),程序轉(zhuǎn)移 add ax,1 ;標(biāo)志;標(biāo)志ZF0,即,即D01:AX內(nèi)的奇數(shù),加內(nèi)的奇數(shù),加1eve
54、n: shr ax,1;AXAX2用右移一位的方法實(shí)現(xiàn)除以用右移一位的方法實(shí)現(xiàn)除以2。本例中用本例中用RCR指令比指令比SHR指令更好。指令更好。第第2章:例題章:例題2.19解答解答2 用用JNC指令實(shí)現(xiàn)指令實(shí)現(xiàn)mov bx,axshr bx,1 ;將;將AX的最低位的最低位D0移進(jìn)移進(jìn)CFjnc even;標(biāo)志;標(biāo)志CF0,即,即D00:AX內(nèi)是偶數(shù),程序轉(zhuǎn)移內(nèi)是偶數(shù),程序轉(zhuǎn)移add ax,1;標(biāo)志;標(biāo)志CF1,即,即D01:AX內(nèi)的奇數(shù),加內(nèi)的奇數(shù),加1even:shr ax,1 ;AXAX2還可用還可用SAR、ROR和和RCR指令指令第第2章:例章:例2.20 判斷是否為字母判斷是否為
55、字母Y;寄存器;寄存器AL中是字母中是字母Y(含大小寫),則令(含大小寫),則令A(yù)H0,否則令否則令A(yù)H1cmp al,y;比較;比較AL與小寫字母與小寫字母yje next;相等,轉(zhuǎn)移;相等,轉(zhuǎn)移cmp al,Y ;不相等,;不相等,;繼續(xù)比較;繼續(xù)比較AL與大寫字母與大寫字母Yje next;相等,轉(zhuǎn)移;相等,轉(zhuǎn)移mov ah,-1;不相等,令;不相等,令A(yù)H1jmp done;無條件轉(zhuǎn)移指令;無條件轉(zhuǎn)移指令next:mov ah,0;相等的處理:令;相等的處理:令A(yù)H0done:第第2章:章:2. 比較無符號數(shù)高低比較無符號數(shù)高低無符號數(shù)的大小用高(無符號數(shù)的大小用高(Above)、低(
56、)、低(Below)表示,需要利用表示,需要利用CF確定高低、利用確定高低、利用ZF標(biāo)志確定相標(biāo)志確定相等(等(Equal)兩數(shù)的高低分成兩數(shù)的高低分成4種關(guān)系,對應(yīng)種關(guān)系,對應(yīng)4條指令條指令JB(JNAE):目的操作數(shù)低于(不高于等于)源操作數(shù)):目的操作數(shù)低于(不高于等于)源操作數(shù)JNB(JAE):目的操作數(shù)不低于(高于等于)源操作數(shù)):目的操作數(shù)不低于(高于等于)源操作數(shù)JBE(JNA):目的操作數(shù)低于等于(不高于)源操作數(shù)):目的操作數(shù)低于等于(不高于)源操作數(shù)JNBE(JA):目的操作數(shù)不低于等于(高于)源操作數(shù)):目的操作數(shù)不低于等于(高于)源操作數(shù)第第2章:章:3. 比較有符號數(shù)
57、大小比較有符號數(shù)大小判斷有符號數(shù)的大(判斷有符號數(shù)的大(Greater)、?。ǎ?、?。↙ess),),需要組合需要組合OF、SF標(biāo)志、并利用標(biāo)志、并利用ZF標(biāo)志確定相等標(biāo)志確定相等與否與否兩數(shù)的大小分成兩數(shù)的大小分成4種關(guān)系,分別對應(yīng)種關(guān)系,分別對應(yīng)4條指令條指令JL(JNGE):目的操作數(shù)小于(不大于等于)源操作數(shù)):目的操作數(shù)小于(不大于等于)源操作數(shù)JNL(JGE):目的操作數(shù)不小于(大于等于)源操作數(shù)):目的操作數(shù)不小于(大于等于)源操作數(shù)JLE(JNG):目的操作數(shù)小于等于(不大于)源操作數(shù)):目的操作數(shù)小于等于(不大于)源操作數(shù)JNLE(JG):目的操作數(shù)不小于等于(大于)源操作數(shù)
58、):目的操作數(shù)不小于等于(大于)源操作數(shù)第第2章:例章:例2.22 求較大值求較大值cmp ax,bx;比較比較AX和和BXjae next;若若AXBX,轉(zhuǎn)移,轉(zhuǎn)移xchg ax,bx ;若若AXBX,交換,交換next:mov wmax,ax如果如果AX和和BX存放的是有符號數(shù),存放的是有符號數(shù),則條件轉(zhuǎn)移指令應(yīng)采用則條件轉(zhuǎn)移指令應(yīng)采用JGE指令指令第第2章:例章:例2.22 求較大值(另解)求較大值(另解)cmp ax,bx;比較比較AX和和BXjae nextmov wmax, bx;若若AXBX,wmaxBXjmp donenext:mov wmax,ax;若若AXBX,wmaxAX
59、done: 第第2章:章:2.6.3 循環(huán)指令循環(huán)指令一段代碼序列多次重復(fù)執(zhí)行就是循環(huán)一段代碼序列多次重復(fù)執(zhí)行就是循環(huán)8088設(shè)計有針對設(shè)計有針對CX計數(shù)器的計數(shù)循環(huán)指令計數(shù)器的計數(shù)循環(huán)指令LOOP label;循環(huán)指令循環(huán)指令;首先;首先CXCX1;然后判斷;若;然后判斷;若CX0,轉(zhuǎn)移,轉(zhuǎn)移JCXZ label;為為0循環(huán)指令循環(huán)指令:如果:如果CX0,則轉(zhuǎn)移,則轉(zhuǎn)移dec cxjnz label第第2章:例章:例2.23 數(shù)據(jù)塊傳送(字節(jié))數(shù)據(jù)塊傳送(字節(jié))mov cx,400h;設(shè)置循環(huán)次數(shù):;設(shè)置循環(huán)次數(shù):1K1024400Hmov si,offset sbuf;設(shè)置循環(huán)初值:;設(shè)置
60、循環(huán)初值:SI指向數(shù)據(jù)段源緩沖區(qū)開始指向數(shù)據(jù)段源緩沖區(qū)開始mov di,offset dbuf;DI指向附加段目的緩沖區(qū)開始(附加段)指向附加段目的緩沖區(qū)開始(附加段)again:mov al,si;循環(huán)體:實(shí)現(xiàn)數(shù)據(jù)傳送;循環(huán)體:實(shí)現(xiàn)數(shù)據(jù)傳送mov es:di,al;每次傳送一個字節(jié);每次傳送一個字節(jié)inc si;SI和和DI指向下一個單元指向下一個單元inc diloop again;循環(huán)條件判定:循環(huán)次數(shù)減;循環(huán)條件判定:循環(huán)次數(shù)減1,不為,不為0轉(zhuǎn)移(循環(huán))轉(zhuǎn)移(循環(huán))第第2章:章:2.6.4 子程序指令子程序指令子程序是完成特定功能的一段程序子程序是完成特定功能的一段程序當(dāng)主程序(調(diào)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級道德與法治第一次月考卷01(全解全析)(統(tǒng)編版)
- 綿陽2024下半年四川綿陽鹽亭縣醫(yī)療衛(wèi)生事業(yè)單位招聘高層次專業(yè)技術(shù)人才7人歷年參考題庫(頻考版)含答案解析
- 2025年安徽宿州泗縣鼎盛交通文化旅游投資有限公司招聘筆試參考題庫附帶答案詳解
- 2025年云南蒙自市糧食購銷公司招聘筆試參考題庫含答案解析
- 2025年福建福欣特殊鋼有限公司招聘筆試參考題庫含答案解析
- 2025年湖北恩施市公共汽車公司招聘筆試參考題庫含答案解析
- 2025年中國能建葛洲壩水泥公司招聘筆試參考題庫含答案解析
- 2025年甘肅華龍證券平?jīng)龇止菊衅腹P試參考題庫含答案解析
- 2025年山東省電子口岸有限公司招聘筆試參考題庫含答案解析
- 常州國際數(shù)學(xué)試卷
- GB/T 12974.2-2023交流電梯電動機(jī)通用技術(shù)條件第2部分:永磁同步電動機(jī)
- 6.8.3 數(shù)據(jù)分類實(shí)例-鳶尾花分類
- 《醫(yī)院藥品淘汰管理制度》
- 黑布林閱讀初一10《霍莉的新朋友》英文版
- 七年級英語閱讀理解50篇(附答案) 七年級英語上冊 閱讀理解專題訓(xùn)練 人教版 試題下載
- 藝術(shù)培訓(xùn)學(xué)校章程兩篇
- 《新媒體營銷與策劃》考試復(fù)習(xí)題庫(含答案)
- 數(shù)詞、介詞、形容詞(副詞)與語法填空(分層訓(xùn)練)(解析版)-【高頻考點(diǎn)】2022年高考英語二輪復(fù)習(xí)講義+分層訓(xùn)練(浙江專用)
- 保險公司優(yōu)秀員工個人先進(jìn)事跡材料【九篇】
- 電商美工年終工作總結(jié)
- 浙江寧波廣播電視集團(tuán)發(fā)射中心招考聘用筆試參考題庫答案解析
評論
0/150
提交評論