版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章 微型計(jì)算機(jī)指令系統(tǒng)(續(xù))數(shù)據(jù)傳送 (DATA TRANSFER) 通用/ I/O /目標(biāo)地址傳送/標(biāo)志傳送算術(shù)運(yùn)算(Arithmetic) 整型數(shù)據(jù)處理邏輯運(yùn)算與位操作(Logic) 邏輯數(shù)據(jù)處理串操作(String Manipulation) 字符型數(shù)據(jù)處理轉(zhuǎn)移控制(Control Transfer) 程序流控制處理MPU控制(Processor Control) 系統(tǒng)控制管理8086/8088指令系統(tǒng)(六大類)1數(shù)據(jù)傳送與尋址方式MOV AL,100; MOV CX,2000H; MOV DS, AX;MOVCX,BX;MOVSI,DXMOV AX,2000H ;MOV AL,BU
2、FFER(內(nèi)存); MOV CS:2000H, 30HMOV AX,SI;MOV BL,DI; MOV AX,SS:SI MOV CH,BX; MOV BP,SIMOV SI,SI+6;MOV DL,TABLEDI MOV BX+100,AL;MOV DX,TABLEBPMOVBXSICOUNT,AL; MOV DX,BXDI+900H; MOV DX,BP+DI+COUNTPUSH ES:2000H LEA SI,BP+DICOUNT POP ES LDS SI, DICOUNT所有數(shù)據(jù)傳輸指令不應(yīng)影響標(biāo)志位2數(shù)據(jù)傳送與尋址方式非法數(shù)據(jù)傳送指令:兩個操作數(shù)的類型不一致例如源操作數(shù)是字節(jié),而目
3、的操作數(shù)是字;或相反兩個操作數(shù)不能都是存儲器傳送指令很靈活,但主存之間的直接傳送卻不允許段寄存器的操作有一些限制段寄存器屬專用寄存器,對他們的操作能力有限尋址方式:存儲器操作數(shù)的類型需要明確默認(rèn)段寄存器默認(rèn)操作數(shù)3標(biāo)志狀態(tài)寄存器Flags3個控制標(biāo)志位6個算術(shù)和邏輯運(yùn)算結(jié)果特征奇偶位1偶借進(jìn)位半進(jìn)位溢出標(biāo)志跟蹤符號位零標(biāo)志位中斷允許1方向4算術(shù)運(yùn)算(Arithmetic)指令(1)ADD (Addition)加法:8位/16位操作數(shù),影響FLAGS ADD dest,src; (dest)(dest)+(src)ADD AX,BX; ADD CL,10H;ADD SP,2; ADD 2000H
4、, AL; ADD WORD PTRBX, 20例 : AL=7EH AH=5BH; ADD AL,AH AL=D9H注意:源操作數(shù)和目標(biāo)操作數(shù)不能同時為存儲器;不能對段寄存器進(jìn)行加法運(yùn)算,段寄存器不能參加加減法、乘除法運(yùn)算。問題:如何影響標(biāo)志位?CF=1 作為無符號數(shù)相加進(jìn)位(字節(jié)/字256/65536)OF=1 當(dāng)作為有符號數(shù)相加溢出(-128127/-3276832767)5例 AL=7EH(01111110B) AH=5BH; (01011011B)ADD AL,AH AL=D9H(11011001B)影響標(biāo)志位:CF=0(加法、無進(jìn)位);PF=0 (1的個數(shù)為奇數(shù)。注:非邏輯運(yùn)算,不
5、必關(guān)注) ;AF=1(低4位向高4位有進(jìn)位發(fā)生);ZF=0(結(jié)果不為零);SF=1(結(jié)果的最高位MSB為1);OF=1(運(yùn)算的結(jié)果超過了127,超出了帶符號數(shù)的范圍)。算術(shù)運(yùn)算(Arithmetic)指令(1)6算術(shù)運(yùn)算(Arithmetic)指令(1)ADD (Addition)加法:8位/16位操作數(shù),影響FLAGS 3AH + 72HACH,沒有進(jìn)位:CF = 0 結(jié)果不是零:ZF = 0 最高位D71:SF = 1 產(chǎn)生溢出:OF = 1 ACH10101100B 4個1,偶數(shù)個1:PF =1 BBH + 72H(1)2DH,有進(jìn)位:CF = 18EH + 72H(1)00H,結(jié)果是零
6、:ZF = 1 最高位D70:SF = 0 BBH + 72H(1)2DH,沒有溢出:OF = 0 *應(yīng)該利用哪個標(biāo)志,由程序員來決定如果將參加運(yùn)算的操作數(shù)認(rèn)為是無符號數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號數(shù),則要注意是否溢出。7ADC (ADD with Carry) (dest)(dest)+(src)+(CF) 例:MOV BX, OFFSET FIRST; L2 多位數(shù)連加: LH MOV SI,OFFSET SECOND ;L1 MOV AX, SI;L1 ADD BX, AX;L1+L2(L2) MOV AX, SI+2;H1 ADC BX+2,AX;H1+H2(H2) 類似P65例2.
7、2 5字節(jié) ADC指令主要用于多字節(jié)數(shù)據(jù)的加法運(yùn)算,如果低字節(jié)相加時產(chǎn)生進(jìn)位,則在下一次高字節(jié)相加時應(yīng)將這個進(jìn)位加進(jìn)去 算術(shù)運(yùn)算(Arithmetic)指令(2)?問題1:運(yùn)算符 專用指令:目標(biāo)操作數(shù)加1?問題2:如何在二進(jìn)制運(yùn)算基礎(chǔ)上實(shí)現(xiàn)十進(jìn)制BCD運(yùn)算指令 H1 L1 + H2 L28INC (Increment by 1) (dest)(dest)+1 加一操作 INC AX; INC DL; INC WORD PTR ES:2000H INC BYTE PTRBX; INC WORD PTR CS:DI+20INC指令的操作數(shù)不能為段寄存器BYTE PTR或WORD PTR指定隨后的存
8、儲器操作數(shù)的類型為字節(jié)或字 偽操作PTRINC指令通常用于循環(huán)程序中修改地址。 算術(shù)運(yùn)算(Arithmetic)指令(2)9 算術(shù)運(yùn)算(Arithmetic)指令(3)AAA*(ASCII adjust for Addition) 非壓縮BCD加法調(diào)整(單字節(jié))只對Unpacked BCD (00-09H)有意義;隱含操作數(shù)為:AL,AH等效:IF(AL)&(0FH)9)OR (AF)=1 THEN (AL)+6; AH+1;AF=CF=1; (AL)&0FH ELSE (AL)&0FH; 例:MOV AH,0 MOV AL,7 MOV BL,8 ADD AL,BL;(AL=0FH); AAA
9、; (AL+6=21=10101;10101 &0FH=0101=5) (AH=1,AL=5) 調(diào)整前相加結(jié)果放在AL中,調(diào)整后,非壓縮BCD的結(jié)果的低位放在AL中,高位在AH中。BCD碼調(diào)整指令,使CPU能夠?qū)τ肂CD碼表示的十進(jìn)制數(shù)進(jìn)行加減乘除運(yùn)算,并將結(jié)果調(diào)整成正確的BCD值。打*指令一般了解10 算術(shù)運(yùn)算(Arithmetic)指令(3)AAA*(ASCII adjust for Addition) 非壓縮BCD加法調(diào)整P67例2.3 4609+3875=? LEA SI,STRING1LEA BX,STRING2LEA DI,SUMCLCMOV AL,SIADC AL,BXAAAMO
10、V DI,AL MOV AL,SI+1ADC AL,BX+1AAAMOV DI+1,AL.String1(SI)String2(BX)SUM0900060405070803041. ASCII碼BCD帶進(jìn)位(CF)加AAA調(diào)整2. 順序-羅列(窮舉)結(jié)構(gòu)11 算術(shù)運(yùn)算(Arithmetic)指令(3)AAA*(ASCII adjust for Addition) P67例2.3 4609+3875=? LEA SI,STRING1 LEA BX,STRING2 LEA DI,SUM MOV CX,4 CLCNEXT:MOV AL,SI ADC AL,BX AAA MOV DI,AL INC S
11、I INC BX INC DI DEC CX JNZ NEXT3. (循環(huán)/條件指令)結(jié)構(gòu)String1(SI)String2(BX)SUM9064578304090006040507080304 12算術(shù)運(yùn)算(Arithmetic)指令(4)DAA*(Decimal adjust for Addition) 壓縮BCD加法調(diào)整隱含操作數(shù)是AL。DAA只對AL的內(nèi)容進(jìn)行調(diào)整,不會改變AH。兩個BCD碼相加后可能得到不正確的BCD結(jié)果,可用DAA指令對AL寄存器中的“和”進(jìn)行調(diào)整,即可得到預(yù)期的結(jié)果。(單字節(jié))只對Packed BCD (00-99H) 有意義;等效:IF(AL)&(0FH)9)
12、OR (AF)=1 THEN (AL)+6; AF=1; IF(AL)9F )OR(CF)=1 THEN (AL)+60H; CF=1;例: 68+59=? 127 得到壓縮BCD碼MOV AL,68H; MOV BL,59H;ADD AL,BL;(AL=C1H 不正確 ,AF=1);DAA;(CF=1=AF , AL=27H, 可連加)上例的DAA調(diào)整,相當(dāng)于加66H,即相當(dāng)于ADD AL,66H打*指令一般了解13算術(shù)運(yùn)算(Arithmetic)指令(5)減法 乘法 除法SUB/SBB/DEC/MUL/AAMDIV/AAD AAS/DAS*(調(diào)整) IMUL(有符號乘) IDIV (有符號
13、除) 例:減法:不允許兩個存儲器相減。8位或16位(注:CF=1 借位) SUB AL,CH; (dest)(dest)-(src) SUB BYTE PTR2000H, 20 SBB AX, BP+1000 ; (dest)(dest)-(src)-(CF) 帶借位的減指令主要用于多字節(jié)的減法 DEC SI; (dest)(dest)-1 DEC BYTE PTR SI; 打*指令一般了解14 當(dāng)無符號數(shù)的較小數(shù)減較大數(shù),因不夠減而產(chǎn)生借位,此時CF=1; 帶符號數(shù)相減如果結(jié)果溢出,則OF=1.算術(shù)運(yùn)算(Arithmetic)指令(5)15算術(shù)運(yùn)算(Arithmetic)指令(6)NEG (
14、Negate) 8位/16位求補(bǔ)(改變符號)絕對值不變NEG dest; (dest)0-(dest)影響6個運(yùn)算標(biāo)志位例:NEG AL; NEG BX; NEG BYTE PTR CS:2000HAL=30HNEG AL D0HCMP (Compare) (dest)-(src)影響6個運(yùn)算標(biāo)志位例: CMP AL,CH; CMP AX,BX; CMP BYTE PTR2000H, 20 JC NEXT ; 利用FLAGS結(jié)果,無符號數(shù)比較 JG NEXT ; 有符號數(shù)比較16算術(shù)運(yùn)算(Arithmetic)指令(7)16位無符號數(shù)乘法 MUL src; 默認(rèn)AX*(src) 積= DX(高
15、16位)|AX(低16位)8位無符號數(shù)乘法 MUL src; 默認(rèn)AL* (src) 積= AX(16位) MUL指令對CF和OF有影響:若運(yùn)算結(jié)果的高半部分(AH或DX中)為0,則CF=OF=0,否則CF=OF=1 例:AL=42H(66),CL=28H (40) MUL CLAX=0A50H(2640) AX,0A50H, CX=0333H MUL CX DX/AX=0020H/ 0FDF0H17算術(shù)運(yùn)算(Arithmetic)指令(7)16位無符號數(shù)除法 DIV src; 默認(rèn)被除數(shù)DX(高16位)|AX(低16位) /src(16位) 結(jié)果 DX=余數(shù)(16位) AX=商(16位) 8
16、位無符號數(shù)除法 DIV src; 默認(rèn)被除數(shù)AX(16位)/src(字節(jié))結(jié)果 AH=余數(shù)(8位) AL=商(8位) 不允許兩個字長相等的操作數(shù)相除,若被除數(shù)和除數(shù)的字長相等,則須在DIV指令前將被除數(shù)的高位擴(kuò)展8個零或16個零。例:DX=20H,AX=0FDF2H SI=333H DIV SIAX=0A50H DX=0002H CL=42H DIV CL 0028H 注意:除0/溢出(字節(jié)除:商255 OR 字:商65535)除零中斷18算術(shù)運(yùn)算(Arithmetic)指令(8)IMUL/IDIV 有符號數(shù)乘/除法 IMUL src; 字節(jié)乘法 (AX) (src)*AL; 字乘法 (DX:
17、AX) (src)*AX IDIV src; 字節(jié)除法 (AL) (AX)/(src) (AH) (AX)%(src) 字除法 (AX) (DX:AX)/(src) (DX) (DX:AX)%(src) 指令將兩個操作數(shù)均按帶符號數(shù)處理,8位和16位帶符號數(shù)的取值范圍是-128+127 32768+32767. 指令對CF和OF有影響:若運(yùn)算結(jié)果的高半部分(AH或DX中)僅為低半部分符號位的擴(kuò)展,則CF=OF=0,否則若高半部分包含運(yùn)算的有效數(shù)字則CF=OF=1。注意:除0/溢出(字節(jié)除:商超出(-128+127) OR 字:商超出(-32768+32767)除零中斷若被除數(shù)和除數(shù)的字長相等,
18、則須在IDIV指令前將被除數(shù)的符號位擴(kuò)展,使之成為16位或32位數(shù)。19CBW/CWD 擴(kuò)展字長(字節(jié)字; 字雙字)無符號數(shù):高位添加足夠個數(shù)的零有符號數(shù):高位添加足夠個數(shù)的符號位CBW:將一個字節(jié)擴(kuò)展成為字,隱含操作數(shù):AL AH CWD:將一個字?jǐn)U展成為雙字,隱含操作數(shù):AX DX比較MOV AL,4FH 和 MOV AL,0F8H CBW CBW算術(shù)運(yùn)算(Arithmetic)指令(8)20算術(shù)運(yùn)算(Arithmetic)指令(8)AAM* (ASCII adjust for Multiply) AL寄存器中的二進(jìn)制數(shù)轉(zhuǎn)換成不壓縮BCD碼,十位放在AH中,個位放在AL中。 隱含操作數(shù):A
19、L AH 等效:AH(AL)/10; (商); (AL)(AL)%10 (余數(shù)) 根據(jù)AL中的結(jié)果改變SF,ZF,PF 單字節(jié)!例:7*9=?MOV AL,07H ;(AL)=07HMOV BL,09H ;(BL)=09HMUL BL ;(AX)=07H*09H=003FHAAM ;(AH)=06H,(AL)=03H,(SF)=0,(ZF)=0,(PF)=1打*指令一般了解21AAD*( ASCII adjust for Divide):Unpacked BCD調(diào)整隱含操作數(shù):AL AH AAD與其它ASCII調(diào)整指令不同,AAD不是在除法之后,而是在除法之前進(jìn)行調(diào)整,然后用DIV進(jìn)行除法,所
20、得之商還需要用AAM進(jìn)行調(diào)整,才能得到正確的非壓縮BCD碼的結(jié)果。AL=AH*10+AL;AH=0 單字節(jié)!(AX HEX) 注意:AAD-DIV(B)-AAM例:73/2=?MOV AX,0703H ;(AH)=07H,(AL)=03HMOV BL,02H ;(BL)=02HAAD ;(AL)=49H(即十進(jìn)制數(shù)73)DIV BL ;(AL)=24H(商),(AH)=01H(余數(shù))AAM ;(AH)=03H,(AL)=06H 算術(shù)運(yùn)算(Arithmetic)指令(8)228086/8088指令系統(tǒng)(六大類)數(shù)據(jù)傳送 通用/ 輸入輸出 / 目標(biāo)地址傳送/標(biāo)志傳送 算術(shù)運(yùn)算 整型數(shù)據(jù)處理邏輯運(yùn)算
21、與位操作 邏輯數(shù)據(jù)處理串操作 字符型數(shù)據(jù)處理轉(zhuǎn)移控制 程序流控制處理(條件/無條件)MPU控制 系統(tǒng)控制管理23邏輯運(yùn)算與移位(Logical & shifting)邏 輯 運(yùn) 算AND dest,src; AND AX, BX; AND CL,08HOR dest, src; OR AL,55H; OR WORD PTR BX, DXXOR dest, src (logical Exclsive or ) XOR AX,AX; XOR CL, BXTEST dest,src 邏輯與測試,僅影響標(biāo)志位 TEST AL,80H; TEST AX,0FFFFH;ZF= AND AL,80H; AN
22、D AX,0FFFFH.TEST與AND指令 的差別. 常用于位判別,與條件轉(zhuǎn)移指令一起,共同完成對特定位狀態(tài)的判斷,并實(shí)現(xiàn)相應(yīng)的程序轉(zhuǎn)移。NOT dest ;將操作數(shù)按位取反 B:dest=255-dest; W:dest=65535-dest NOT AL; NOT WORD PTR BX NOT BYTE PTR ES: 2000H 24邏輯運(yùn)算與移位(Logical & shifting)邏 輯 運(yùn) 算位操作/判別. 8086/8088無直接位操作: 如 SETB/CLRB/JB/JNB置位(置1)可采用OR指令 OR AL, 80H ;BIT7=1 OR CL, 04H 復(fù)位(清0)
23、可采用AND 指令 AND AL, 7FH ;BIT7=0實(shí)現(xiàn)某些位求反,可采用XOR 指令如:MOV AL, 0FH; (AL)=(00001111B) XOR AL, 0AAH;(AL)=(10100101B)實(shí)現(xiàn)了BIT1,3,5,7位求反XOR的另一個用途:將寄存器的內(nèi)容清零 XOR AX,AX25邏輯運(yùn)算與移位(Logical & shifting)邏輯移位( Logical shifting)SHL/SAL (SHift logical Left/Shift Arithmetic Left) 1位/CL位 相當(dāng)于無符號數(shù)*2/無符號數(shù)*2的CL次方位 SHL/SAL dest,1
24、; SHL AL,1; SHL CX,1 SHL/SAL dest,CL SHL WORD PTRBX,CL CF dest(MSB LSB) 0 移一次 當(dāng) 移位后MSBCF則OF=1SHR(Shift logical right)相當(dāng)于無符號數(shù)/2SHR dest, 1(CL) 0dest(MSBLSB)CF移一次 當(dāng)移位后新的最高位和次高位不等則OF=126邏輯運(yùn)算與移位(Logical & shifting)算術(shù)移位(Arithmetic Shifting)SAR(Shift Arithmetic right) 帶符號/2SAR dest, 1; SAR dest,CL MSBdest
25、(MSBLSB)CF算術(shù)右移和邏輯右移區(qū)別:算術(shù)右移最高位保持不變 MOV AL, 10001000B; SAR AL,1 ;10001000B=(88H= -78H) /2 AL=11000100B(C4H=-60= - 3CH) 27由于移位指令可以實(shí)現(xiàn)乘2的若干次方,且移位指令比乘法除法指令速度快得多,一般用移位指令代替乘法除法指令,速度可提高10倍甚至更多。邏輯運(yùn)算與移位(Logical & shifting)28邏輯運(yùn)算與移位(Logical & shifting)循環(huán)移位指令(Rotate Shifting) 8位或16位操作數(shù)移位/循環(huán) 不帶進(jìn)位標(biāo)志CFROL(Rotate le
26、ft)ROL dest 1/CLAL=10001000B ROL AL, 1 AL= ROR(Rotate right)ROR dest 1/CLROR WORD PTRBX, CLCFCF00010001B CF=1AL=10001000BROR AL, 1 AL=01000100B CF=0 AL=84H 48H (高低四位交換,右移四位)29邏輯運(yùn)算與移位(Logical & shifting)循環(huán)移位指令(Rotate Shifting)RCL(Rotate Through Carry Flag left)帶進(jìn)位標(biāo)志CFRCL dest 1/CLRCR(Rotate Through C
27、arry Flag right)RCR dest 1/CLCFDmax D1 D0308086/8088指令系統(tǒng)(六大類)數(shù)據(jù)傳送 通用/ 輸入輸出 / 目標(biāo)地址傳送/標(biāo)志傳送 算術(shù)運(yùn)算 整型數(shù)據(jù)處理邏輯運(yùn)算與位操作 邏輯數(shù)據(jù)處理串操作 字符型數(shù)據(jù)處理轉(zhuǎn)移控制 程序流控制處理(條件/無條件)MPU控制 系統(tǒng)控制管理31標(biāo)志控制寄存器Flags (位) TF 跟蹤標(biāo)志位 TF= 1,使CPU處于單步執(zhí)行指令的工作方式。這種方式便于進(jìn)行程序的調(diào)試。每執(zhí)行一條指令后,自動產(chǎn)生一次內(nèi)部中斷,從而使用戶能逐條指令地檢查程序。 IF 中斷允許標(biāo)志位 IF= l使CPU可以響應(yīng)可屏蔽中斷請求。 IF= 0使
28、CPU禁止響應(yīng)可屏蔽中斷請求。DF 方向標(biāo)志位 DF= l 使串操作按減地址方式進(jìn)行。也就是說,從高地址開始,每操作一次地址減小一次。DF0使串操作按增地址方式進(jìn)行。 3個控制標(biāo)志位32串操作(String Manipulation)MOVSB-W/CMPSB-W/ SCANSB-W/LODSB/STOSWSIDIB/WB/WCX個單元(字節(jié)或字)即重復(fù)循環(huán)的次數(shù)由CX決定方向+DF=0SI=src pointer (DS) DI=dest pointer(ES) DF控制INC(DF=0)/DEC B+-1/W+-2重復(fù)前綴: REP(Z)=REPEREPNZ=REPNE33串操作總是用SI
29、存放原操作數(shù)偏移地址,用DI存放目標(biāo)操作數(shù)偏移地址。原操作數(shù)默認(rèn)在DS段中,可段超越;目標(biāo)操作數(shù)默認(rèn)在ES段中,不允許段超越。串操作指令可以帶操作數(shù),也可在指令助記符后加“B”或“W”,不允許再寫操作數(shù)。MOVSB DEST,ES:SRC 串操作(String Manipulation)34串操作功能與默認(rèn)操作數(shù)REP MOVS (CX次) REPE(Z)CMPS/SCAS (重復(fù)至CX=0或ZF=0)REPNE(ZF=0)Repeat while (CX0 )and (ZF=0)。以指令結(jié)果與CX計(jì)數(shù)為條件 MOVSB /W-(ES):(DI)(DS): ( SI)不影響標(biāo)志位CMPSB/W
30、-(ES):(DI) - (DS): ( SI) 影響標(biāo)志位SCASB/W- (AL)/(AX)(ES): (DI) 影響標(biāo)志位 LODSB/W(load String): (AL/AX)(DS): (SI) STOSB/W(Store string) : (AL/AX)(ES): (DI) 358086/8088指令系統(tǒng)(六大類)數(shù)據(jù)傳送 通用/ 輸入輸出 / 目標(biāo)地址傳送/標(biāo)志傳送 算術(shù)運(yùn)算 整型數(shù)據(jù)處理邏輯運(yùn)算與位操作 邏輯數(shù)據(jù)處理串操作 字符型數(shù)據(jù)處理轉(zhuǎn)移控制 程序流控制處理(條件/無條件)MPU控制 系統(tǒng)控制管理36轉(zhuǎn)移控制(Control Transfer) -程序流控制兩大類:轉(zhuǎn)
31、移控制(Control Transfer)過程調(diào)用( Call a procedure )轉(zhuǎn)移控制要點(diǎn): 轉(zhuǎn)移到新地址-CS:IP 什么條件下轉(zhuǎn)移37轉(zhuǎn)移控制 (Control Transfer)-程序流轉(zhuǎn)移指令-無條件跳轉(zhuǎn)(Unconditional Jump)CS:IP= Instruction Pointer 下條指令地址(指針) 1.段內(nèi)直接短轉(zhuǎn)移:JMP SHORT_LABEL; 近短跳轉(zhuǎn) 當(dāng)前IP的128+127內(nèi) IP=IP+disp8 382.段內(nèi)直接轉(zhuǎn)移 JMP(JUMP)NEAR_LABEL IP=IP+disp16段內(nèi)跳轉(zhuǎn)3.段內(nèi)間接轉(zhuǎn)移JMP reg16 ;(IP) (
32、reg16)JMP MEN16 ;(IP) (mem16) 4.段間直接轉(zhuǎn)移JMP FAR_LABEL; 段間地址 CS:IP=新地址IP OFFSET FAR_LABEL ; CS SEG FAR_LABEL 轉(zhuǎn)移控制 (Control Transfer)-程序流395.段間間接轉(zhuǎn)移JMP mem32 ;(IP) (mem32) ;(CS) (mem32+2)段內(nèi)跳轉(zhuǎn)應(yīng)為16位地址段間跳轉(zhuǎn)應(yīng)為32位地址JMP SHORT JMP NEAR PTR JMP 2000H; JMP BX; JMP 0FFFFH:0 (熱啟動)JMP FAR PTR TABLESI; JMP NEAR PTR BP
33、DI轉(zhuǎn)移控制 (Control Transfer)-程序流40轉(zhuǎn)移控制 (Control Transfer)轉(zhuǎn)移指令-條件跳轉(zhuǎn)(conditional Jump) (利用CMP,TEST,計(jì)算,移位指令等結(jié)果改變程序流) JCC SHORT_LABEL; 限近短跳轉(zhuǎn) IP 128+127滿足條件 IP=IP+disp8,否則順序執(zhí)行 (IF ELSE) JZ/JE -JNZ/JNE (ZF)=1 -(ZF)=0 JS -JNS (SF)=1 -(SF)=0 JP/JPE -JNP/JPO (PF)=1 -(PF)=0 JO -JNO (OF)=1 -(OF)=0 JC -JNC (CF)=1
34、-(CF)=041轉(zhuǎn)移控制 (Control Transfer)轉(zhuǎn)移指令-條件跳轉(zhuǎn)(conditional Jump) Unsigned大小比較 P98表2.7JB/JNAE -JNB/JAE (CF)=1 -(CF)=0 JA/JNBE -JNA/JBE (CF)=0&(ZF)=0 -(CF)=1 OR (ZF)=1 signed大小比較JG/JNLE -JNG/JLE (SF)=(OF) &(ZF)=0 -(SF)(OF)OR(ZF)=1 JL/JNGE -JNL/JGE (SF) (OF) &(ZF)=0 -(SF)= (OF) OR(ZF)=142轉(zhuǎn)移控制 (Control Trans
35、fer)LOOP short_label ; loop CX times 循環(huán)控制 (Loop) LOOPZ/LOOPE short_label; (loop while zero/equal) 循環(huán)直到(CX)=0 or (ZF=0)LOOPNE/LOOPNZ short_label; (Loop while NZ/NE) 循環(huán)直到(CX)=0 or (ZF=1) JCXZ if CX=0 Jump to (Jump On CX Zero) CX為零控制調(diào)轉(zhuǎn). Do while/ while Do/ For (i=0;i100;i+)43過程調(diào)用指令 ( Call a procedure )
36、過程(Procedure);如果一些程序模塊需要在不同地方多次反復(fù)地出現(xiàn)使用,則可以將這些程序模塊設(shè)計(jì)成過程,每次需要時進(jìn)行調(diào)用。過程結(jié)束后再返回原來調(diào)用的地方(下一條指令)。(相當(dāng)于高級語言中的子程序Subroutine,或函數(shù)function),縮短源程序代碼總長度利于實(shí)現(xiàn)模塊化的程序設(shè)計(jì),便于編制、調(diào)試和維護(hù)-需要利用堆棧技術(shù),控制與傳遞參數(shù)44棧底過程調(diào)用指令 ( Call a procedure )CALL 段內(nèi)段間:直接/間接調(diào)用(過程/子程序Subroutine) RET (RETF) 過程返回 (分遠(yuǎn)近,產(chǎn)生不同RET碼(C3/CBH)不但CS:IP發(fā)生變化(新地址),而且堆棧
37、SP及其內(nèi)容均發(fā)生變化45過程調(diào)用指令 ( Call a procedure )段內(nèi)直接調(diào)用 CALL NEAR_PROC; (SP)(SP)-2,(SP)+1,(SP)(IP); (IP)(IP)+proc_disp段內(nèi)間接調(diào)用 CALL reg16/mem16 . (SP)(SP)-2,(SP)+1,(SP)(IP); (IP)reg16/mem16段間直接調(diào)用 CALL FAR_PROC; (SP)(SP)-2,(SP)+1,(SP)(CS); (CS)SEG F_PROC (SP)(SP)-2,(SP)+1,(SP)(IP); (IP)OFFSET F_PROC段間間接調(diào)用 CALL
38、MEM32; (SP)(SP)-2,(SP)+1,(SP)(CS);(CS)MEM32+2, (SP)(SP)-2,(SP)+1,(SP)(IP); (IP)MEM32 例:CALL 2000H; CALL BX; CALL NEAR PTR ES:SI CALL 2000:3000H; CALL FAR PTR2000H46過程返回指令 ( Return From Call )從近過程返回:RET(C3H ); (IP)(SP)+1:(SP), (SP)(SP)+2RET pop_value ;(C2H data_low data_high) (IP)(SP)+1:(SP), (SP)(SP
39、)+2; (SP)(SP)+pop_value =ADD SP,Pop_value 可帶一個彈出值,064k的立即數(shù),表示返回時從堆棧舍棄的字節(jié)數(shù)。從遠(yuǎn)過程返回:RETF (CBH) ; (IP)(SP)+1:(SP), (SP)(SP)+2(CS)(SP)+1:(SP), (SP)(SP)+2 RETF pop_value ; (CAH data_low data_high) IP:CS彈出 (SP)(SP)+pop_value478086/8088指令系統(tǒng)(各類重點(diǎn))數(shù)據(jù)傳送(DATA TRANSFER) 重點(diǎn):尋址(20位地址,段寄存器)算術(shù)運(yùn)算(Arithmetic) 關(guān)注:標(biāo)志位邏輯
40、運(yùn)算與位操作(Logic) 簡單(數(shù)據(jù)處理)串操作(String Manipulation) 特殊操作(硬記)轉(zhuǎn)移控制(Control Transfer) 程序流控制(重要)MPU控制(Processor Control) 系統(tǒng)控制(重要)48中斷(Interrupt)控制CPU與外設(shè)交換信息的一種方式=硬件手段影響和改變CPU執(zhí)行程序的順序(程序流)49標(biāo)志控制寄存器Flags (位) TF 跟蹤標(biāo)志位 TF= 1,使CPU處于單步執(zhí)行指令的工作方式。這種方式便于進(jìn)行程序的調(diào)試。每執(zhí)行一條指令后,自動產(chǎn)生一次內(nèi)部中斷,從而使用戶能逐條指令地檢查程序。 IF 中斷允許標(biāo)志位 IF= l使CPU
41、可以響應(yīng)可屏蔽中斷請求。 IF= 0使CPU禁止響應(yīng)可屏蔽中斷請求。DF 方向標(biāo)志位 DF= l 使串操作按減地址方式進(jìn)行。也就是說,從高地址開始,每操作一次地址減小一次。DF0使串操作按增地址方式進(jìn)行。 3個控制標(biāo)志位508088中斷結(jié)構(gòu)直接執(zhí)行軟件中斷/指令執(zhí)行結(jié)果除零(INT 00H)單步(INT 1) IF=1 TF=1溢出(INTO INT 04H)軟件中斷調(diào)用(INT xxH)非屏蔽中斷NMI(Non-Maskable Interrupt)可屏蔽中斷INTR(IF=1)內(nèi)部中斷外部中斷51中斷方式下CPU執(zhí)行程序流程528086/8088中斷過程保護(hù)斷點(diǎn)(F入棧;IF=0 TF=0; CS、IP入棧;中斷服務(wù)(中斷類型號: n )(0:4*n取向量 CS:IP);返回斷點(diǎn)(IRET:依次彈出IP
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【走向高考】2022屆高考?xì)v史人民版一輪復(fù)習(xí)習(xí)題:階段性測試題13
- 【Ks5u解析】福建省福州一中2020屆高三下學(xué)期理綜第三次模擬訓(xùn)練化學(xué)試題
- 2025年度杉木木材進(jìn)口合同范本6篇
- 高校財務(wù)數(shù)智化建設(shè)存在的問題及優(yōu)化建議
- 第六章總體發(fā)展戰(zhàn)略
- 眼睛視功能訓(xùn)練(調(diào)節(jié)集合)
- 零部件加工分類
- 食品冷凍冷藏技術(shù)考核試卷
- 香精在箱包與皮具市場的品牌提升考核試卷
- 鑄造安全生產(chǎn)標(biāo)準(zhǔn)化考核試卷
- 2025年董事長年會發(fā)言稿范文
- 醫(yī)院廉潔購銷合同
- 車間設(shè)備線路安裝方案
- 專題11 名著閱讀之《童年》(考題猜想)(期中真題速遞20題)(含答案解析)
- Unit 1 You and Me Section A 1a~Pronunciation說課稿-2024-2025學(xué)年人教版英語七年級上冊
- 補(bǔ)牙講課課件
- 電動車著火應(yīng)急預(yù)案
- 國家自然科學(xué)基金申請書模板三篇
- 系統(tǒng)運(yùn)行維護(hù)方案
- 外貿(mào)企業(yè)海外市場開拓計(jì)劃書
- (醫(yī)學(xué)課件)護(hù)理人文關(guān)懷
評論
0/150
提交評論