計算機軟硬件設計與實踐:3指令系統(tǒng)的基本指令_第1頁
計算機軟硬件設計與實踐:3指令系統(tǒng)的基本指令_第2頁
計算機軟硬件設計與實踐:3指令系統(tǒng)的基本指令_第3頁
計算機軟硬件設計與實踐:3指令系統(tǒng)的基本指令_第4頁
計算機軟硬件設計與實踐:3指令系統(tǒng)的基本指令_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、指令系統(tǒng)的基本指令 數據傳送指令算術運算指令邏輯指令串處理指令控制轉移指令處理機控制指令數據傳送指令數據傳送指令,能夠實現內部寄存器之間的數據傳送,內部寄存器與存儲器之間的數據傳送,通用數據傳送指令堆棧操作指令標志寄存器傳送指令地址傳送指令輸入輸出指令通用數據傳送指令MOV指令XCHG指令XLAT和XLATB指令MOV總結可在CPU內或CPU和存儲器之間傳送字或字節(jié)傳送的信息可從寄存器到寄存器立即數到寄存器立即數到存儲單元存儲單元到寄存器寄存器到存儲單元寄存器或存儲單元到除CS外的段寄存器段寄存器到寄存器或存儲單元MOV總結MOV指令的目的操作數不允許用立即數方式,也不允許用CS寄存器。除源操

2、作數為立即數的方式外,兩操作數必須有一個是寄存器。不允許在兩個段寄存器之間直接傳送數據不允許在兩個存儲器之間直接傳送數據立即數不能直接送段寄存器XCHG指令XCHG D,S ;(D)(S)功能:將源操作數和目的操作數的內容相互交換。注意:源操作數和目的操作數可以是通用寄存器或存儲器,但D和S不得同時是存儲器操作數。 XLAT和XLATB指令XLATB ;(AL)(BX)+(AL)該指令為換碼指令,常用于查表,并約定BX中裝入的是表的起始偏移地址,AL是相對表頭的偏移量,因而(BX)+(AL)表示所要查找的元素的有效地址,指令執(zhí)行后,該元素將送至AL寄存器,所以稱該指令為換碼指令,即從表中換取與

3、AL中的序號相對應的碼值。 XLAT指令XLAT ;無操作數XLAT Source-table ;設置形式操作數XLAT 段寄存器:Source-table;帶段超越的操作數堆棧操作指令PUSH指令POP指令進棧指令PUSH語句格式: PUSH OPS功能:將寄存器、段寄存器或存儲器中的一個字數據壓入堆棧,堆棧指針減2。(SP)SP(OPS)158SP(SP)SP(OPS)70SP指令的操作數:可以是16位的通用寄存器,段寄存器和存儲器。出棧指令POP語句格式: POP OPD功能: 將棧頂元素彈出送至某一寄存器、段寄存器(除CS外)或存儲器,堆棧指針加2。從POP指令功能可看出,該指令為PU

4、SH指令的逆過程。(SP)(OPD)70(SP)+SP (SP)(OPD)158(SP)+SP目的操作數可以是16位通用寄存器、段寄存器和存儲器,但是代碼段CS不能作為目的操作數出棧指令。標志寄存器傳送指令標志送AH指令LAHFAH送標志指令SAHF標志寄存器進棧指令PUSHF標志寄存器出棧指令POPF標志送AH指令LAHF語句格式:LAHF功能:將標志寄存器的低8位送入AH寄存器。即(FLAGS)7-0AH。該指令的執(zhí)行對標志位無影響?!纠繕酥炯拇嫫鱾魉汀?zhí)行前:(FLAGS)=0485H,(AX)=0FFFFH執(zhí)行指令:LAHF執(zhí)行前:(FLAGS)=0485H,(AX)=085FFHA

5、H送標志指令SAHF語句格式:SAHF功能:將AH的內容送入標志寄存器的低8位,高8位不變。即(AH) FLAGS7-0。從該指令功能可看出,SAHF為LAHF的逆過程。 標志寄存器進棧指令PUSHF語句格式:PUSHF功能:將標志寄存器的內容壓入堆棧。即(FLAGS)(SP)。標志寄存器出棧指令POPF功能: 將棧頂內容彈出送入標志寄存器中。即(SP)FLAGS。POPF指令與PUSHF指令互為逆過程?!纠繉酥炯拇嫫鞯膯尾綐酥綯F置位。PUSHF;(FLSGS)(SP)POP AX;(SP)AXOR AX, 0100H;設置D8=TF=1PUSH AX;(AX)(SP)POPF;(SP)

