微機(jī)原理與接口技術(shù)知識(shí)點(diǎn)總結(jié)_第1頁(yè)
微機(jī)原理與接口技術(shù)知識(shí)點(diǎn)總結(jié)_第2頁(yè)
微機(jī)原理與接口技術(shù)知識(shí)點(diǎn)總結(jié)_第3頁(yè)
微機(jī)原理與接口技術(shù)知識(shí)點(diǎn)總結(jié)_第4頁(yè)
微機(jī)原理與接口技術(shù)知識(shí)點(diǎn)總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

./微機(jī)原理與接口技術(shù)概述二、計(jì)算機(jī)中的碼制〔重點(diǎn)〕P51、對(duì)于符號(hào)數(shù),機(jī)器數(shù)常用的表示方法有原碼、反碼和補(bǔ)碼三種。注意:對(duì)正數(shù),三種表示法均相同。它們的差別在于對(duì)負(fù)數(shù)的表示?!?〕原碼定義:符號(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)制的表示X圍:原碼:-127~+127反碼:-127~+127補(bǔ)碼:-128~+1273、特殊數(shù)10000000該數(shù)在原碼中定義為:-0在反碼中定義為:-127在補(bǔ)碼中定義為:-128對(duì)無(wú)符號(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碼〕相符?!?〕英文字母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)?!?〕地址總線〔AddressBus〕,它決定系統(tǒng)所能直接訪問(wèn)的存儲(chǔ)器空間的容量?!?〕控制總線〔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指令必須都通過(guò)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ù)钠频刂罚籅P:<BasePointer>基址指針寄存器,常用于在訪問(wèn)內(nèi)存時(shí)存放內(nèi)存單元的偏移地址。SI:<SourceIndex>源變址寄存器Index:指針DI:<DestinationIndex>目標(biāo)變址寄存器變址寄存器常用于指令的間接尋址或變址尋址。3〕、段寄存器P28CS:<CodeSegment>代碼段寄存器,代碼段用于存放指令代碼DS:<DataSegment>數(shù)據(jù)段寄存器ES:<ExtraSegment>附加段寄存器,數(shù)據(jù)段和附加段用來(lái)存放操作數(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),高電平有效。可通過(guò)設(shè)置IF的值來(lái)控制。NMI:<Non_MaskableInterrupt>非屏蔽中斷輸入信號(hào)。不能用軟件進(jìn)行屏蔽。RESET:<Reset>復(fù)位輸入信號(hào),高電平有效。復(fù)位的初始狀態(tài)見(jiàn)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〕寄存器尋址與段地址無(wú)關(guān)3、直接尋址P48〔1〕指令中直接給出操作數(shù)的16位偏移地址偏移地址也稱為有效地址<EA,EffectiveAddress>〔2〕默認(rèn)的段寄存器為DS,但也可以顯式地指定其他段寄存器——稱為段超越前綴〔3〕偏移地址也可用符號(hào)地址來(lái)表示,如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>=2000H,<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位。具體來(lái)說(shuō)可實(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說(shuō)明數(shù)據(jù)類型。如:MOV[BX],12H是錯(cuò)誤的。〔2〕、堆棧指令P54堆棧以字為單位進(jìn)行壓入彈出操作。規(guī)定由SS指示堆棧段的段基址,堆棧指針SP始終指向堆棧的頂部,SP的初值規(guī)定了所用堆棧區(qū)的大小。堆棧的最高地址叫棧底。壓棧指令PUSHPUSHsrc;src為16位操作數(shù)例:PUSHAX;將AX內(nèi)容壓棧執(zhí)行操作:〔SP〕-1←高字節(jié)AH〔SP〕-2←低字節(jié)AL<SP>←〔SP〕-2注意進(jìn)棧方向是高地址向低地址發(fā)展。`彈出指令POPPOPdest例:POPBX;將棧頂內(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ù)類型要一致?!?〕查表指令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來(lái)傳送信息。功能:<累加器>←→I/O端口輸入指令I(lǐng)N格式:INacc,PORT;PORT端口號(hào)0~255HINacc,DX;DX表示的端口X圍達(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位的通用寄存器。例:LEABX,[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<無(wú)符號(hào)數(shù)>IMUL<帶符號(hào)數(shù)>除法:DIV〔無(wú)符號(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):無(wú)符號(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格式:ADDacc,dataADDmem/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)志位上?!?〕非壓縮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中,通過(guò)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指令之后?!?〕非壓縮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無(wú)定義,但影響其余標(biāo)志位。DAS指令要求跟在減法指令之后。乘法指令P65進(jìn)行乘法時(shí):8位*8位→16位乘積16位*16位→32位乘積<1>無(wú)符號(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)志位無(wú)定義。4、除法指令P66進(jìn)行除法時(shí):16位/8位→8位商32位/16位→16位商對(duì)被除數(shù)、商與余數(shù)存放有如下規(guī)定:被除數(shù)商余數(shù)字節(jié)除法AXALAH字除法DX:AXAXDX〔1〕無(wú)符號(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)志位均無(wú)定關(guān)于除法操作中的字長(zhǎng)擴(kuò)展問(wèn)題?除法運(yùn)算要求被除數(shù)字長(zhǎng)是除數(shù)字長(zhǎng)的兩倍,若不滿足則需對(duì)被除數(shù)進(jìn)行擴(kuò)展,否則產(chǎn)生錯(cuò)誤。?對(duì)于無(wú)符號(hào)數(shù)除法擴(kuò)展,只需將AH或DX清零即可。?對(duì)有符號(hào)數(shù)而言,則是符號(hào)位的擴(kuò)展??墒褂们懊娼榻B過(guò)的符號(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ù)的某幾位,清零其他位?!?〕邏輯或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ù)看做無(wú)符號(hào)數(shù)。移位位數(shù)放在CL寄存器中,如果只移1位,也可以直接寫在指令中。例如:MOVCL,4SHRAL,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,3SALAL,1;2xMOVAH,ALSALAL,1;4xSALAL,1;8xADDAL,AH;8x+2x=10x控制轉(zhuǎn)移類指令:P80一>、無(wú)條件轉(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/JNC/JAE/JNBZJZ/JEJNZ/JNESJSJNSPJP/JPEJNP/JPOOJOJNO2.復(fù)合測(cè)試條件指令即A-B無(wú)符號(hào)數(shù)帶符號(hào)數(shù)=JZJZ≠JNZJNZ﹤JC//JNAEJL/JNGE﹥JA/JNBEJG/JNLE≤E/JNAJLE/JNG≥JNC/JAE/JNBJGE/JNL三>.循環(huán)控制指令1.循環(huán)轉(zhuǎn)移指令LOOP<相當(dāng)于:DECCXJNZn>2.相等<為零>循環(huán)轉(zhuǎn)移指令LOOPE/LOOPZ3.不相等<不為零>循環(huán)轉(zhuǎn)移指令LOOPNE/LOOPNZ四>.過(guò)程調(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à):DECCXJNZlabel3、過(guò)程調(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.無(wú)條件重復(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<無(wú)條件重復(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的一種特定的操作。而偽指令是給匯編程序的命令,在匯編過(guò)程中由匯編程序進(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用來(lái)定義字節(jié)〔BYTE〕DW用來(lái)定義字〔WORD〕DD用來(lái)定義雙字〔DWORD〕例:下面的數(shù)據(jù)項(xiàng)設(shè)置了多少個(gè)字節(jié)?<1>ASC_DATADB‘1234’<2>HEX_DATADB1234H答案:<1>設(shè)置了4個(gè)字節(jié)<2>設(shè)置了2個(gè)字節(jié)〔2〕操作數(shù)的類型可以是:①常數(shù)或常數(shù)表達(dá)式例如:DATA_BYTEDB10,5,10HDATA_WORDDW100H,100,-4DATA_DWDD2*30,0FFFBH②可以為字符串〔定義字符串最好使用DB〕例如:char1DB‘AB’③可以為變量④可以為?號(hào)操

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論