計(jì)算機(jī)組成原理指令系統(tǒng).ppt
《計(jì)算機(jī)組成原理指令系統(tǒng).ppt》由會員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)組成原理指令系統(tǒng).ppt(161頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
指令系統(tǒng),4.1尋址方式4.1.1與數(shù)據(jù)有關(guān)的尋址方式4.1.2與轉(zhuǎn)移地址有關(guān)的尋址方式,,第4章,4.2指令系統(tǒng)4.2.1數(shù)據(jù)傳送指令4.2.2算術(shù)運(yùn)算指令4.2.3邏輯指令4.2.4串處理指令4.2.5控制轉(zhuǎn)移指令4.2.6處理器控制指令,,掌握8086CPU的尋址方式掌握匯編語言的指令系統(tǒng),,教學(xué)要求,指令的功能——該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫形式。指令支持的尋址方式——該指令中的操作數(shù)可以采用何種尋址方式。指令對標(biāo)志的影響——該指令執(zhí)行后是否對各個標(biāo)志位有影響,以及如何影響。其他方面——該指令其他需要特別注意的地方,如指令執(zhí)行時的約定設(shè)置、必須預(yù)置的參數(shù)、隱含使用的寄存器等。,,第4.1節(jié),,尋址方式,指令基本格式,,一個,一個或幾個,,一條指令實(shí)際上包括兩種信息即操作碼和地址碼。操作碼用來表示該指令所要完成的操作,其長度取決于指令系統(tǒng)中的指令條數(shù);地址碼用來描述該指令的操作對象,或者直接給出操作數(shù)或者指出操作數(shù)的存儲器地址或寄存器地址(即寄存器名)。,4.1.1指令格式,,指令中提供的地址數(shù),存儲單元地址碼寄存器編號,1.指令提供地址的方式顯地址方式隱地址方式,:指令中明顯指明地址。:地址隱含約定,不出現(xiàn)在指令中。,直接或間接給出,使用隱地址可以減少指令中的地址數(shù),簡化地址結(jié)構(gòu)。,,4.1.1指令格式,,指令和數(shù)據(jù)的聯(lián)系和區(qū)別聯(lián)系:都是以二進(jìn)制碼的形式存儲的。區(qū)別:指令的地址是由程序計(jì)數(shù)器(PC)規(guī)定的;而數(shù)據(jù)的地址是由指令規(guī)定的。在程序執(zhí)行過程中,要避免修改指令,但可以修改數(shù)據(jù)。,4.1.1指令格式,,指令系統(tǒng),標(biāo)號:給指令所在的地址取名字。注釋:說明程序,匯編程序不對它作任何處理。操作碼:指計(jì)算機(jī)所要執(zhí)行的操作,是一種助記符。操作數(shù):指出在指令執(zhí)行過程中所需要的操作數(shù),即指出操作數(shù)存放于何處——CPU內(nèi)部的寄存器或內(nèi)存儲器。●該字段可以是操作數(shù)本身外,也可以是操作數(shù)地址或是地址的一部分,還可以是其它有關(guān)操作數(shù)的信息?!癫僮鲾?shù)通常為是0個---兩個?!?086指令系統(tǒng)的指令大多數(shù)是雙操作數(shù)指令。,●指令的一般格式,,指令系統(tǒng),,●8086指令系統(tǒng)的指令大多數(shù)是雙操作數(shù)指令。,其中:①源操作數(shù):直接給出參加指令操作的操作數(shù)本身,或指出操作數(shù)放在什么地方;②目的操作數(shù):指出參加指令操作的操作數(shù)放在何處,并指出操作結(jié)果送至何處。③指令執(zhí)行前后,源操作數(shù)不變。,●操作數(shù)的形式(3種)立即數(shù):操作數(shù)以常量形式出現(xiàn)(指源操作數(shù))寄存器操作數(shù):要操作的數(shù)據(jù)存在R中。內(nèi)存操作數(shù):要操作的數(shù)據(jù)存在M中。,,,指令的尋址方式,操作數(shù)可能在哪?,地址的表示方法,物理地址邏輯地址:[段地址:段內(nèi)偏移量],就是尋找操作數(shù)所在地址的方法。,尋址方式:或者是尋找操作數(shù)有效地址(EA)的方法。,有效地址(EA)的構(gòu)成,①位移量:disp8位或disp16位②基址寄存器:存放在BX或BP中的內(nèi)容③變址寄存器:存放在SI或DI中的內(nèi)容,不同的組合方式不同的尋址方式,,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,1.立即尋址——指令中直接給出操作數(shù),演示,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,即操作數(shù)放在CPU內(nèi)部寄存器AX、BX、CX、DX、DI、SI、SP和BP中,不需要訪問存儲器。,,2.寄存器尋址——指令中給出存儲操作數(shù)的寄存器號,演示1,演示2,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,3.直接尋址——有效地址EA由指令直接給出。物理地址=(DS)10H+EA,演示1,演示2,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,3.直接尋址,●,4.寄存器間接尋址——指令中直接給出操作數(shù)EA;EA在基址寄存器BP、BX或變址寄存器SI、DI中,而操作數(shù)則在存儲器中。,BX、SI、DI作間址寄存器,指示數(shù)據(jù)段中的數(shù)據(jù);BP作間址寄存器,則指示的是堆棧段中的數(shù)據(jù)。,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,4.寄存器間接尋址,演示1,演示2,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,5.寄存器相對尋址,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,5.寄存器相對尋址,演示1,演示2,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,6.基址變址尋址,4.1.1,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,,6.基址變址尋址,演示1,演示2,4.1.1,,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,7.相對基址變址尋址,4.1.1,,與數(shù)據(jù)有關(guān)的尋址方式(7種),●,7.相對基址變址尋址,演示1,演示2,第4.2節(jié),指令系統(tǒng),4.2,,●8086指令系統(tǒng)按功能可分為6大類:數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令邏輯指令程序控制指令串處理指令輸入輸出類指令處理機(jī)控制指令,指令系統(tǒng),,數(shù)據(jù)傳送指令,,4.2.1,,數(shù)據(jù)傳送指令,●一.通用數(shù)據(jù)傳送指令,(1)數(shù)據(jù)傳送MOV指令,●指令格式:MOVDST,SRC;●指令功能:將數(shù)據(jù)從源地址傳送到目的地址,具有“復(fù)制”性質(zhì);DST、SRC分別為目的操作數(shù)和源操作數(shù).,例如:MOVAX,1234HMOVAL,CL,,注意,MOV指令傳送功能MOVDST,SRC,MOV也并非任意傳送,,,,,,,,,,,,,,,,,立即數(shù),段寄存器CSDSESSS,通用寄存器AXBXCXDXBPSPSIDI,存儲器,4.2.1數(shù)據(jù)傳送指令,具體實(shí)現(xiàn),1)數(shù)據(jù)在CPU內(nèi)部寄存器之間傳送MOVAL,BL;通用寄存器之間字節(jié)傳送MOVDI,BX;通用寄存器之間字傳送MOVDS,AX;通用寄存器傳送到段寄存器MOVAX,ES;段寄存器傳送到通用寄存器,2)立即數(shù)傳送至CPU內(nèi)部通用寄存器或存儲器中MOVDL,58;8位立即數(shù)傳送到通用寄存器MOVBP,016AH;16位立即數(shù)傳送到通用寄存器MOVBYTEPTR[BX],7BH;8位立即數(shù)傳送到存儲器MOVWORDPTR[BX],057BH;16位立即數(shù)傳送到存儲器,4.2.1數(shù)據(jù)傳送指令,3)數(shù)據(jù)在CPU內(nèi)部寄存器與存儲器之間的傳送MOVCL,[BX+5];字節(jié)傳送MOVAX,[SI];變址傳送MOVDS,[BX+SI];基址變址傳送MOVAX,DATA[BP][SI];相對基址變址傳送MOV[DI],BX;將BX內(nèi)容傳送到DI所指位置MOVBX,DATA1;將符號地址DATA1的存儲器內(nèi)容傳送到BX中,具體實(shí)現(xiàn),4.2.1數(shù)據(jù)傳送指令,常見錯誤,①CS和IP不能作為目的操作數(shù)MOVCS,AX(X)MOVIP,AX(X),②不允許數(shù)據(jù)直接從存儲器傳送到存儲器如要把DS段內(nèi)偏移地址為ADDR1的存儲單元的內(nèi)容,傳送至同一段內(nèi)地址為ADDR2的存儲單元中去,MOVADDR2,ADDR1MOVAL,ADDR1MOVADDR2,AL,(X),(V),4.2.1數(shù)據(jù)傳送指令,常見錯誤,③立即數(shù)不允許直接送段寄存器,也不允許在兩個段寄存器之間直接傳送信息。MOVDS,5000H(X)MOVDS,ES(X)可以用通用寄存器(如AX)為橋梁來實(shí)現(xiàn)傳送。MOVAX,5000HMOVDS,AX(V),4.2.1數(shù)據(jù)傳送指令,,,●一.通用數(shù)據(jù)傳送指令,●指令格式:XCHGOPR1,OPR2;執(zhí)行操作:OPR1?OPR2;●指令功能:將一個字節(jié)或一個字的源操作數(shù)和目的操作數(shù)相交換;,(2)交換指令XCHG,●交換可在reg之間、reg與mem之間進(jìn)行??梢允亲止?jié)交換,也可以是字交換。段寄存器內(nèi)容不能交換。,4.2.1數(shù)據(jù)傳送指令,復(fù)習(xí)提問,1.說明程序功能,尋址方式,判斷對錯并改正(1)MOV[2000H],BX(2)MOV2000H,IP(3)MOVSS,2000H(4)MOVDS,[SI+DI](5)MOVDS,ES(6)MOV[BX+DI],[AX](7)MOVBL,[BP](8)MOVBX,[BX+DI+2000H](9)MOVBH,[BP+SI](10)MOVAL,ES:[2000H](11)PUSH2000H(12)POPDS,2.現(xiàn)有:(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H。試說明下列各指令執(zhí)行后,AX寄存器的內(nèi)容。,(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[1200H](4)MOVAX,[BX](5)MOVAX,1100H[BX](6)MOVAX,[BX][SI](7)MOVAX,1100H[BX][SI],復(fù)習(xí)提問,3.假定:(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址值為0050H。指出下列源操作數(shù)的尋址方式?有效地址和物理地址值是多少?,(1)MOVAX,00ABH(2)MOVAX,[100H](3)MOVAX,[BX](4)MOVAX,[BP](5)MOVAX,[BX+10](6)MOVAX,[BX][SI](7)MOVAX,BX(8)MOVAX,VAL(9)MOVAX,ES:[BX](10)MOVAX,[SI](11)MOVAX,VAL[BX](12)MOVAX,VAL[BP][SI],堆棧:在內(nèi)存中開辟的一片數(shù)據(jù)存儲區(qū)(設(shè)置在堆棧段內(nèi)),存儲方式:是一端固定,另一端活動,即只允許在一端向該存儲區(qū)存入或取出數(shù)據(jù),數(shù)據(jù)的存取遵循“先進(jìn)后出”原則。從硬件來看,堆棧由一片存儲單元和一個指示器(即堆棧指針SP)組成。堆棧的固定端稱棧底(BOTTOM)。堆棧指針SP用于指示數(shù)據(jù)進(jìn)棧和出棧時偏移地址的變化,SP所指示的最后進(jìn)入數(shù)據(jù)的單元稱棧頂(TOP),堆棧中所有數(shù)據(jù)的存取都在棧頂進(jìn)行。,●二.堆棧操作指令,,4.2.1數(shù)據(jù)傳送指令,,●二.堆棧操作指令,4.2.1數(shù)據(jù)傳送指令,,,(1)壓棧指令格式PUSH,●格式為:PUSHSRC;(先減后壓)執(zhí)行的操作:(SP)←(SP)-2((SP)+1,(SP))←(SRC)SRC可以是內(nèi)部寄存器、段寄存器、存儲器,●二.堆棧操作指令,(2)出棧指令格式POP,●格式為:POPDST;(先彈后加)執(zhí)行的操作:(DST)←((SP)+1,(SP))(SP)←(SP)+2;DST可以是內(nèi)部寄存器、段寄存器(CS除外)、存儲器。,4.2.1數(shù)據(jù)傳送指令,,,(2)堆棧操作指令,,1)堆棧指令必須是16位雙字節(jié)數(shù),即每進(jìn)行一次PUSH操作,SP減2;每進(jìn)行一次POP操作SP加2;2)目的操作數(shù)DST,與原操作數(shù)SRC都不能為立即數(shù);3)DST不能為代碼段寄存器CS;4)堆棧指令不影響標(biāo)志位寄存器FR的值。,,注意,例:PUSH1234H?POPCS?,不能用立即尋址方式DST不能是CS,4.2.1數(shù)據(jù)傳送指令,例:實(shí)現(xiàn)兩個字型存儲器操作數(shù)BUF1及BUF2的交換,方法1:利用寄存器,方法1:利用堆棧,MOVAX,BUF1XCHGAX,BUF2MOVBUF1,AX,PUSHBUF1PUSHBUF2POPBUF1POPBUF2,例:寄存器間交換,MOVAX,1234H;AX=1234HMOVBX,5678H;BX=5678HXCHGAX,BX;AX=5678H,BX=1234HXCHGAH,AL;AX=7856H,4.2.1數(shù)據(jù)傳送指令,,(2)POPF指令,●指令功能:與PUSHF指令執(zhí)行相反的操作,將堆棧棧頂兩個單元的內(nèi)容彈出至FR?!裰噶罡袷剑篜OPF執(zhí)行操作:(FR低8位)→(SP);(FR高8位)→(SP+1);(SP)←(SP+2);,●指令格式:PUSHF●指令功能:把標(biāo)志寄存器FR的內(nèi)容壓棧;執(zhí)行操作:(SP)←(SP-2);(SP)←(FR低8位);(SP+1)←(FR高8位);,PUSHF和POPF是成對出現(xiàn),用于保護(hù)和修改FR,,標(biāo)志傳送指令,●三.,4.2.1數(shù)據(jù)傳送指令,進(jìn)入子程序pushaxpushbxpushcxpushf∶∶∶∶popfpopcxpopbxpopax返回,,子程序內(nèi)容,進(jìn)入子程序首先保護(hù)現(xiàn)場,從子程序返回前恢復(fù)現(xiàn)場,,,例:子程序應(yīng)用,4.2.1數(shù)據(jù)傳送指令,●指令功能:將源操作數(shù)傳送至一對目標(biāo)寄存器;●指令格式:LDSREG,SRC;執(zhí)行操作:(REG)←(SRC)(DS)←(SRC+2);,(2)LDS指針?biāo)图拇嫫骱虳S,4.2.1數(shù)據(jù)傳送指令,,●四.地址傳送指令,,(3)LES指針?biāo)图拇嫫骱虴S,●指令功能:除地址指針的段地址送ES外,其他與LDS類似;●指令格式:LDSREG,SRC;執(zhí)行操作:(REG)←SRC;(ES)←(SRC+2);,4.2.1數(shù)據(jù)傳送指令,例:LEABX,[BX+SI+0F62H]LDSSI,[10H]LESDI,[BX],,TABLE(DS):1000H,MOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLDSBX,TABLE;(BX)=0040H;(DS)=3000HLESBX,TABLE;(BX)=0040H;(ES)=3000H,注意:*不影響標(biāo)志位*REG不能是段寄存器*SRC必須為存儲器尋址方式,4.2.1數(shù)據(jù)傳送指令,,算術(shù)運(yùn)算指令,運(yùn)算的操作數(shù)允許是字節(jié)或字;可以是有符號數(shù),也可以是無符號數(shù)。指令中有單操作數(shù)指令,也有雙操作數(shù)指令。,4.2.2,,算術(shù)運(yùn)算指令,4.2.2,,算術(shù)運(yùn)算指令,,●1.加法指令,(1)加法指令A(yù)DD,●指令格式:ADDDST,SRC;執(zhí)行操作:(DST)←(SRC)+(DST),●指令格式:ADCDST,SRC;執(zhí)行操作:(DST)←(SRC)+(DST)+CF,運(yùn)算結(jié)果影響的標(biāo)志位:CF、DF、PF、SF、ZF和AFADC指令主要與ADD配合,實(shí)現(xiàn)多精度加法運(yùn)算,注意:ADD和ADC影響標(biāo)志位:,,1結(jié)果為負(fù)0否則,SF=,,1結(jié)果為00否則,ZF=,,1和的最高有效位有向高位的進(jìn)位0否則,CF=,1同號相同,結(jié)果相異0否則,OF=,,,CF位表示無符號數(shù)相加的溢出。OF位表示帶符號數(shù)相加的溢出。,4.2.2,,算術(shù)運(yùn)算指令,,●1.加法指令,ADD,ADC,例:n=8bit帶符號數(shù)(-128~127),無符號數(shù)(0~255),帶符號數(shù)和無符號數(shù)都不溢出,帶符號數(shù)溢出,無符號數(shù)溢出,帶符號數(shù)和無符號數(shù)都溢出,[例]雙精度數(shù)加法計(jì)算,已知:(DX)=0002H(AX)=0F365H(BX)=0005H(CX)=8100H指令序列ADDAX,CX;(1)ADCDX,BX;(2),(1)執(zhí)行后(AX)=7465HCF=1OF=1SF=0ZF=0,(2)執(zhí)行后(DX)=0008HCF=0OF=0SF=0ZF=0,4.2.2算術(shù)運(yùn)算指令,(3)加1指令I(lǐng)NC,●指令格式:INCOPR執(zhí)行操作:(OPR)←(OPR)+1,【例】INCALINCBYTEPTR[BX]INCWORDPTR[BX],INC,4.2.2算術(shù)運(yùn)算指令,SUB,SBB,DEC,4.2.2算術(shù)運(yùn)算指令,,●2.減法指令,CMP,4.2.2算術(shù)運(yùn)算指令,[例]x、y、z均為雙精度數(shù),分別存放在地址為X,X+2;Y,Y+2;Z,Z+2的存儲單元中,用指令序列實(shí)現(xiàn):w?x+y+24-z,并用W,W+2單元存放w,MOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+y,ADDAX,24ADCDX,0;x+y+24,SUBAX,ZSBBDX,Z+2;x+y+24-z,MOVW,AXMOVW+2,DX;結(jié)果存入W,W+2單元,,●3.,,(1)無符號數(shù)乘法指令MUL,乘法指令,●指令格式:MULSRC指令操作:(AX)←(AL)*(SRC);字節(jié)操作數(shù)(DX,AX)←(AX)*(SRC);字操作數(shù),4.2.2算術(shù)運(yùn)算指令,乘法指令對CF/OF的影響:,00乘積的高一半為零11否則,MUL指令,,CF,OF=,,00乘積的高一半是低一半的符號擴(kuò)展11否則,,●3.,乘法指令,CF,OF=,IMUL指令,4.2.2算術(shù)運(yùn)算指令,除法指令,,●4.,●指令I(lǐng)DIV格式與操作同DIV指令。,4.2.2算術(shù)運(yùn)算指令,除法指令,,●4.,,除法錯中斷:當(dāng)被除數(shù)遠(yuǎn)大于除數(shù)時,所得的商有可能超出它所能表達(dá)的范圍。如果存放商的寄存器AL/AX不能表達(dá),便產(chǎn)生溢出;8086CPU中就產(chǎn)生編號為0的內(nèi)部中斷——除法錯中斷。發(fā)生除法溢出的情況:對DIV指令,除數(shù)為0,或在字節(jié)除時商超過8位,或者在字除時商超過16位。對IDIV指令,除數(shù)為0,或在字節(jié)除時商不在-128~127范圍內(nèi),或者在字除時商不在-32768~32767范圍內(nèi)。,4.2.2算術(shù)運(yùn)算指令,5.符號擴(kuò)展指令,,●,●指令功能:AL?AX●指令格式:CBW若(AL)的最高有效位為0,則(AH)=00H若(AL)的最高有效位為1,則(AH)=FFH,●指令功能:AX?(DX,AX)●指令格式:CWD若(AX)的最高有效位為0,則(DX)=0000H若(AX)的最高有效位為1,則(DX)=FFFFH,4.2.2算術(shù)運(yùn)算指令,5.符號擴(kuò)展指令,,●,[例](AX)=0BA45HCBW;(AX)=0045HCWD;(DX)=0FFFFH;(AX)=0BA45H,符號擴(kuò)展;指用一個操作數(shù)的符號位(即最高位)形成另一個操作數(shù)。后一個操作數(shù)的各位是全0(正數(shù))或全1(負(fù)數(shù))。符號擴(kuò)展不改變數(shù)據(jù)大小,即將原操作數(shù)的符號位復(fù)制到擴(kuò)展后高半部分的各個位。,數(shù)據(jù)64H(表示+100),其最高位D7為0,符號擴(kuò)展后:0064H(仍表示數(shù)據(jù)100)數(shù)據(jù)ff00H(表示-256),其最高位D15為1,符號擴(kuò)展后:ffffff00H(仍表示有符號數(shù)-256),4.2.2算術(shù)運(yùn)算指令,[例]xyzv均為16位帶符號數(shù),計(jì)算(v–(x*y+z–540))/x,MOVAX,XIMULY;X*Y→(DX,AX),MOVCX,AXMOVBX,DXMOVAX,ZCWD;Z→(DX,AX),ADDCX,AXADCBX,DX;X*Y+Z→(BX,CX),SUBCX,540SBBBX,0;X*Y+Z-540,MOVAX,VCWD;V→(DX,AX)SUBAX,CXSBBDX,BX;V-(X*Y+Z-540),IDIVX;(V-(X*Y+Z-540))/X→(AX)余數(shù)→(DX),,邏輯操作類指令,●1.邏輯運(yùn)算指令,●指令功能:將OPR內(nèi)容按位取反并送回●指令格式:NOTOPR●指令操作:(OPR)←┓(OPR),●指令功能:兩個操作數(shù)按位邏輯與運(yùn)算,結(jié)果送目的操作數(shù)●指令格式:ANDDST,SRC●指令操作:(DST)←(DST)∧(SRC)●運(yùn)算法則:(全1為1,有0出0)1∧1=1,1∧0=0,0∧1=0,0∧0=0。●該指令可以清除目的操作數(shù)中與源操作數(shù)置0的對應(yīng)位,,4.2.3邏輯操作類指令,,●1.邏輯運(yùn)算指令,,(3),●指令功能:兩個操作數(shù)按位邏輯或運(yùn)算,結(jié)果送目的操作數(shù)●指令格式:ORDST,SRC●指令操作:(DST)←(DST)∨(SRC)●運(yùn)算法則:(全0為0,有1出1)1∨1=1,1∨0=1,0∨1=1,0∨0=0●該指令可以使操作數(shù)中某些位置1,而其他位保持不變,邏輯或指令OR,●指令功能:兩個操作數(shù)按位異或運(yùn)算,結(jié)果送目的操作數(shù)●指令格式:XORDST,SRC●指令操作:(DST)←(DST)⊕(SRC)●運(yùn)算法則:1⊕1=0,1⊕0=1,0⊕1=1,0⊕0=0●XOR指令可以將指定位求反,,4.2.3邏輯操作類指令,,●1.邏輯運(yùn)算指令,,(5)測試指令TEST,●指令功能:與AND指令的唯一區(qū)別是結(jié)果不回送目的地址●指令格式:TESTOPR1,OPR2●指令操作:(OPR1)∧(OPR2)●可在不改變源操作數(shù)的情況下,測試某一位或幾位的值,,4.2.3邏輯操作類指令,邏輯運(yùn)算指令,4.2.3邏輯操作類指令,例:屏蔽AL的第0、1兩位ANDAL,0FCH,********OR00100000**1*****,,******01XOR00000011******10,,,,********AND11111100******00,,********AND000000010000000*,,例:置AL的第5位為1ORAL,20H,例:使AL的第0、1位變反XORAL,3,例:測試某些位是0是1TESTAL,1JZEVEN,4.2.3邏輯操作類指令,邏輯運(yùn)算指令用途,●AND指令:用于把某位清0(與0相與,也可稱為屏蔽某位);某位保持不變(與1相與)的場合?!馩R指令:用于把某位置1(與1相或)、某位保持不變(與0相或)的場合?!馧OT指令:可用于把操作數(shù)的每一位均變反的場合?!馲OR指令:用于把某位變反(與1相異或)、某位保持不變(與0相異或)的場合?!馮EST指令:可用于只測試其值而不改變操作數(shù)的場合。,,[例1]設(shè)從鍵盤接收的一個十進(jìn)制數(shù)的ASCII碼在AL中,要求把它轉(zhuǎn)換成非壓縮BCD碼的形式(數(shù)字0-9)。,ANDAL,0FH;清0高4位,低4位不變,[例2]把AL中的非壓縮BCD碼轉(zhuǎn)換成十進(jìn)制數(shù)的ASCII碼形式。,ORAL,30H;AL中的高4位變成0011B,低4位不變,4.2.3邏輯操作類指令,,[例3]按位加運(yùn)算。MOVAL,45H;(AL)=45HXORAL,31H;(AL)=74H,01000101(45H),(XOR)00110001(31H),01110100(74H),,4.2.3邏輯操作類指令,,[例4]設(shè)某并行打印機(jī)的狀態(tài)端口是379H,其D7位是忙閑位,若D7=0表示忙,為1表示閑,測試該打印機(jī)當(dāng)前狀態(tài),若為忙繼續(xù)測試,否則順序執(zhí)行下一條指令。,MOVDX,379HWT:INAL,DXTESTAL,80HJZWT,4.2.3邏輯操作類指令,,●2.移位指令,4.3.3邏輯操作類指令,帶進(jìn)位循環(huán)左移,循環(huán)右移,循環(huán)左移,CF中總是最后移進(jìn)的位,當(dāng)CNT=1時,移位使符號位改變則置OF=1,否則清0,不影響ZF、SF、PF,,,,,[例1](AX)=0012H,(BX)=0034H,把它們裝配成(AX)=1234H,[例2](BX)=84F0H(1)(BX)為無符號數(shù),求(BX)/2,MOVCL,8ROLAX,CLADDAX,BX,(2)(BX)為帶符號數(shù),求(BX)2,(3)(BX)為帶符號數(shù),求(BX)/4,SHRBX,1;(BX)=4278H,SALBX,1;(BX)=09E0H,OF=1,MOVCL,2SARBX,CL;(BX)=0E13CH,4.2.3邏輯操作類指令,,程序控制類指令,4.2.4,,程序控制類指令,●1.無條件轉(zhuǎn)移指令JMP,●根據(jù)轉(zhuǎn)移的距離,JMP指令可分為下列兩類:段內(nèi)轉(zhuǎn)移:在同一代碼段內(nèi)進(jìn)行,又稱近(Near)轉(zhuǎn)移,只要修改IP的值即可實(shí)現(xiàn)。段間轉(zhuǎn)移:可在不同代碼段之間進(jìn)行,又稱遠(yuǎn)(Far)轉(zhuǎn)移,需要同時修改CS和IP的值。,,●根據(jù)目標(biāo)地址的指定方式,JMP指令又可分為直接轉(zhuǎn)移和間接轉(zhuǎn)移。直接轉(zhuǎn)移:是指轉(zhuǎn)移的目標(biāo)地址直接出現(xiàn)在指令中,在程序執(zhí)行前就已確定。間接轉(zhuǎn)移:指轉(zhuǎn)移的目標(biāo)地址是寄存器或內(nèi)存操作數(shù)的值,只有執(zhí)行到該條指令時才能確定。,4.2.4,,程序控制類指令,●1.無條件轉(zhuǎn)移指令JMP,,●指令格式:JMP地址標(biāo)號●指令功能:無條件轉(zhuǎn)移到DST所指向的地址,●段內(nèi)直接短跳轉(zhuǎn)格式:JMPSHORTOPR操作:(IP)←(IP)+8位位移量(符號擴(kuò)展到16位)說明:其中8位位移量是由目標(biāo)地址OPR確定的。注意:轉(zhuǎn)移格式只允許在-128到+127字節(jié)的范圍內(nèi)轉(zhuǎn)移。,●段內(nèi)直接近轉(zhuǎn)移格式:JMPNEARPTROPR操作:(IP)←(IP)+16位位移量說明:它和段內(nèi)直接短跳轉(zhuǎn)一樣,也采用相對尋址方式。注意:這種方式的位移量為16位,故它可轉(zhuǎn)移到段內(nèi)的任一個位置。,JMPlabel;段內(nèi)轉(zhuǎn)移、相對尋址;IP←IP+位移量JMPr16/m16;段內(nèi)轉(zhuǎn)移、間接尋址;IP←r16/m16JMPfarptrlabel;段間轉(zhuǎn)移、直接尋址;IP←偏移地址,CS←段地址JMPfarptrmem;段間轉(zhuǎn)移,間接尋址;IP←[mem],CS←[mem+2],演示,演示,●1.無條件轉(zhuǎn)移指令JMP,,演示,演示,演示,4.2.4程序控制類指令,,4.2.4程序控制類指令,●2.條件轉(zhuǎn)移指令,,條件轉(zhuǎn)移指令的通用匯編格式:JCCLABEL●功能:如果條件為真,則轉(zhuǎn)向標(biāo)號處,否則順序執(zhí)行下一條指令?!裾f明:其中cc為條件,LABEL是要轉(zhuǎn)向的標(biāo)號。在8086~80286中,該地址應(yīng)在與當(dāng)前IP值的-128~+127范圍之內(nèi),即只能使用與轉(zhuǎn)移地址有關(guān)的尋址方式的段內(nèi)短轉(zhuǎn)移格式,其位移量占用一個字節(jié)。,(2)有符號數(shù)的條件轉(zhuǎn)移指令,(3)無符號數(shù)的條件轉(zhuǎn)移指令,[例1]比較無符號數(shù)大小,將較大的數(shù)存放AX寄存器。CMPAX,BX;(AX)-(BX)JNBNEXT;若AX>=BX,轉(zhuǎn)移到NEXTXCHGAX,BX;若AX=BX,轉(zhuǎn)移到NEXTXCHGAX,BX;若AX- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 計(jì)算機(jī) 組成 原理 指令系統(tǒng)
鏈接地址:http://m.zhongcaozhi.com.cn/p-3593031.html