6、FLAGS,即(AX)FLAGS地址傳送指令傳送偏移地址指令 LEA傳送偏移地址及數據段首址指令LDS傳送偏移地址及附加數據段指令LES共同特點:把變量的偏移地址( LEA )或段地址和偏移地址( LDS、 LES )送給寄存器,以提供訪問變量的工具。指定的寄存器不能使用段寄存器源操作數必須使用除立即數和寄存器方式外的其它尋址方式。傳送偏移地址指令 LEA語句格式: LEA OPD,OPS功能:按源地址的尋址方式計算偏移地址,將偏移地址送入指定寄存器?!纠恐鞔嫫频刂返墨@取。MOV BX,0100H;(BX)=0100HMOV SI, 0210H;(SI) =0210HLEA BX,1234

7、BX+SI;(BX)=1544HLEA SI,BX+SI+20H;(SI)(BX)+(SI)+20HLDS指令LDS REG,SRC;(REG)(SRC)(DS)(SRC +2) 功能:把源操作數指定的4個相繼的字節(jié)送到由指令指定的寄存器及DS寄存器中。該指令常指定SI寄存器。 LES指令LES REG,SRC;(REG)(SRC)(ES)(SRC +2) 功能:將主存某字單元內容送指定寄存器。(OPS)OPD,(OPS+2)ES 該指令常指定DI寄存器。輸入輸出指令輸入指令IN輸出指令OUT外部設備最多可有65536個I/O端口。端口地址為0000H0FFFFH其中,前256個(0 0FFH

8、)端口可以直接在指令中指定算術運算類指令加法指令減運算指令乘運算指令除運算指令符號擴展指令 十進制調整指令加法指令加1指令 INC加指令ADD帶進位加指令ADC加法運算除INC不影響CF位外,其余都影響條件標志位(CF ZF SF OF PF AF)CF位是根據最高有效位是否有向高位的進位設置的。有,CF1OF根據操作數的符號及變化情況來設置若兩操作數符號相同,結果的符號與之相反,OF1OF表示帶符號數的溢出CF表示無符號數的溢出加運算指令語句格式:INC OPD功能:將目的操作數加1,結果送目的地址。即(OPD)+1OPD。INC指令是一個單操作數指令,操作數可以是寄存器或存儲器操作數。如:

9、INC BX,即(BX)+1BX。用法:加1指令可用于對計數器和地址指針進行調整,由于對CF無影響,所以無需保護狀態(tài)標志位。 加1指令 INC語句格式:ADD OPD, OPS功能:將目的操作數與源操作數相加,結果存入目的地址中,源地址的內容不改變。即(OPD)+(OPS)(OPD)。加指令ADD語句格式:ADC OPD,OPS功能:將目的操作數加源操作數再加低位進位,結果送目的地址。用法:該指令常用于多精度加法的計算。即(OPD)+(OPS)+CF (OPD)?!纠繜o符號雙字加法運算。MOVAX,4652H;(AX)=4652HADDAX,0F0F0H;(AX)=3742H,CF=1MOV

10、DX,0234H;(DX)=0234HADCDX,0F0F0H;(DX)=0F325H,CF=0帶進位加指令ADC減1指令DEC減指令SUB帶借位減指令 SBB求補指令NEG比較指令 CMP減運算指令減運算指令減法運算的條件碼設置與加法運算類似OF根據操作數的符號及變化情況來設置若兩操作數符號相反,結果的符號與減數相同,則OF1OF表示帶符號數的溢出CF表示無符號數的溢出語句格式:DEC OPD 功能:將目的操作數減1,結果送目的地址。即(OPD)1(OPD)。標志位:除CF標志位不受影響外,其余狀態(tài)標志均受影響。目的操作數:可以放在通用寄存器和存儲器中。如:DEC CX。即(CX)1CX。減

