版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)或者侵權(quán),請(qǐng)聯(lián)系改正或者刪除。微機(jī)原理與接口技術(shù)概述二、計(jì)算機(jī)中的碼制(重點(diǎn))P51、對(duì)于符號(hào)數(shù),機(jī)器數(shù)常見的表示方法有原碼、反碼和補(bǔ)碼三種。注意:對(duì)正數(shù),三種表示法均相同。它們的差別在于對(duì)負(fù)數(shù)的表示。(1)原碼定義:符號(hào)位:0表示正,1表示負(fù);數(shù)值位:真值的絕對(duì)值。注意:數(shù)0的原碼不唯一(2)反碼定義:若X<0,則[X]反=對(duì)應(yīng)原碼的符號(hào)位不變,數(shù)值部分按位求反(3)補(bǔ)碼定義:若X<0,則[X]補(bǔ)=[X]反+12、8位二進(jìn)制的表示范圍:原碼:-127~+127反碼:-127~+127補(bǔ)碼:-128~+1273、特殊數(shù)10000000該數(shù)在原碼中定義為:-0在反碼中定義為:-127在補(bǔ)碼中定義為:-128對(duì)無符號(hào)數(shù):(10000000)2=128三、信息的編碼字符的編碼P8計(jì)算機(jī)采用7位二進(jìn)制代碼對(duì)字符進(jìn)行編碼(1)數(shù)字0~9的編碼是0110000~0111001,它們的高3位均是011,后4位正好與其對(duì)應(yīng)的二進(jìn)制代碼(BCD碼)相符。(2)英文字母A~Z的ASCII碼從1000001(41H)開始順序遞增,字母a~z的ASCII碼從1100001(61H)開始順序遞增,這樣的排列對(duì)信息檢索十分有利。微機(jī)組成原理第一節(jié)、微機(jī)的結(jié)構(gòu)1、計(jì)算機(jī)的經(jīng)典結(jié)構(gòu)——馮.諾依曼結(jié)構(gòu)P11(1)微機(jī)由CPU(運(yùn)算器和控制器)、存儲(chǔ)器和I/O接口組成系統(tǒng)總線的分類(1)數(shù)據(jù)總線(DataBus),它決定了處理器的字長(zhǎng)。(2)地址總線(AddressBus),它決定系統(tǒng)所能直接訪問的存儲(chǔ)器空間的容量。(3)控制總線(ControlBus)第二節(jié)、8086微處理器1、8086,其內(nèi)部數(shù)據(jù)總線的寬度是16位,16位CPU。外部數(shù)據(jù)總線寬度也是16位8086地址線位20根,有1MB(220)尋址空間。P272、8086CPU從功能上分成兩部分:總線接口單元(BIU)、執(zhí)行單元(EU)BIU:負(fù)責(zé)8086CPU與存儲(chǔ)器之間的信息傳送。EU:負(fù)責(zé)指令的執(zhí)行。P284、寄存器結(jié)構(gòu)(重點(diǎn))1)數(shù)據(jù)寄存器特有的習(xí)慣用法P30AX:(Accumulator)累加器。多用于存放中間運(yùn)算結(jié)果。所有I/O指令必須都經(jīng)過AX與接口傳送信息;BX:(Base)基址寄存器。在間接尋址中用于存放基地址;CX:(Counter)計(jì)數(shù)寄存器。用于在循環(huán)或串操作指令中存放循環(huán)次數(shù)或重復(fù)次數(shù);DX:(Data)數(shù)據(jù)寄存器。在32位乘除法運(yùn)算時(shí),存放高16位數(shù);在間接尋址的I/O指令中存放I/O端口地址。2)、指針和變址寄存器P31SP:(StackPointer)堆棧指針寄存器,其內(nèi)容為棧頂?shù)钠频刂?BP:(BasePointer)基址指針寄存器,常見于在訪問內(nèi)存時(shí)存放內(nèi)存單元的偏移地址。SI:(SourceIndex)源變址寄存器Index:指針DI:(DestinationIndex)目標(biāo)變址寄存器變址寄存器常見于指令的間接尋址或變址尋址。3)、段寄存器P28CS:(CodeSegment)代碼段寄存器,代碼段用于存放指令代碼DS:(DataSegment)數(shù)據(jù)段寄存器ES:(ExtraSegment)附加段寄存器,數(shù)據(jù)段和附加段用來存放操作數(shù)SS:(StackSegment)堆棧段寄存器,堆棧段用于存放返回地址,保存寄存器內(nèi)容,傳遞參數(shù)4)、指令指針(IP)P2916位指令指針寄存器,其內(nèi)容為下一條要執(zhí)行的指令的偏移地址。5)、標(biāo)志寄存器(1)狀態(tài)標(biāo)志:P30進(jìn)位標(biāo)志位(CF):(CarryFlag)運(yùn)算結(jié)果的最高位有進(jìn)位或有借位,則CF=1。Carry:進(jìn)位Auxiliary:輔助輔助進(jìn)位標(biāo)志位(AF):(AuxiliaryCarryFlag)運(yùn)算結(jié)果的低四位有進(jìn)位或借位,則AF=1溢出標(biāo)志位(OF):(OverflowFlag)運(yùn)算結(jié)果有溢出,則OF=1零標(biāo)志位(ZF):(ZeroFlag)反映指令的執(zhí)行是否產(chǎn)生一個(gè)為零的結(jié)果符號(hào)標(biāo)志位(SF):(SignFlag)指出該指令的執(zhí)行是否產(chǎn)生一個(gè)負(fù)的結(jié)果奇偶標(biāo)志位(PF):(ParityFlag)表示指令運(yùn)算結(jié)果的低8位”1”個(gè)數(shù)是否為偶數(shù)(2)控制標(biāo)志位中斷允許標(biāo)志位(IF):(InterruptFlag)表示CPU是否能夠響應(yīng)外部可屏蔽中斷請(qǐng)求跟蹤標(biāo)志(TF):(TrapFlag)CPU單步執(zhí)行5、8086的引腳及其功能(重點(diǎn)掌握以下引腳)P34AD15~AD0:雙向三態(tài)的地址總線,輸入/輸出信號(hào)INTR:(InterruptRequest)可屏蔽中斷請(qǐng)求輸入信號(hào),高電平有效??山?jīng)過設(shè)置IF的值來控制。NMI:(Non_MaskableInterrupt)非屏蔽中斷輸入信號(hào)。不能用軟件進(jìn)行屏蔽。RESET:(Reset)復(fù)位輸入信號(hào),高電平有效。復(fù)位的初始狀態(tài)見P21MN/MX:(Minimum/Maximum)最小最大模式輸入控制信號(hào)。第三章8086指令系統(tǒng)8086尋址方式一、數(shù)據(jù)尋址方式(重點(diǎn))1、立即尋址P46操作數(shù)(為一常數(shù))直接由指令給出(此操作數(shù)稱為立即數(shù))立即尋址只能用于源操作數(shù)指令操作例:MOVAX,3102H;執(zhí)行后,(AH)=31H,(AL)=02H2、寄存器尋址P47(1)操作數(shù)放在某個(gè)寄存器中(2)源操作數(shù)與目的操作數(shù)字長(zhǎng)要相同(3)寄存器尋址與段地址無關(guān)3、直接尋址P48(1)指令中直接給出操作數(shù)的16位偏移地址偏移地址也稱為有效地址(EA,EffectiveAddress)(2)默認(rèn)的段寄存器為DS,但也能夠顯式地指定其它段寄存器——稱為段超越前綴(3)偏移地址也可用符號(hào)地址來表示,如ADDR、VAR例:MOVAX,[2A00H]用[]表示數(shù)字存放的地址MOVDX,ES:[2A00H]MOVSI,TABLE_PTR4、間接尋址P48操作數(shù)的偏移地址(有效地址EA)放在寄存器中只有SI、DI、BX和BP可作間址寄存器SI、DI、BX默認(rèn)段地址DSBP默認(rèn)段地址SS例:MOVAX,[BX]MOVCL,CS:[DI]錯(cuò)誤例:×MOVAX,[DX]5、寄存器相對(duì)尋址P49EA=間址寄存器的內(nèi)容加上一個(gè)8/16位的位移量例:MOVAX,[BX+8]MOVCX,TABLE[SI]MOVAX,[BP];BX.SI.DI默認(rèn)段寄存器DS,BP默認(rèn)段寄存器為SS指令操作例:MOVAX,DATA[BX]若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H則物理地址=60000H+1000H+2A00H=63A00H指令執(zhí)行后:(AX)=5566H6、基址變址尋址P51若操作數(shù)的偏移地址:EA=基址寄存器(BX或BP)+變址寄存器(SI或DI)同一組內(nèi)的寄存器不能同時(shí)出現(xiàn)。錯(cuò)誤例:×MOVAX,[BX][BP]7、相對(duì)基址變址尋址P51EA=基址寄存器(BX或BP)+變址寄存器(SI或DI)+8位或16位位移量;指令操作例:MOVAX,DATA[DI][BX]若(DS)=8000H,(BX)=H,(DI)=1000H,DATA=200H則指令執(zhí)行后(AH)=[83021H],(AL)=[83020H]寄存器間接、寄存器相對(duì)、基址變址、相對(duì)基址變址四種尋址方式的比較:尋址方式指令操作數(shù)形式寄存器間接只有一個(gè)寄存器(BX/BP/SI/DI之一)寄存器相對(duì)一個(gè)寄存器加上位移量基址—變址兩個(gè)不同類別的寄存器相對(duì)基址-變址兩個(gè)不同類別的寄存器加上位移量8086指令系統(tǒng)一、數(shù)據(jù)傳送指令(重點(diǎn))1、數(shù)據(jù)傳送類指令(特點(diǎn):除SAHFPOPF外均不影響FR)P54通用MOVdst,src堆棧:PUSHPOP交換:XCHG查表:XLAT標(biāo)志LAHFSAHFPUSHFPOPF地址:LEALDSLES4.輸入輸出:INOUT(1)MOVdest,src;dest←src傳送的是字節(jié)還是字取決于指令中涉及的寄存器是8位還是16位。具體來說可實(shí)現(xiàn):MOVmem/reg1,mem/reg2指令中兩操作數(shù)中至少有一個(gè)為寄存器MOV指令的使用規(guī)則①IP不能作目的寄存器②不允許mem←mem③不允許segreg←segreg④立即數(shù)不允許作為目的操作數(shù)⑤不允許segreg←立即數(shù)⑥源操作數(shù)與目的操作數(shù)類型要一致⑦當(dāng)源操作數(shù)為單字節(jié)的立即數(shù),而目的操作數(shù)為間址、變址、基址+變址的內(nèi)存數(shù)時(shí),必須用PTR說明數(shù)據(jù)類型。如:MOV[BX],12H是錯(cuò)誤的。(2)、堆棧指令P54堆棧以字為單位進(jìn)行壓入彈出操作。規(guī)定由SS指示堆棧段的段基址,堆棧指針SP始終指向堆棧的頂部,SP的初值規(guī)定了所用堆棧區(qū)的大小。堆棧的最高地址叫棧底。壓棧指令PUSHPUSHsrc ;src為16位操作數(shù)例:PUSH AX ;將AX內(nèi)容壓棧執(zhí)行操作:(SP)-1←高字節(jié)AH(SP)-2←低字節(jié)AL(SP)←(SP)-2注意進(jìn)棧方向是高地址向低地址發(fā)展。`彈出指令POPPOP dest例:POP BX ;將棧頂內(nèi)容彈至BX執(zhí)行操作:(BL)←(SP)(BH)←(SP)+1(SP)←(SP)+2堆棧指令在使用時(shí)需注意的幾點(diǎn):堆棧操作總是按字進(jìn)行不能從棧頂彈出一個(gè)字給CS堆棧指針為SS:SP,SP永遠(yuǎn)指向棧頂④SP自動(dòng)進(jìn)行增減量(-2,+2)(3)、交換指令XCHGP54格式:XCHGreg,mem/reg功能:交換兩操作數(shù)的內(nèi)容。要求:兩操作數(shù)中必須有一個(gè)在寄存器中;操作數(shù)不能為段寄存器和立即數(shù);源和目地操作數(shù)類型要一致。(4)查表指令XLATP57執(zhí)行的操作:AL←[(BX)+(AL)]又叫查表轉(zhuǎn)換指令,它可根據(jù)表項(xiàng)序號(hào)查出表中對(duì)應(yīng)代碼的內(nèi)容。執(zhí)行時(shí)先將表的首地址(偏移地址)送到BX中,表項(xiàng)序號(hào)存于AL中。2、輸入輸出指令P57只限于用累加器AL或AX來傳送信息。功能:(累加器)←→I/O端口輸入指令I(lǐng)N格式:INacc,PORT;PORT端口號(hào)0~255HINacc,DX;DX表示的端口范圍達(dá)64K例:INAL,80H;(AL)←(80H端口)INAL,DX;(AL)←((DX))(2)輸出指令OUT格式:OUTport,accOUTDX,acc例:OUT68H,AX;(69H,68H)←(AX)OUTDX,AL;((DX))←(AL)在使用間接尋址的IN/OUT指令時(shí),要事先用傳送指令把I/O端口號(hào)設(shè)置到DX寄存器如:MOVDX,220HINAL,DX;將220H端口內(nèi)容讀入AL3、目標(biāo)地址傳送指令P58LEA傳送偏移地址格式:LEAreg,mem;將指定內(nèi)存單元的偏移地址送到指定寄存器要求:源操作數(shù)必須是一個(gè)存儲(chǔ)器操作數(shù);目的操作數(shù)必須是一個(gè)16位的通用寄存器。例:LEA BX,[SI+10H]設(shè):(SI)=1000H則執(zhí)行該指令后,(BX)=1010H注意以下二條指令差別:LEABX,BUFFERMOVBX,BUFFER前者表示將符號(hào)地址為BUFFER的存儲(chǔ)單元的偏移地址取到BX中;后者表示將BUFFER存儲(chǔ)單元中的內(nèi)容取到BX中。下面兩條指令等效:LEABX,BUFFERMOVBX,OFFSETBUFFER其中OFFSETBUFFER表示存儲(chǔ)器單元BUFFER的偏移地址。二者都可用于取存儲(chǔ)器單元的偏移地址,但LEA指令能夠取動(dòng)態(tài)的地址,OFFSET只能取靜態(tài)的地址。算術(shù)運(yùn)算類指令(特點(diǎn):除CBWCWD外均影響FR)P60加法:ADDADC減法:SUBSBBCMP加1減1:INCDEC求補(bǔ):NEC乘法:MUL(無符號(hào)數(shù))IMUL(帶符號(hào)數(shù))除法:DIV(無符號(hào)數(shù))IDIV(帶符號(hào)數(shù))擴(kuò)展:CBW(B→W)CWD(W→DW)十進(jìn)制調(diào)整:1)加法:DAA(組合)AAA(未組合)2)減法:DAS(組合)AAS(未組合)3)乘法:AAM(未組合)4)除法:AAD乘、除法指令注意事項(xiàng):無符號(hào)與帶符號(hào)數(shù)所用指令不同;八位乘法時(shí),必有一個(gè)乘數(shù)在AL中,積在AX中;十六位乘法時(shí),必有一個(gè)乘數(shù)在AX中,積在DX(高16位)與AX(低16位)中;八位除法時(shí),被除數(shù)在AX中(16位),商在AL,余數(shù)在AH;十六位除法時(shí),被除數(shù)在DX(高16位)與AX(低16位)中,商在AX,余數(shù)在DX;4.十進(jìn)制調(diào)整時(shí),乘、除法均只能使用未組合BCD碼,而且除法是先調(diào)整后運(yùn)算。加法指令P61不帶進(jìn)位的加法指令A(yù)DD格式:ADD acc,dataADD mem/reg,dataADDmem/reg1,mem/reg2?ADD指令對(duì)6個(gè)狀態(tài)標(biāo)志均產(chǎn)生影響。判斷溢出與進(jìn)位(重點(diǎn))從硬件的角度:默認(rèn)參與運(yùn)算的操作數(shù)都是有符號(hào)數(shù),當(dāng)兩數(shù)的符號(hào)位相同,而和的結(jié)果相異時(shí)有溢出,則OF=1,否則OF=0帶進(jìn)位的加法ADC(AddwithCarry)P62ADC指令在形式上和功能上與ADD類似,只是相加時(shí)還要包括進(jìn)位標(biāo)志CF的內(nèi)容,例如:ADCAL,68H;AL←(AL)+68H+(CF)ADCAX,CX;AX←(AX)+(CX)+(CF)ADCBX,[DI];BX←(BX)+[DI+1][DI]+(CF)(3)加1指令I(lǐng)NC(Increment)格式:INCreg/mem功能:類似于C語(yǔ)言中的++操作:對(duì)指定的操作數(shù)加1注:本指令不影響CF標(biāo)志。減法指令P63(1)不考慮借位的減法指令SUB(Subtraction)格式:SUBdest,src注:1.源和目的操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)立即數(shù)不能作為目的操作數(shù)(2)考慮借位的減法指令SBB(SubtractionwithCarry)SBB指令主要用于多字節(jié)的減法。格式:SBBdest,src操作:dest←(dest)-(src)-(CF)(3)減1指令DEC(Decrement)格式:DECopr操作:opr←(opr)-1(4)求補(bǔ)指令NEG(Negate)格式:NEGopr操作:opr←0-(opr)對(duì)一個(gè)操作數(shù)取補(bǔ)碼相當(dāng)于用0減去此操作數(shù),故利用NEG指令可得到負(fù)數(shù)的絕對(duì)值。例:若(AL)=0FCH,則執(zhí)行NEGAL后,(AL)=04H,CF=1(5)比較指令CMP格式:CMPdest,src操作:(dest)-(src)CMP也是執(zhí)行兩個(gè)操作數(shù)相減,但結(jié)果不送目標(biāo)操作數(shù),其結(jié)果只反映在標(biāo)志位上。(4)非壓縮BCD碼加法調(diào)整指令A(yù)AAP68AAA指令的操作:如果AL的低4位>9或AF=1,則:①AL←(AL)+6,(AH)←(AH)+1,AF←1②AL高4位清零③CF←AF否則AL高4位清零(5)壓縮BCD碼加法調(diào)整指令DAAP68兩個(gè)壓縮BCD碼相加結(jié)果在AL中,經(jīng)過DAA調(diào)整得到一個(gè)正確的壓縮BCD碼.指令操作(調(diào)整方法):若AL的低4位>9或AF=1則(AL)←(AL)+6,AF←1若AL的高4位>9或CF=1則(AL)←(AL)+60H,CF←1除OF外,DAA指令影響所有其它標(biāo)志。DAA指令應(yīng)緊跟在ADD或ADC指令之后。(6)非壓縮BCD碼減法調(diào)整指令A(yù)AS對(duì)AL中由兩個(gè)非壓縮的BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:若AL的低4位>9或AF=1,則:①AL←(AL)-6,AH←(AH)-1,AF←1②AL的高4位清零③CF←AF否則:AL的高4位清零(7)壓縮BCD碼減法調(diào)整指令DAS對(duì)AL中由兩個(gè)壓縮BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:若AL的低4位>9或AF=1,則:AL←(AL)-6,且AF←1若AL的高4位>9或CF=1,則:AL←(AL)-60H,且CF←1DAS對(duì)OF無定義,但影響其余標(biāo)志位。DAS指令要求跟在減法指令之后。乘法指令P65進(jìn)行乘法時(shí):8位*8位→16位乘積16位*16位→32位乘積(1)無符號(hào)數(shù)的乘法指令MUL(MEM/REG)格式:MULsrc操作:字節(jié)操作數(shù)(AX)←(AL)×(src)字操作數(shù)(DX,AX)←(AX)×(src)指令例子:MULBL;(AL)×(BL),乘積在AX中MULCX;(AX)×(CX),乘積在DX,AX中(2)有符號(hào)數(shù)乘法指令I(lǐng)MUL格式與MUL指令類似,只是要求兩操作數(shù)均為有符號(hào)數(shù)。指令例子:IMULBL;(AX)←(AL)×(BL)IMULWORDPTR[SI];(DX,AX)←(AX)×([SI+1][SI])注意:MUL/IMUL指令中●AL(AX)為隱含的乘數(shù)寄存器;●AX(DX,AX)為隱含的乘積寄存器;●SRC不能為立即數(shù);●除CF和OF外,對(duì)其它標(biāo)志位無定義。4、除法指令P66進(jìn)行除法時(shí):16位/8位→8位商32位/16位→16位商對(duì)被除數(shù)、商及余數(shù)存放有如下規(guī)定:被除數(shù)商余數(shù)字節(jié)除法AXALAH字除法DX:AXAXDX(1)無符號(hào)數(shù)除法指令DIV(Division)格式:DIVsrc操作:字節(jié)操作(AL)←(AX)/(SRC)的商(AH)←(AX)/(SRC)的余數(shù)字操作(AX)←(DX,AX)/(SRC)的商(DX)←(DX,AX)/(SRC)的余數(shù)(2)有符號(hào)數(shù)除法指令I(lǐng)DIV(Integerdivision)格式:IDIVsrc操作與DIV類似。商及余數(shù)均為有符號(hào)數(shù),且余數(shù)符號(hào)總是與被除數(shù)符號(hào)相同。注意:對(duì)于DIV/IDIV指令A(yù)X(DX,AX)為隱含的被除數(shù)寄存器。AL(AX)為隱含的商寄存器。AH(DX)為隱含的余數(shù)寄存器。src不能為立即數(shù)。對(duì)所有條件標(biāo)志位均無定關(guān)于除法操作中的字長(zhǎng)擴(kuò)展問題?除法運(yùn)算要求被除數(shù)字長(zhǎng)是除數(shù)字長(zhǎng)的兩倍,若不滿足則需對(duì)被除數(shù)進(jìn)行擴(kuò)展,否則產(chǎn)生錯(cuò)誤。?對(duì)于無符號(hào)數(shù)除法擴(kuò)展,只需將AH或DX清零即可。?對(duì)有符號(hào)數(shù)而言,則是符號(hào)位的擴(kuò)展。可使用前面介紹過的符號(hào)擴(kuò)展指令CBW和CWD邏輯運(yùn)算類指令(特點(diǎn):均影響FR)P701.與:AND2.或:OR3.異或:XOR4.非:NOT5.測(cè)試:TEST移位指令1.邏輯移位:左移SHL右移SHR2.算術(shù)移位:左移SAL右移SAR3.循環(huán)移位:1).不帶CF:左移ROL右移ROR2).帶CF:左移RCL右移RCR1、邏輯運(yùn)算指令(1)邏輯與AND對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯”與”操作。格式:ANDdest,src用途:保留操作數(shù)的某幾位,清零其它位。(2)邏輯或OR對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯”或”操作。格式:ORdest,src用途:對(duì)操作數(shù)的某幾位置1;對(duì)兩操作數(shù)進(jìn)行組合。例1:把AL中的非壓縮BCD碼變成相應(yīng)十進(jìn)制數(shù)的ASCII碼。ORAL,30H(3)邏輯非NOT對(duì)操作數(shù)進(jìn)行按位邏輯”非”操作。格式:NOTmem/reg(4)邏輯異或XOR對(duì)兩個(gè)操作數(shù)按位進(jìn)行”異或”操作。格式:XORdest,src用途:對(duì)reg清零(自身異或)把reg/mem的某幾位變反(與’1’異或)例1:把AX寄存器清零。①M(fèi)OVAX,0②XORAX,AX③ANDAX,0④SUBAX,AX(5)測(cè)試指令TEST操作與AND指令類似,但不將”與”的結(jié)果送回,只影響標(biāo)志位。TEST指令常見于位測(cè)試,與條件轉(zhuǎn)移指令一起用。例:測(cè)試AL的內(nèi)容是否為負(fù)數(shù)。TESTAL,80H;檢查AL中D7=1? JNZMINUS;是1(負(fù)數(shù)),轉(zhuǎn)MINUS……;否則為正數(shù)2、移位指令(1)非循環(huán)移位指令(重點(diǎn))P72算術(shù)左移指令SAL(ShiftArithmeticLeft)算術(shù)右移指令SAR(ShiftArithmeticRight)邏輯左移指令SHL(ShiftLeft)邏輯右移指令SHR(ShiftRight)這4條指令的格式相同,以SAL為例:CL;移位位數(shù)大于1時(shí)SALmem/reg;移位位數(shù)等于1時(shí)算術(shù)移位——把操作數(shù)看做有符號(hào)數(shù);邏輯移位——把操作數(shù)看做無符號(hào)數(shù)。移位位數(shù)放在CL寄存器中,如果只移1位,也能夠直接寫在指令中。例如: MOVCL,4 SHRAL,CL;AL中的內(nèi)容右移4位影響C,P,S,Z,O標(biāo)志。結(jié)果未溢出時(shí):左移1位≡操作數(shù)*2右移1位≡操作數(shù)/2例:把AL中的數(shù)x乘10因?yàn)?0=8+2=23+21,因此可用移位實(shí)現(xiàn)乘10操作。程序如下: MOVCL,3 SALAL,1;2x MOVAH,AL SALAL,1;4xSALAL,1;8xADDAL,AH;8x+2x=10x控制轉(zhuǎn)移類指令:P80一)、無條件轉(zhuǎn)移JMP近轉(zhuǎn)移(段內(nèi))(NEARPTR)1).直接(相對(duì)尋址):短轉(zhuǎn)移(SHORT)IP←IP+disp(8位)如:JMPn長(zhǎng)轉(zhuǎn)移IP←IP+disp(16位)如:JMPnn2).間接:IP←reg(16位)IP←mem(16位)如:JMP[BX]2.遠(yuǎn)轉(zhuǎn)移(段間)(FARPTR)1).直接:CS=指令中給出的段地址IP=指令中給出的EA如:JMP段:偏2).間接:CS=mem+2(16位)IP=mem(16位)如:JMPDWORDPTR[BX]二)、條件轉(zhuǎn)移Jcc單測(cè)試條件指令10CJC/JNAE/JBJNC/JAE/JNBZJZ/JEJNZ/JNESJSJNSPJP/JPEJNP/JPOOJOJNO2.復(fù)合測(cè)試條件指令即A-B無符號(hào)數(shù)帶符號(hào)數(shù)=JZJZ≠JNZJNZ﹤JC/JB/JNAEJL/JNGE﹥JA/JNBEJG/JNLE≤JBE/JNAJLE/JNG≥JNC/JAE/JNBJGE/JNL三).循環(huán)控制指令1.循環(huán)轉(zhuǎn)移指令LOOP(相當(dāng)于:DECCXJNZ n)2.相等(為零)循環(huán)轉(zhuǎn)移指令LOOPE/LOOPZ3.不相等(不為零)循環(huán)轉(zhuǎn)移指令LOOPNE/LOOPNZ四).過程調(diào)用與返回指令1.調(diào)用指令CALL(與JMP一樣分:段內(nèi)直接、段內(nèi)間接、段間直接、段間間接調(diào)用四種,但需保護(hù)斷點(diǎn))2.返回指令1).RET(依段內(nèi)、段間不同分別恢復(fù)相應(yīng)斷點(diǎn))2).RETn(除象RET恢復(fù)斷點(diǎn)外還應(yīng)根據(jù)n值修設(shè)SP)五).中斷指令I(lǐng)NTn(響應(yīng)中斷時(shí),除象CALL保護(hù)斷點(diǎn)外,還應(yīng)保護(hù)FR)INTOIRET(返回時(shí),除象RET恢復(fù)斷點(diǎn)外,還應(yīng)恢復(fù)F(1)LOOP格式:LOOPlabel操作:(CX)-1→CX;若(CX)≠0,則轉(zhuǎn)至label處執(zhí)行;否則退出循環(huán),執(zhí)行LOOP后面的指令。LOOP指令與下面的指令段等價(jià): DECCX JNZlabel3、過程調(diào)用指令(1)調(diào)用指令CALL一般格式:CALLsub;sub為子程序的入口4、中斷指令P85(1)INTn執(zhí)行類型n的中斷服務(wù)程序,N=0~255串操作指令一).串操作指令1.串傳送MOVS(字節(jié)串MOVSB字串MOVSW)2.串比較CMPS(字節(jié)串CMPSB字串CMPSW)3.串搜索SCAS(字節(jié)串SCASB字串SCASW)4.取串LODS(字節(jié)串LODSB字串LODSW)5.存串STOS(字節(jié)串STOSB字串STOSW)二).重復(fù)前綴指令1.無條件重復(fù)REP2.相等/為零重復(fù)REPE/REPZ3.不相等/不為零重復(fù)REPNE/REPNZ串操作指令特點(diǎn):可用前綴使其重復(fù)操作;每操作一次自動(dòng)修改SI和DI內(nèi)容,當(dāng)DF=0時(shí)為增量,DF=1為減量;所有源操作數(shù)地址放在SI中,在DS段,串長(zhǎng)≤64K;所有目標(biāo)操作數(shù)地址放在DI中,在ES段,串長(zhǎng)≤64K;用重復(fù)前綴時(shí),如果條件滿足且CX≠0時(shí)重復(fù),每重復(fù)一次CX←CX–1,否則結(jié)束重復(fù);重復(fù)操作時(shí)IP不變,中斷返回后繼續(xù)操作。重復(fù)前綴重復(fù)與結(jié)束重復(fù)的條件:重復(fù)前綴重復(fù)條件結(jié)束條件REP(無條件重復(fù))CX≠0CX=0REPE/REPZ(相等/為零重復(fù))CX≠0且ZF=1CX=0或ZF=0REPNE/REPNZ(不相等/不為零重復(fù))CX≠0且ZF=0CX=0或ZF=1使用串操作指令時(shí)注意:SI←源串首(末)址DI←目標(biāo)串首(末)址;CX←串長(zhǎng)度;設(shè)DF值;選重復(fù)前綴;使用條件重復(fù)前綴時(shí),判斷結(jié)束條件(即是CX=0還是ZF=0/1結(jié)束)處理器控制指令P88標(biāo)志位操作1).清CFCLC(CF=0)2).置CFSTC(CF=1)3).CF取反CMC4).清DFCLD(DF=0)5).置DFSTD(DF=1)6).清IFCLI(CF=0關(guān)中斷)7).置IFSTI(CF=1開中斷)同步控制指令1).ESC2).WAIT3).LOCK3.空操作指令NOP4.暫停指令HLT1、標(biāo)志位操作(1)CF設(shè)置指令CLC0→CFSTC1→CFCMCCF變反(2)DF設(shè)置指令CLD0→DF(串操作的指針移動(dòng)方向從低到高)STD1→DF(串操作的指針移動(dòng)方向從高到低)(3)IF設(shè)置指令 CLI0→IF(禁止INTR中斷) STI1→IF(開放INTR中斷)HLT(halt)執(zhí)行HLT指令后,CPU進(jìn)入暫停狀態(tài)。第四章8086匯編語(yǔ)言程序設(shè)計(jì)偽指令(重點(diǎn))分析運(yùn)算符:SEG、OFFSET、TYPE、LENGTH、SIZEP97CPU指令與偽指令之間的區(qū)別:P98(1)CPU指令是給CPU的命令,在運(yùn)行時(shí)由CPU執(zhí)行,每條指令對(duì)應(yīng)CPU的一種特定的操作。而偽指令是給匯編程序的命令,在匯編過程中由匯編程序進(jìn)行處理。(2)匯編以后,每條CPU指令產(chǎn)生一一對(duì)應(yīng)的目標(biāo)代碼;而偽指令則不產(chǎn)生與之相應(yīng)的目標(biāo)代碼。1、數(shù)據(jù)定義偽指令(1)數(shù)據(jù)定義偽指令的一般格式為:[變量名]偽指令操作數(shù)[,操作數(shù)…]P99DB 用來定義字節(jié)(BYTE)DW 用來定義字(WORD)DD 用來定義雙字(DWORD)例:下面的數(shù)據(jù)項(xiàng)設(shè)置了多少個(gè)字節(jié)? (1)ASC_DATA DB ‘1234’ (2)HEX_DATA DB 1234H答案:(1)設(shè)置了4個(gè)字節(jié)(2)設(shè)置了2個(gè)字節(jié)(2)操作數(shù)的類型能夠是:①常數(shù)或常數(shù)表示式例如:DATA_BYTEDB10,5,10HDATA_WORDDW100H,100,-4DATA_DWDD2*30,0FFFBH②能夠?yàn)樽址?定義字符串最好使用DB)例如:char1DB‘AB’③能夠?yàn)樽兞竣苣軌驗(yàn)?號(hào)操作符例如:XDB5,?,6?號(hào)只是為了給變量保留相應(yīng)的存儲(chǔ)單元,而
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年床上用品品牌代理合同
- 2024醫(yī)院藥品零售許可合同
- 2024年建筑合同糾紛預(yù)防及處理辦法
- 2024年度IT企業(yè)軟件許可使用合同
- 2024年度搬廠工程機(jī)械設(shè)備租賃合同
- 2024年度委托加工合同:甲乙雙方在二零二四年就某產(chǎn)品委托加工的詳細(xì)條款
- 2024年度量子科技實(shí)驗(yàn)室建設(shè)安裝工程分包合同
- 2024年度智能停車安防監(jiān)控系統(tǒng)安裝合同
- 2024展廳裝飾裝修合同范文
- 2024年商標(biāo)許可使用合同商標(biāo)范圍
- 一手試題烘焙面銷培訓(xùn)
- 初中語(yǔ)文人教七年級(jí)下冊(cè)冉玥《驛路梨花》微課教案設(shè)計(jì)
- 中國(guó)農(nóng)業(yè)科學(xué)院科研道德規(guī)范
- 認(rèn)識(shí)計(jì)算機(jī)系統(tǒng)的組成
- 人教版版中國(guó)歷史八年級(jí)上冊(cè)知識(shí)點(diǎn)歸納梳理
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 3-02-03-01 消防員(2022年版)
- GB/T 36242-2018燃?xì)饬髁坑?jì)體積修正儀
- GB/T 2818-2014井用潛水異步電動(dòng)機(jī)
- 5 汪曾祺《跑警報(bào)》.電子教案教學(xué)課件
- 敘事療法課件
- 國(guó)家開放大學(xué)電大《計(jì)算機(jī)應(yīng)用基礎(chǔ)(本)》終結(jié)性考試試題答案(格式已排好)任務(wù)一
評(píng)論
0/150
提交評(píng)論