11、1指令DEC也一般用于對計數器和地址指針的調整。減1指令DEC語句格式:SUB OPD,OPS功能:目的操作數減源操作數,結果存于目的地址,源地址內容不變。即(OPD)(OPS)(OPD)指令將對CF、AF、SF、ZF、PF、OF狀態(tài)標志位有影響,使用的操作數組合與ADD指令相同。減指令SUB語句格式:SBB OPD ,OPS功能:目的操作數減源操作數再減低位借位CF,結果送目的地址。即(OPD)(OPS)CF ( OPD)用法:SBB指令常用于多精度的減法運算中。帶借位減指令 SBB語句格式:NEG OPD功能:將目的操作數的每一位求反(包括符號位)后加1,結果送目的地址。即(OPD)(OP

12、D)。或0FFFFH(OPD)1(OPD)。操作數:可以是通用寄存器或存儲器。標志位:影響SF、ZF、AF、PF、OF,在一般情況下,總使CF=1,除非操作數為零時,才使CF=0;OF標志一般情況下為0,但當操作為80H或8000H,NEG指令對其求補,結果與原操作數相同,此時OF=1。求補指令NEG比較指令 CMP語句格式:CMP OPD,OPS功能:目的操作數減源操作數,結果只影響標志位,不送入目的地址。即(OPD)(OPS)。用法:此指令常用于比較兩個數的大小,當比較指令與條件轉移指令結合使用時,可以完成各種條件判斷和相應的程序轉移。乘運算指令無符號數乘法指令MUL有符號乘指令IMUL特

13、點:目的操作數必須是累加器,源操作數可以使用除立即數方式以外的任一種尋址方法乘運算指令對CF和OF以外的條件碼無定義(狀態(tài)不定)對MUL指令,若乘積的高一半為0,CF和OF為0對MUL指令,若乘積的高一半為低一半的符號擴展,CF和OF為0無符號數乘法指令MUL語句格式: MUL OPS功能: 若是字節(jié)數據相乘,(AL)與OPS相乘得到字數據存入AX中;若是字數據相乘,則(AX)與OPS相乘得到雙字數據,高字存入DX、低字存入AX中。即字節(jié)乘法:(AL)* (OPS) (AX),字乘法:(AX) * (OPS) (DX,AX)有符號乘指令IMUL語句格式:IMUL OPS功能:字節(jié)乘法:(AL)

14、*(OPS)(AX),字乘法:(AX)*(OPS)(DX、AX)。IMUL指令除計算對象是帶符號二進制數外,其他都與MUL一樣,但計算結果不同。 【例】有符號數0B4H與11H相乘。MOVAL,0B4H;(AL)=B4HMOVBL,11H;(BL)=11HIMULBL ;(AX)=0FAF4H除運算指令無符號除指令DIV有符號除指令IDIV特點:目的操作數必須存放在AX或DX,AX中源操作數可以使用除立即數方式以外的任一種尋址方法除法指令對所有條件碼均無定義無符號除指令DIV語句格式:DIV OPS功能:字節(jié)除法:(AX)/(OPS) (AL)(商)、(AH)(余數)字除法:(DX、AX)/(

15、OPS) (AX)(商)、(DX)(余數)【例】寫出實現無符號數0400H / 0B4H運算的程序段。MOVAX,0400H;(AX)=0400HMOVBL,0B4H;(BL)=0B4HDIVBL ;商(AL)=05H,余數(AH)=7CH 語句格式:IDIV OPS功能:字節(jié)除法:(AX)/(OPS) (AL)(商)、(AH)(余數)字除法:(DX,AX)/(OPS) (AX )(商)、(DX)(余數)除法指令DIV和IDIV雖然對標志的影響未定義,但可產生溢出。【例】寫出實現有符號數0400H /0B4H運算的程序段。有符號除指令IDIVMOVAX,0400H;(AX)=0400HMOVB

16、X,0B4H;(BX)=0B4HIDIVBX;(AL)=0F3H,(AH)=24H符號擴展指令 字節(jié)轉換成字指令CBW將字轉換成雙字指令CWD語句格式:CBW功能:將AL中的符號位數據擴展至AH?!纠繉⒆止?jié)數據擴展成字數據。MOVAL,0A5HCBWADDAL,70HCBW字節(jié)轉換成字指令CBW;(AL)=0A5H;(AX)=0FFA5H;(AL)=25H;(AX)=0025H語句格式:CWD功能:將AX中的符號位數據擴展至DX 。【例】將字數據擴展成雙字數據。MOVDX, 0MOVAX, 0FFABHCWD將字轉換成雙字指令CWD;(DX)=0;(AX)=0FFABH;(DX)=0FFFF

17、H (AX)=0FFABH十進制調整指令壓縮BCD碼調整指令DAA(decimal adjust for addition)DAS (decimal adjust for subtraction)非壓縮BCD碼調整指令AAA(ASCII adjust for addition)AAS (ASCII adjust for subtraction)AAM (ASCII adjust for multiplication)AAD (ASCII adjust for division)加法的十進制調整指令DAA 語句格式:DAA功能:如果AL寄存器中低4位大于9或輔助進位(AF)=1,則(AL)=(A

18、L)+6且(AF)=1;如果(AL)=0A0H或(CF)=1,則(AL)=(AL)+60H且(CF)=1。同時,SF、ZF、PF均有影響。對OF無影響減法的十進制調整指令DAS語句格式:DAS功能:如果(AF)=1或AL寄存器中低4位大于9,則(AL)=(AL)6且(AF)=1;如果(AL)=0A0H或(CF)=1,則(AL)=(AL)60H且(CF)=1。同時SF、ZF、PF均受影響。非壓縮BCD碼調整指令加法的非壓縮BCD碼調整指令AAA減法的非壓縮BCD碼調整指令AAS乘法的非壓縮BCD碼調整指令AAM除法的非壓縮BCD碼調整指令AAD語句格式:AAA 功能:未組合的BCD加法調整指令,

19、亦可以作為ASCII碼加法調整指令。用法:必須將其和放在累加器AL中,AAA指令要緊跟在加法指令之后使用。如果AL的低4位大于9或(AF)=1,則:(AL)=(AL)+6 (AH)=(AH)+1(AF)=(CF)=1 且AL高4位清零。否則:(CF)=(AF)=0 AL高4位清零。加法的非壓縮BCD碼調整指令語句格式:AAS 功能:是未組合BCD碼減法調整指令,可對AL中的兩個未組合的十進制數相減的結果進行調整,使差成為正確的十進制數。如果AL的低4位大于9或(AF)=1,則:(AL)=(AL)6 (AH)=(AH)1 (AF)=(CF)=1 AL高4位清零。否則:(CF)=(AF)=0 AL

20、高4位清零。其他標志位OF、PF、SF、ZF不確定。減法的非壓縮BCD碼調整指令AAM未組合的BCD碼乘法調整指令AAM功能:它將AX中未組合BCD碼的乘積調整為正確的未組合的BCD碼,高位在AH中,低位在AL中。AAM具體操作如下:AHAL/0AH ;除10取整商AHALAL%0AH ;除10取余ALAADAAD ;隱含操作數AH,AL指令功能:除法運算前,先調整被除數AX內容,將AX中的兩個未組合的BCD碼轉換成一個字節(jié)的二進制數,即把非壓縮型十進制數變成二進制數。其操作為:AL(AH)10+(AL)AH0邏輯指令邏輯運算指令移位指令邏輯運算指令求反指令NOT與指令AND測試指令TEST或

21、指令OR異或指令XOR語句格式:NOT OPD功能:將目的地址中的內容逐位取反后送入目的地址。即(OPD)(OPD)操作數可以是通用寄存器或存儲器,此指令對狀態(tài)標志位無影響。 求反指令NOT語句格式:AND OPD, OPS功能:將目的操作數和源操作數進行邏輯乘運算,結果存目的地址。即(OPD)(OPS)(OPD)。說明:邏輯乘的運算法則為: 11=1,10=0,01=0,00=0用法:常用于位屏蔽和位檢驗操作。位屏蔽:是將目的操作數中指定的位設置為0。與指令AND語句格式:TEST OPD,OPS功能:源地址和目的地址的內容執(zhí)行按位的邏輯與運算,結果不送入目的地址。即(OPD)(OPS)。測

22、試指令TEST語句格式:OR OPD,OPS功能:將目的操作數和源操作數進行邏輯加運算,結果存目的地址。即(OPD)(OPS)OPD。說明:邏輯加的運算法則為:11=1,10=1,01=1,00=0。用法:常用于判斷一個數是否為零,或用于將BCD碼轉換成ASCII,以及判斷一個 數的正負?;蛑噶頞R語句格式: XOR OPD,OPS功能:目的操作數與源操作數做按位加運算,結果送入目的地址。即(OPD)(OPS) (OPD)。說明:按位加的運算法則為;11=0,10=1,01=1,00=0。即“相同為零,相異為1”,凡與1相“異或”的位將“求反”,凡與“0”相“異或” 的位保持不變。用法:根據該

23、指令特點可很容易地將寄存器清零,并同時也將進位標志位CF清零,異或指令XOR移位指令 移位指令包括算術移位指令、邏輯移位指令和循環(huán)移位指令,分別進行左移和右移操作。這些指令均有統(tǒng)一的語句格式:標號:操作符OPD,1或 標號:操作符OPD,CL其功能為將目的操作數的所有位按操作符規(guī)定的方式移動1位或按寄存器CL規(guī)定的次數(0255)移動,結果送入目的地址。目的操作數是8位(或16位)的寄存器數據或存儲器數據。移位指令SHL(shift logic left) 邏輯左移SAL(shift arithmetic left) 算術左移SHR(shift logic right) 邏輯右移SAR(shi

24、ft arithmetic right)算術右移ROL(rotate left) 循環(huán)左移ROR(rotate right)循環(huán)右移RCL(rotate left through carry)帶進位循環(huán)左移RCR(rotate right through carry)帶進位循環(huán)右移語句格式:SAL OPD,1 或SHL OPD,1 SAL OPD,CL或SHL OPD,CL功能:將(OPD)向左移動CL指定的次數,最低位補入相應的,的內容為最后移入位的值。算術左移和邏輯左移指令算術右移指令SAR語句格式:SAR OPD,1或SAR OPD,CL功能:將(OPD)向右移動CL指定的次數且最高位保

25、持不變;CF的內容為最后移入位的值。說明:算術右移是針對有符號數而言的,有符號數經算術右移后,其符號不變。語句格式:SHR OPD,1 或 SHR OPD,CL功能:將(OPD)向右移動CL規(guī)定的次數,最高位補入相應個數的,CF的內容為最后移入位的值。注:邏輯右移1位,可使無符號數除以2。 邏輯右移指令SHR語句格式:ROL OPD,1或ROL LPD,CL功能:將目的操作數的最高位與最低位連成一個環(huán),將環(huán)中的所有位一起向左移動CL規(guī)定的次數。CF的內容為最后移入位的值。循環(huán)左移指令ROL語句格式: ROR OPD,1或ROR OPD,CL功能:將目的操作數的最高位與最低位連成一個環(huán),將環(huán)中的

26、所有位一起向右移動CL規(guī)定的次數,CF的內容為最后移入位的值。循環(huán)右移指令ROR語句格式: RCL OPD, 1或RCL OPD,CL功能:將目的操作數連同CF標志一起向左循環(huán)移動CL規(guī)定的次數。 帶進位的循環(huán)左移指令語句格式:RCR OPD,1或RCR OD,CL功能:將目的操作數連同CF標志一起向右循環(huán)移動所規(guī)定的次數。 帶進位的循環(huán)右移指令重復前綴:REP REPE/REPZ REPNE/REPNZ數據串傳送指令MOVS數據串比較指令CMPS字符串掃描指令SCAS取數據串指令LODS存數據串指令STOS串操作指令用SI寄存器尋址源操作數用DI寄存器尋址目的操作數源操作數隱含的段寄存器為D

27、S,但允許段超越,目的操作數的段寄存器約定為ES,不允許段超越。每當串操作指令執(zhí)行后,可以自動實現源變址或目的變址,地址的增量可正可負,當方向標志位(DF)=0,地址增量為正;當(DF)=1時,地址增量為負,地址增量的大小取決于串操作數的類型,當操作數為字節(jié)屬性時,地址增量為1,當操作數為字屬性時,地址增量為2串操作指令特點(1)REP REP前綴用在MOVS、STOS 、LODS指令前。功能:每執(zhí)行一次串指令(CX)1,直到(CX)=0,重復執(zhí)行結束。(2)REPZ 該指令一般用在CMPS、SCAS指令前。功能:每執(zhí)行一次串指令(CX)1,并判斷ZF標志是否為0,只要(CX)=0或ZF=0,

28、則重復執(zhí)行結束。(3)REPNZ 該指令一般用在CMPS、SCAS 指令前。功能:每執(zhí)行一次串指令(CX)1,并判斷ZF標志是否為0,只要(CX)=0或ZF=1,則重復執(zhí)行結束。重復前綴指令MOVS 目的串,源串MOVSBMOVSW功能:將DS:SI所規(guī)定的源數據串中的字節(jié)、字傳送至目的串,目的串的地址由ES:DI確定。每當指令執(zhí)行后,變址寄存器SI、DI將依據傳送的操作數類型自動變址,其變址值可為1,2,分別對應于字節(jié)、字傳送。“+”、“”號由DF標志位的值確定,當DF=0,變址取“”,當DF=1,變址取“”。數據串傳送指令使用方法1、把存于數據段中的源串首/末地址放入SI寄存器2、把將要存

29、放數據串的附加段的首/末地址放入DI寄存器3、把串長放入CX寄存器4、建立方向標志(cld std)5、使用串指令傳送數據CMPS 源串,目的串CMPSB字節(jié)串比較CMPSW字串比較功能:將SI所指的源串中的一個字節(jié)(或字)存儲單元中的數據與DI所指的目的串中的一個字節(jié)(或字)存儲單元中的數據相減,并根據相減的結果設置標志,但結果并不保存。(SI)(DI)。 修改串指針,使之指向串中的下一個元素。當DF=0時,(SI)和(DI)增量。當DF=1時,(SI)和(DI)減量。串比較指令源操作數的邏輯地址為DS:SI,可以段超越,目的操作數的邏輯地址為ES:DI。比較指令執(zhí)行后,變址寄存器SI、DI

30、會自動變址,地址是增還是減,由DF標志位來確定,指令執(zhí)行時是將源操作數減去目的操作數,該操作數將影響AF、CF、OF、PF、SF和ZF標志指令前通常加重復前綴REPZ/REPE,從而當發(fā)現兩個串不同時結束比較。數據串比較指令串搜索指令SCAS 目的串 SCASB字節(jié)串搜索 SCASW字串搜索功能:AL(字節(jié))或AX(字)中的內容與DI所指的目的串中的一個字節(jié)(或字)存儲單元中的數據相減,根據相減結果設置標志位,結果不保存, 字節(jié)操作:(AL)(DI), 字操作:(AX)(DI)。 修改指針使之指向串中的下一個元素。當DF=0時,(DI)增量。當DF=1時,(DI)減量。從源串中取數指令LODS

31、 LODSB從字節(jié)串中取數 LODSW從字串中取數功能:將SI所指的源串中的一個字節(jié)(或字)存儲單元中的數據取出來送入AL(或AX)中。即: 字節(jié)操作:(SI)AL, 字操作:(SI)AX。 修改指針SI,使它指向串中的下一個元素。當DF=0時,(SI)增量。當DF=1時,(SI)減量。 STOS STOSB往字節(jié)串中存數STOSW往字串中存數功能:將AL或AX中的數據送入DI所指的目的串中的字節(jié)(或字)存儲單元中。即: 字節(jié)操作:(AL)DI, 字操作:(AX)DI。 修改指針DI,使之指向串中的下一個元素。當DF=0時,(DI)增量)。當DF=1時,(DI)減量。存數據串指令控制轉移類指令

32、用于改變程序中指令執(zhí)行路徑程序轉移指令循環(huán)指令 子程序調用指令中斷指令兩種不同類型無條件轉移:指令執(zhí)行與狀態(tài)無關,指令將改變程序執(zhí)行的順序。條件跳轉:指令的執(zhí)行要視指定的條件是否滿足,如條件滿足則轉移發(fā)生,否則順序執(zhí)行下一條指令,一般根據執(zhí)行上一指令后標志寄存器的狀態(tài)而決定是否轉移程序轉移指令無條件轉移指令JMP OP段內直接轉移段內間接轉移段間直接轉移段間間接轉移段內直接轉移當跳轉的范圍在128 +127時,稱為段內直接短轉移。格式:JMP SHORT OPR當跳轉的范圍超過一個字節(jié)所表達的有符號數范圍,但跳轉目的標號仍在同一段內,稱為段內直接近轉移。格式:JMP NEAR PTR OPR(

33、IP)+disp(IP)段內間接轉移轉移指令的操作數是16位的通用寄存器或存儲器操作數,轉移指令的目的地址為: JMP WORD PTR OPR(EA) (IP) ,EA由OPR的尋址方式確定,可使用除立即數方式以外的任一種尋址方式 段間直接轉移段間轉移是指轉移的目的地址是屬于另一個代碼段,因而在發(fā)生跳轉時,CS和IP需要一起更改,用操作數的第一個字裝入IP,第二個字裝入CS,指令轉移標號的屬性為遠標號。例如: JMP FAR PTR LABEL_NAME段間間接轉移段間間接轉移的操作數為32位存儲器操作數,存儲器中的第一個字加載IP,第二字加載CS。例如:JMP DWORD PTR BX+S

34、IJMP ALPHA BP+DI條件轉移指令簡單條件轉移指令無符號數條件轉移指令有符號數條件轉移指令 它們都有通用的語句格式和功能。語句格式: 標號: 操作符 短標號功能:如果條件滿足,則(IP)位移量IP。助記符 意義 測試條件JE/JZ 等于 (ZF)=1JNE/JNZ 不等于 (ZF)=0JC 有進位或有借位 (CF)=1JNC 無進位或無借位 (CF)=0JO 有溢出 (OF)=1JNO 無溢出 (OF)=0JP/JPE 奇偶位為1/偶 (PF)=1JNP/JPO 奇偶位為0/奇 (PF)=0JS 為負 (SF)=1JNS 為正 (SF)=0JCXZ CX內容為0 (CX)=0簡單條件

35、轉移指令無符號數條件轉移指令助記符 意義 測試條件JA/JNBE 大于或不小于等于 (CF)+(ZF)=0JAE/JNB 大于等于或不小于 (CF)=0JB/JNAE 小于或不大于等于 (CF)=1JBE/JNA 小于等于或不大于 (CF)+(ZF)=1 有符號數條件轉移指令 助記符 意義 測試條件JG/JNLE 大于或不小于等于 (SF)(OF)+(ZF)=0JGE/JNL 大于等于或不小于 (SF)(OF)=0JL/JNGE 小于或不大于等于 (SF)(OF)=1JLE/JNG 小于等于或不大于 (SF)(OF)+(ZF)=1 循環(huán)指令 共同特點:指令用CX作為記數器,重復控制指令每執(zhí)行一

36、次CX減1,用CX是否減至為零來判斷循環(huán)轉移;指令長度為2字節(jié),第一字節(jié)是指令操作碼,第二字節(jié)是相對偏移量,均屬相對短轉移。循環(huán)指令LOOP相等/為零循環(huán)指令LOOPE不相等/不為零循環(huán)指令LOOPNE LOOPLOOP 短標號功能:(CX)(CX)-1,測試CX的內容是否為0,若(CX)0則轉移至目標操作數,否則順序執(zhí)行下一條指令。它等效于以下兩條指令組合: DEC CX JNE 短標號相等/為零循環(huán)指令LOOPE語句格式: LOOPE 短標號 LOOPZ 短標號功能: (CX)1 0且ZF=1, 則程序轉移(循環(huán)); 否則,順序執(zhí)行。注意:狀態(tài)標志ZF是LOOPZ/LOOPE之前的指令執(zhí)行時所生成的ZF標志,CX寄存器減1并不影響ZF的狀態(tài)。不相等/不為零循環(huán)指令語句格式: LOOPNE 短標號 LOOPNZ 短標號功能: (CX)10, 則程序轉移(循環(huán)); 否則,順序執(zhí)行。除轉移條件需(ZF)=0以外,其余同LOOPZ。子程序調用CALL子程序是完成某一功能的特殊程序段,每當程序需要這一功能時,可以調用該子程序,而不必重復書寫這個代碼段,這樣可以主程序簡明,占用較少的內存空間。 第一條指令返回子程序A調用子程序A下一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論