歡迎來到裝配圖網! | 幫助中心 裝配圖網zhuangpeitu.com!
裝配圖網
ImageVerifierCode 換一換
首頁 裝配圖網 > 資源分類 > PPT文檔下載  

微型計算機指令系統(tǒng).ppt

  • 資源ID:11533167       資源大小:225.50KB        全文頁數:69頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

微型計算機指令系統(tǒng).ppt

第三章微型計算機指令系統(tǒng),指令系統(tǒng)是微處理器(CPU)所能執(zhí)行的指令的集合,它與微處理器有密切的聯(lián)系,不同的微處理器有不同的指令系統(tǒng)。在本章中我們主要講解INTEL公司生產的8086/8088CPU的尋址方式以及各種指令系統(tǒng),并通過具體實例講述了各條指令的功能和使用方法。通過本章的學習,讀者應該掌握以下內容:3種操作數的尋址方式常用指令的格式、功能、以及對標志位的影響,3、18086/8088的尋址方式,操作碼操作數,匯編指令:,操作碼:指令操作類型;操作數:指令所需操作數或操作數的地址;操作數可以有一個,也可以有兩個,一個源操作數,一個目的操作數。例:MOVAX,CX;將CX的內容送入AX中。,本章主要介紹8086/8088的指令系統(tǒng)以及在指令中為取得操作數地址所使用的尋址方式。,3、1、1立即尋址方式指令操作數部分直接給出指令的操作數,操作數與操作碼一起存入代碼段中。立即數有8位和16位。例:MOVAL,5;源操作數為立即尋址指令執(zhí)行后,AL=05H,8位數據05H存入AL寄存器。例:MOVAX,3064H;源操作數為立即尋址指令執(zhí)行后,AX=3064H,16位數據3064H存入AX寄存器。,3、1、2寄存器尋址方式寄存器尋址方式的操作數是寄存器的值,指令中直接使用寄存器名,包括8位或16位通用寄存器和段寄存器。可使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP;其中:AX、BX、CX、DX可分成兩8位使用。例:MOVAX,CX;(AX)(CX)MOVAL;(AL)(AL)-13、1、3內存尋址方式在內存尋址方式中,操作數是某個內存單元的內容(值),指令中給出的是內存單元的有效地址EA(即偏移地址),段地址通常在隱含的某個段寄存器中。,1、直接尋址方式直接尋址方式的操作數的形式為:Variable或Variable在直接尋址方式中,操作數的偏移地址(有效地址EA)直接用指令加以指定(有直接地址值和標號兩種形式),它存放在代碼段中指定操作碼之后,但操作數一般存放在存儲器的數據段中,所以必須先求出操作數的物理地址,然后再訪問存儲器才能取得操作數。段地址隱含的由DS指定,也可以ES指定,但需在指令中指明。最后存儲器地址為:DS:偏移地址或ES:偏移地址。例:MOVAX,ES:2000H將ES:2000H單元內容送入AX。例:MOVAX,LABLE或MOVAX,LABEL將標號為LABLE(存放操作數單元的符號地址),即DS:LABLE中的內容送入AX。,2、寄存器間接尋址寄存器間接尋址方式的操作數形式為:reg操作數的有效地址包含在基址寄存器BX,基址指針BP或一個變址寄存器(SI或DI)中。寄存器間接尋址要用方括號括起來,以便與寄存器操作數相區(qū)別。例:MOVAX,BX;將由BX決定的存儲單元的內容送到AX寄存器。,0000,0001,0002,0003,BB,AA,TAB:,AX,AHAL,AABB,間接尋址,數據段,0001,BX,操作數在存儲器中,指令中寄存器內容作為操作數所在單元的有效地址。(BX)(SI)(DI)(BP),有效地址=,段寄存器為DS,段寄存器為SS,物理地址計算方法:物理地址=(DS)*16+(BX)或(SI)或(DI)物理地址=(SS)*16+(BP),例:已知:(DS)=2100H,(DI)=2000H指令:MOVAX,DI;(AX)(DI)物理地址=(DS)*16+(DI)=2100H*16+2000H=21000H+2000H=23000H指令結果:將23000H單元內容送AL中,將23001H單元內容送AH中。,3、寄存器相對尋址方式操作數在存儲器內,指令中寄存器內容與指令指定的位移量(DISP)之和作為操作數所在單元的有效地址。(BX)DISP8(SI)(DI)(BP)DISP16,有效地址=,段寄存器為DS,段寄存器為SS,+,物理地址=(DS)*16+(BX)+DISP8(SI)、(DI)、DISP16類同。物理地址=(SS)*16+(BP)+DISP16,例:如果(DS)=3000H,(SI)=2000H,COUNT=3000H,則執(zhí)行指令MOVAX,CONUTSI,求出此種尋址方式對應的有效地址和物理地址。有效地址=2000H+3000H=5000H物理地址=(DS)*16+5000H=30000H+5000H=35000H4、基址變址尋址方式:操作數在存儲器中,指令將基址寄存器(BX或BP)與變址寄存器(SI或DI)內容之和作為操作數所在存儲單元的有效地址。,(BX)(SI)(BP)(DI),有效地址=,+,物理地址=(DS)*16+(BX)+(SI)或(DI)物理地址=(SS)*16+(BP)+(SI)或(DI)例:MOVAX,BX+DI或MOVAX,BXDIDS:(BX)+(DI)字存儲單元內容送AX。例:MOVAX,BP+SI或MOVAX,BPSISS:(BP)+(SI)字存儲單元內容送AX。,例:如果(DS)=2100H,(BX)=0158H,(DI)=10A5H,EA=11FDH,則執(zhí)行指令MOVAL,BXDI有效地址:EA=(BX)+(DI)=0158H+10A5H=11FDH物理地址:(DS)*16+有效地址=21000H+11FDH=221FDH執(zhí)行結果:將221FDH單元內容送入寄存器AL中。,5、相對基址變址尋址方式操作數在存儲器內,指令將基址寄存器(BX或BP)與變址寄存器(SI或DI)的內容之和再加上位移量(8位或16位),得到操作數所在單元的有效地址。(BX)(SI)DISP8(BP)(DI)DISP16,有效地址=,+,+,物理地址=(DS)*16+(BX)產生的有效地址物理地址=(SS)*16+(BP)產生的有效地址例:已知:(DS)=3000H,(BX)=2000H,(SI)=1000H,MK=0250H指令:MOVAX,MKBXSI或MOVAX,MKBX+SI或MOVAX,MK+BX+SI有效地址:MK+(BX)+(SI)=0250H+2000H+0100H=3250H物理地址:(DS)*16+有效地址=30000H+3250H=33250H執(zhí)行結果:將33250H單元內容送AL,33251H內容送AH。,3、1、4段超越當操作數在內存單元時,系統(tǒng)根據隱含約定,自動將寄存器DS或SS的值作為段地址。然而,當操作數段地址不在隱含的段寄存器時,可以使用段超越前綴取代其隱含約定。段超越前綴形式為:段寄存器名:例如:MOVAX,ES:BP;段地址在ESMOVAX,CS:BXSI;段地址在CS段地址的基本約定和允許超越的情況如表所示:,3、1、5對8086內存尋址方式的注解(1)在匯編后,指令中的變量名有具體的偏移地址所取代。,(2)在寄存器相對尋址與相對基址變址方式中,位移量disp可以是符號常量或變量,匯編后為一個常數,若是變量,則取其偏移地址。(3)在Microsoft宏匯編MASM(MicrosoftMacroAssembler)中,內存操作數可以采用多種書寫形式。(4)操作數中使用變量的地方也可以用下列形式:變量名整數表達式。5)計算出的有效地址以16位表示,若超過0FFFFH,CPU將忽略所有溢出。(6)記憶8086內存操作數形式的簡易方法如下:BXSIdispBPDI每列選擇0項或一項,構成至少一項,即可得到有效的內存操作數形式。,3、2標志位在標志寄存器FLAGS中有若干標志位,這些標志用來表示CPU當前的操作方式和狀態(tài)信息。與普通應用程序有關的主要是FLAGS中的9個標志6個狀態(tài)標志(CF、OF、SF、ZF、AF、PF)3個控制信息標志(DF、IF、TF)3、2、1深入認識CF和OF1、深入認識CF和OFCF表示無符號溢出,即運算結果超出了無符號數的表示范圍。OF表示帶符號溢出,即運算結果超出了帶符號數的表示范圍。,2、CF和OF判斷方法(1)加法CF的判斷方法從十進制角度來看,若無符號加的結果大于2n(n為位數),則CF=1,否則CF=0。從二進制角度來看,若結果最高位向前有進位,則CF=1,否則CF=0。OF的判斷方法從十進制角度來看,若帶符號加的結果不在范圍n1n-11(n為位數)內,則OF=1,否則OF=0。從二進制角度來看,若兩個數同號,而相加結果與之異號,說明溢出,則OF=1,否則OF=0。例:8位數加法,判斷CF和OF,二進制加法看作無符號數看作帶符號數00110000B66+00001001B+9+9,00111001B1515CF=0OF=000000111B7+7+11111011B+251+(5),00000010B258+21CF=1OF=0現(xiàn)為2結果錯00001001B9+9+01111100B+124+(+124),10000101B133+133CF=0OF=1現(xiàn)為123,結果錯10000111B135(121)+11110101B+245+(11),01111100B3801321CF=1OF=1現(xiàn)為124,結果錯現(xiàn)為124,結果錯,(2)減法CF的判斷方法從十進制角度來看,若無符號減數大于被減數,則CF=1,否則CF=0。從二進制角度來看,若結果最高位向前有借位,則CF=1,否則CF=0。OF的判斷方法從十進制角度來看,若帶符號減的結果不在范圍n-1n-11(n為位數)內,則OF=1,否則OF=0。從二進制角度來看,若兩個數異號,而結果與被減數符號相反,說明溢出,則OF=1,否則OF=0。,3、3指令系統(tǒng)8086/8088的指令系統(tǒng)可以分為6組:(1)數據傳送指令;(2)算術運算指令;(3)邏輯指令與移位指令;(4)串操作指令;(5)控制轉移指令;(6)處理機控制指令;3、3、1數據傳送指令數據傳送指令是最簡單、最常用的一類指令,它是負責把數據、地址、或立即數傳送到寄存器或存儲單元中。,1MOV(Move):傳送指令MOV指令的格式為:MOVdest,src;destsrc功能:將源操作數src復制到目的操作數dest中,結果目的操作數的內容等于源操作數的內容,源操作數src的內容不變。對標志位的影響:無語法格式:MOVreg/mem/seg,reg/mem/seg/imm說明:(1)雙操作數指令不允許兩個操作數同時為段寄存器或存儲器操作數。MOVseg,seg;錯誤MOVmem,mem;錯誤,(2)立即數不能傳送到段寄存器中。MOVseg,imm;錯誤(3)目的操作數不允許使用CS段寄存器。(4)dest與src必須類型匹配,即同時是字節(jié)或字類型。以下幾點要注意:寄存器具有明確的類型,例如,AL、AX分別為字節(jié)、字類型。若立即數沒有明確的類型,MASM負責將立即數擴展為與目的操作數位數相同。有時MASM不能確定內存操作數的類型,需要用byteptr和wordptr明確指出是字節(jié)或字類型。關于PTR的詳細介紹見第4章。只要其中一個操作數的類型確定即可。,例:錯誤的MOV指令如下所示:MOVAX,BL;類型不匹配MOVDS,1000H;不允許立即數送段寄存器MOVBX,SI;不允許內存操作數之間傳送MOVES,CS;不允許段寄存器之間傳送MOVCS,AX;CS不能作為目的操作數例:設B是已定義的字節(jié)變量,以下是一些錯誤和正確的指令。MOVAX,B;錯誤,類型不匹配MOVA,0;正確,MASM可以判斷出要送字節(jié)0,XCHG(Exchange):交換指令XCHG指令的格式為:XCHGoprd1,oprd2;交換oprd1與oprd2的內容語法格式為:XCHGreg/mem,reg/mem例:XCHGBX,BP+SI如指令執(zhí)行前:(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F00H)=4254H,OPR2的物理地址=2F00+0200+0046=2F246則指令執(zhí)行后:(BX)=5154H,(2F246H)=6F30H。,3、堆棧操作指令堆棧概念-存儲器的一段區(qū)域,按“先進后出”的原則進行存出操作。8086/8088系統(tǒng),堆棧位于堆棧段,其段地址由SS指示,SP寄存器作為指針,SP內容始終指向棧頂所在存儲單元。作用:在調用一個過程時,保存返回地址;暫時存放寄存器或存儲器單元操作數的內容。指令格式:進棧PUSHSRC;操作:(SP)(SP)-2,(SP)+1,(SP)(SRC)出棧POPDST;操作:(DST)(SP)+1,(SP),(SP)(SP)+2,堆棧,SS:01F8,SS:01FA,SS:01FC,SS:01FE,SP,AABB,(執(zhí)行PUSHAX之前),堆棧,SS:01F8,SS:01FA,SS:01FC,SS:01FE,SP,AABB,(執(zhí)行PUSHAX之后),1101H,1101H,AX,堆棧,SS:01F8,SS:01FA,SS:01FC,SS:01FE,SP,AABB,(執(zhí)行POPAX之后),1101H,AX,1,2,3,8086/8088系統(tǒng)的堆棧具有如下特點:堆棧是在內存的堆棧段中,具有“先進后出”的特點;堆棧只有一個出入口,即當前棧頂為空時,棧頂和棧底指向同一內存單元;堆棧有兩個基本操作:PUSH(進棧)和POP(出棧)。PUSH操作使棧頂向低地址方向移動,而POP操作則剛好相反;堆棧操作只能作字操作;SS:SP在任何時候都指向當前的棧頂。,4、地址傳送指令將操作數所在存儲器的地址送入目標寄存器。指令格式:有效地址送寄存器:LEAreg16,mem;reg16mem指針送寄存器和DS:LDSreg16,mem32;把源操作數指定的4個相繼字節(jié)到由指令指定的寄存器及DS寄存器中。該指令常指定SI寄存器。指針送寄存器和ES:LESreg16,mem32;把源操作數指定的4個相繼字節(jié)送到由指令指定的寄存器及ES寄存器中。該指令常指定DI寄存器。,LEA指令與MOV指令的區(qū)別:LEASI,BUFF指令是將標號BUFF的偏移地址送入寄存器中;MOVSI,BUFF指令是將標號BUFF所指存儲單元的內容送入SI。,BUFF=,0,1,2,3,4,5,48,00,FE,FF,LEASI,BUFF;執(zhí)行后:(SI)=0002HMOVSI,BUFF;執(zhí)行后:(SI)=0048H,段起始地址,B、LDS或LES指令將源操作數指定的4個連續(xù)字節(jié)單元內容分別送入指令指定的寄存器以及DS或ES中。其中:低16位送到一個指定的字寄存器,高16位送到DS或ES中。,57H,13H,68H,24H,例:(DS)=C000H,(C2480H)=1357H,(C2482H)=2468H,DS:2480H,DS:2481H,DS:2482H,DS:2483H,1357,2468,SI,DS,LDSSI,2480,4、標志寄存器傳送指令指令格式:LAHF;(AH)(PSW低字節(jié))SAHF;(PSW低字節(jié))AHPUSHF;(SP)(SP)-2,(SP)+1,(SP)(PSW)POPF;(PSW)(SP)+1,(SP)(SP)(SP)+2,說明:LAHF/SAHF指令是寄存器AH與標志寄存器PSW的低字節(jié)之間完成的字節(jié)型數據傳送。PUSHF/POPF指令是標志寄存器PSW與堆棧間進行的字型數據傳送。指令SAHF/POPF將影響標志位。,4、2、2算術運算指令1、加法指令指令格式:加法ADDDST,SRC;(DST)(SRC)+(DST)帶進位加法ADCDST,SRC;(DST)(SRC)+(DST)+CF加1INCOPR;(OPR)(OPR)+1說明:這在三條指令運算結果將影響狀態(tài)標志位,但是INC指令不影響標志CF。,2、減法指令指令格式:減法SUBDST,SRC;(DST)(DST)-(SRC)帶進位減法SBBDST,SRC;(DST)(DST)-(SRC)-CF減1DECOPR;(OPR)(OPR)-1求補NEGOPR;(OPR)0FFFFH-(OPR)+1比較CMPOPR1,OPR2;(OPR1)-(OPR2)以上五條指令均可作字或字節(jié)運算,而且除DEC不影響CF外,其他都按一般規(guī)則影響狀態(tài)標志位。,3、乘法指令指令格式:無符號數乘法MULSRC;(AX)(AL)*(SRC)字節(jié)乘法;(DX,AX)(AX)*(SRC)字乘法帶符號數乘法IMULSRC;操作同上進行字節(jié)運算時,目的操作數必須是累加器AL,乘積在寄存器AX中;進行字運算時,目的操作數必須是累加器AX,乘積在寄存器DX,AX中。源操作數不允許使用立即數。乘法指令運算結果只影響狀態(tài)標志CF、OF。例:MULBX;無符號數乘法,BX乘上AX,4、除法指令指令格式:無符號數除法DIVSRC;(AL)(AX)/(SRC)除法的商(AH)(AX)/(SRC)除法余數或者(AX)(DX,AX)/(SRC)除法的商(DX)(DX,AX)/(SRC)除法余數帶符號數除法IDIVSRC;操作同上。,當除數是字節(jié)數據時,被除數必須放在AX中;當除數是字數據時,被除數必須放在DX,AX中。除法指令運算結果對狀態(tài)標志無定義。8086/8088規(guī)定IDIV指令運算結果余數的符號與被除數相同。帶符號數除法運算中,當被除數位數不夠時,可進行擴展。,符號擴展指令:字節(jié)擴展到字CBW;將寄存器AL中的符號位擴展到寄存器AH字擴展到雙字CWD;將寄存器AX中的符號位擴展到寄存器DX,7,0,AL,7,0,AH,0,15,AX,DX,15,0,CBW,CWD,5、壓縮BCD碼十進制調整指令加法十進制調整DAA;執(zhí)行的操作:這條指令執(zhí)行前必須先執(zhí)行ADD或ADC指令,加法指令必須把兩個壓縮的BCD碼相加,并把結果存放在AL寄存器中。減法十進制調整DAS;執(zhí)行的操作:這條指令執(zhí)行之前,必須先執(zhí)行SUB或SBB指令,減法指令必須把兩個BCD碼相減,并把結果存放在AL寄存器中。,調整的方法:累加器AL低4位大于9或輔助進位標志位AF=1,則累加器AL加06H修正。累加器AL高4位大于9或輔助進位標志位AF=1,則累加器AL加60H修正。累加器AL高4位大于等于9,低4位大于9,則累加器AL進行加66H修正。,例:進行BCD碼加法運算59+68=1270101100159+011010006811000001C1+0110011066100100111127,加法運算結果為C1,AF=1,高位大于9,加66H進行壓縮BCD調整,說明:壓縮BCD碼加法或減法十進制調整指令必須在ADD(ADC)或SUB(SBB)指令之后,調整結果對標志OF無影響,對其它狀態(tài)標志位均有影響。減法十進制調整方法與加法十進制調整方法類同,只是將加6變?yōu)闇p6操作。,6、非壓縮BCD碼十進制調整指令指令格式:加法十進制調整AAA;減法十進制調整AAS;乘法十進制調整AAM;除法十進制調整AAD;,AAA指令將AL的內容變換成一位非壓縮的十進制數。AAA檢查AL低四位,如低四位是0-9的數字,AAA就清除AL的高四位,以及AF和CF標志;如AL低四位表示的數大于9或AF=1,AAA執(zhí)行:加6到AL寄存器;加1到AH寄存器;置AF=1,CF=1;清除AL高四位為0。例:ADDAL,BL;AL和BL中的數相加AAA;非壓縮BCD碼調整,AAS指令檢查AL低四位,如低四位表示的數是0-9的數字,ASS清除AL高四位及CF和AF標志;如AL低四位表示的數大于9或AF=1,AAS進行如下調整:,AL減去6;AH減去1;置AF=1,CF=1;清除AL中高四位。例:SUBAL,BL;AAS,AAM指令的作用是用10(0AH)來除AL寄存器的內容,并將除得的商和余數分別送到AH和AL來實現(xiàn)轉換。例:MULBL;AL*BLAAM,3、3、3邏輯指令與移位指令1、邏輯運算指令:對字節(jié)或字數據進行按位的操作。格式:邏輯與ANDDST,SRC;(DST)(DST)AND(SRC)邏輯或ORDST,SRC;(DST)(DST)OR(SRC)邏輯非NOTOPR;(OPR)(OPR)異或XORDST,SRC;(DST)(DST)XOR(SRC)測試TESTOPR1,OPR2;(OPR1)AND(OPR2)(1)、邏輯與(AND)、或(OR)、異或(XOR)操作指令,AND指令主要用來屏蔽掉一個數中某些位,以便對剩下的其它位進行某些處理。對那此兩個操作數都是1的位,目的操作數相對應位就是1,其它各種組合的位,目的操作數相應位都是0。,例:ANDAX,BX;兩個寄存器邏輯與ANDAL,MEM-BYTE;寄存器和存儲單元邏輯與ANDMEM-BYTE,AL;存儲單元和寄存器邏輯與,OR指令在兩個操作數相對應位中有一個是1或兩個都是1時,在目的操作數的該位產生一個1。例:ORBX,0C000B將BX的兩位最高的有效位(15和14位)置成1,而其它位不變。,XOR指令主要用于判斷兩個操作數中那些位是不同的。如兩個操作數相對應位的值不同時,在目的操作數產生一個1。相同為0,不同為1。例:XORBX,0C000B;,NOT指令改變寄存器或存儲單元的每一位狀態(tài),原來為0變?yōu)?,原為1變?yōu)?。例:NOTAX;AX各位取反,TEST指令是一條測試指令,它執(zhí)行的操作與AND相同,不過它不送回結果,只影響標志位。例:TESTAL,00000001B;如AL最低位為0,則ZF=1。,2、移位指令邏輯左移SHLOPR,CNL算術左移SALOPR,CNL邏輯右移SHROPR,CNL算術右移SAROPR,CNT其中:OPR為操作數,CNT為1或CL表示移位次數,0,CF,OPR,0,CF,OPR,CF,OPR,例:設AL=10110100,CF=1在SALAL,1之后,AL=01101000CF=1在SARAL,1之后,AL=11011010CF=0在SHLAL,1之后,AL=01101000CF=1在SHRAL,1之后,AL=01011010CF=0,算術左移(SAL)和算術右移(SAR)實現(xiàn)帶符號數移位。SAR通過在整個移位過程中復制符號來保護操作數的符號。SAL不保護進位,但如果符號位發(fā)生變化的話,就將1送OF標志。每次移位,SAL都將操作數空出來的第0位置0。,邏輯左移(SHL)和邏輯右移(SHR)對無符號數的移位。SHL將操作數左移,空出來的第0位置0;SHR將操作數右移,空出來的高位(字節(jié)時第7位,字時第15位)置0。,例:將兩個非壓縮BCD碼(高位在BL,低位在AL)合并成壓縮BCD碼送AL。MOVCL,4;將計數值送CLSHLBL,CL;將高位移到BL的高4位ANDAL,0FH;清零AL高4位ORAL,BL;合并AL和BL形成壓縮BCD碼。,(2)、循環(huán)移位指令循環(huán)左移ROLOPR,CNT循環(huán)右移ROROPR,CNT帶進位循環(huán)左移RCLOPR,CNT帶進位循環(huán)右移RCROPR,CNT,CF,OPR,CF,OPR,CF,OPR,CF,OPR,例:設AL=10110100B,CF=1執(zhí)行下列語句:執(zhí)行ROLAL,1后,AL=01101001,CF=1執(zhí)行RORAL,1后,AL=01011010,CF=0執(zhí)行RCLAL,1后,AL=01101001,CF=1執(zhí)行RCRAL,1后,AL=11011010,CF=0,3、2、4串操作指令串操作:對存儲區(qū)中連續(xù)存放的字節(jié)或一串字進行操作。與REP前綴相配合工作的指令MOVS、LODS、和STOS指令(1)REP重復串操作直到(CX)=0為止。格式:REPSTRINGPRIMITIVE其中STRINGPRIMITIVE可為MOVS,LODS或STOS指令。如(CX)=0則退出REP,否則繼續(xù)執(zhí)行;(CX)(CX)1;執(zhí)行其后的串指令;重復。(2)MOVS串傳送指令格式:MOVSDST,SRC;MOVSB(字節(jié));MOVSW(字),(3)STOS存入串指令STOS指令的格式為:STOSDST;STOSB(字節(jié));STOSW(字)。執(zhí)行的操作:字節(jié)操作:(DI)(AL),(DI)(DI)1字操作:(DI)(AX),(DI)(DI)2(4)LODS從串中取指令LODS指令的格式為:LODSSRC;LODSB(字節(jié));LODSW(字)。執(zhí)行的操作:字節(jié)操作:(AL)(SI),(SI)(SI)1字操作:(AX)(SI),(SI)(SI)22與REPE/REPZ和REPNE/REPNZ聯(lián)合工作的CMPS和SCAS指令,(1)REPE/REPZ當相等/為零時重復串操作REPE/REPZ指令的格式為:REPE/REPZstringprimitive其中stringprimitive可為CMPS或SCAS指令。執(zhí)行的操作:如(CX)=0或ZF=0(即某次比較的結果兩個操作數不等)時退出,否則繼續(xù)執(zhí)行;(CX)(CX)1;執(zhí)行其后的串指令;重復。(2)REPNE/REPNZ當不相等/不為零重復串操作REPNE/REPNZ指令的格式為:REPNE/REPNZstringprimitive其中stringprimitive可為CMPS或SCAS指令。執(zhí)行的操作:除退出條件為(CX)=0或ZF=1外,其他操作與REPE指令完全相同。,(3)、串比較指令CMPSB;(SI)-(DI)(SI)(SI)1,(DI)(DI)1CMPSW;(SI)-(DI)(SI)(SI)2,(DI)(DI)2(4)SCAS串掃描指令SCAS指令的格式為:SCASDST;SCASB(字節(jié));SCASW(字)。執(zhí)行的操作:字節(jié)操作:(AL)(DI),(DI)(DI)1字操作:(AX)(DI),(DI)(DI)2,3、2、5控制轉移指令控制轉移指令分成無條件轉移指令和條件轉移指令。1無條件轉移指令轉移可以分成兩類:段內轉移和段間轉移。段內轉移是指在同一段的范圍之內進行轉移,此時只需改變IP寄存器的內容,即用新的轉移目標地址代替原有的IP的值就可達到轉移的目的。段間轉移則是要轉到另一個段去執(zhí)行程序,此時不僅要修改IP寄存器的內容,還需要修改CS寄存器的內容才能達到目的,因此此時的轉移目標地址應由新的段地址和偏移地址兩部分組成。,(1)直接短轉移JMPSHORTOPR;操作:(IP)(IP)+8位位移量(2)段內直接轉移JMPNEARPTROPR;操作:(IP)(IP)+16位位移量(3)段內間接轉移JMPWORDPTROPR;操作:(IP)(有效地址)(4)段間直接(遠)轉移JMPNEARPTROPR操作:(IP)OPR的段內偏移地址(CS)OPR所在段的段地址(5)段間間接轉移JMPDWORDPTROPR操作:(IP)(EA)(CS)(EA+2),2、條件轉移指令狀態(tài)標志作為轉移的條件,當滿足一定的條件時,轉移到指定的地址,否則,將順序執(zhí)行下條指令。作為判斷條件的狀態(tài)標志位有:CF、PF、ZF、SF和OF。根據單個標志位的設置情況轉移這組包括10種指令,它們一般適用于測試某一次運算的結果并根據其不同特征產生程序分支作不同處理的情況。結果為零(或相等)轉移JZ/JEOPR;ZF=1結果不為零(或不相等)轉移JNZ/JNEOPR;ZF=0結果為負轉移JSOPR;SF=1結果為正轉移JNSOPR;SF=0,溢出轉移JOOPR;OF=1無溢出轉移JNOOPR;OF=0奇偶位為1轉移JP/PEOPR;PF=1奇偶位為0轉移JNP/JPOOPR;PF=0低于/不高于或等于/進位為1轉移JB/JNAE/JCOPR;CF=1不低于/高于或等于/進位為0轉移JNB/JAE/JNCOPR;CF=0(2)比較兩個無符號數,并根據比較的結果轉移。低于/不高于或不等于/進位為1轉移JB/JNAE/JCOPR;CF=1且ZF=0不低于/高于或等于/進位為0轉移JNB/JAE/JNCOPR;CF=0或ZF=1,低于或等于/不高于轉移JBE/JNAOPR;CF=1或CF=1不低于或不等于/高于轉移JNBE/JAOPR;CF=0且ZF=0(3)比較兩個帶符號數,并根據比較結果轉移。小于或者不大于或者等于轉移JL(或JNGE)OPRSFZF=1小于或者不大于或者等于轉移JNL(或JGE)OPRSFZF=0小于或等于,或者不大于轉移JLE(或JNG)OPR(SFZF)ZF=1小于或等于,或者不大于轉移JNLE(或JG)OPR(SFZF)ZF=0,(4)測試CX的值為0則轉移指令JCXZOPR;(CX)=0則轉移3、循環(huán)控制指令(1)LOOP(LOOP)循環(huán)指令格式:LOOPOPR測試條件:(CX)0(2)LOOPZ/LOOPE(Loopwhilezeroorequal)當為零或相等時循環(huán)指令格式:LOOPZ(或LOOPE)OPR測試條件:ZF=1且(CX)0(3)LOOPNZ/LOOPNE(Loopwhilenonzero,ornotequal)當不為零或不相等時循環(huán)指令格式:LOOPNZ(或LOOPNE)OPR測試條件:ZF=0且(CX)0,4、子程序CALL調用指令(1)段內直接調用格式:CALLDST執(zhí)行的操作:(IP)(SP)2;(SP)1,(SP)(IP);(IP)(IP)D16;()段內間接調用格式:CALLDST執(zhí)行的操作:(SP)(SP)2;(SP)1,(SP)(IP);(IP)(EA)()段間直接調用格式:CALLDST,執(zhí)行的操作:(SP)(SP)2;(SP)1,(SP)(CS);(SP)(SP)2;(SP)1,(SP)(IP);(IP)偏移地址(指令的第2,3個字節(jié));(CS)段地址(指令的第4,5個字節(jié))。(4)段間間接調用格式:CALLDST執(zhí)行的操作:(SP)(SP)2;(SP)1,(SP)(CS);(SP)(SP)2;(SP)1,(SP)(IP);(IP)(EA);(CS)(EA2),RET返回指令段內返回RET;(IP)(SP)+1,(SP)(SP)(SP)+2段內帶立即數返回RETEXP;(IP)(SP)+1,(SP)(SP)(SP)+2(SP)(SP)+DISP16位移量段間返回RET;(IP)(SP)+1,(SP)(SP)(SP)+2(CS)(SP)+1,(SP)(SP)(SP)+2,段間帶立即數返回RETEXP;(IP)(SP)+1,(SP)(SP)(SP)+2(CS)(SP)+1,(SP)(SP)(SP)+2(SP)(SP)+DISP16位移量3、2、6處理機控制指令1標志處理指令(1)CLC進位位置0指令(Clearcarry)CF0(2)CMC進位位求反指令(Complementcarry)CFCF(3)STC進位位置1指令(Setcarry)CF1(4)CLD方向標志置0指令(Cleardirection)DF0,(5)STD方向標志位置1指令(Setdirection)DF1(6)CLI中斷標志置0(關中斷)指令(Clearinterrupt)IF0(7)STI中斷標志置1(開中斷)指令(Setinterrupt)IF12其它處理機控制指令(1)NOP空操作指令NOP指令的語法格式為:NOP(2)HLT停機指令HLT指令的語法格式為:HLT(3)WAIT等待指令WAIT指令的語法格式為:WAIT(4)ESC換碼指令ESC指令的語法格式為:ESCmem(5)LOCK封鎖前綴指令LOCK指令的語法格式為:LOCK,習題1.判斷下列指令是否正確。若不正確,指出錯誤原因。(1)MOVSP,DL(2)POPCS(3)MOVBPSI,DI(4)MOVSP,BP(5)JLEBX(6)MOVES,1000H(7)MOVAX,BX+2(8)MOVES,CS(9)ANDAX,CX(10)SHRBL2.說明指令DECAX與SUBAX,1的區(qū)別。3.IP寄存器能作為指令的操作數嗎?哪類指令的執(zhí)行會改變IP的值?4.在無符號數和帶符號數比較兩種情況下,分別給出下列條件成立時相關標志位的值。(1)相等(2)不相等(3)小于(4)小于或等于(5)大于(6)大于或等,5.說明CALL和RET指令要執(zhí)行的操作。6.如果過程的第一條指令是POPAX,那么AX的值將是什么?7.在哪兩種情況下,執(zhí)行DIV或IDIV指令將出錯?8.給出與下列每組指令序列功能相同的一條指令。(1)MOVAH,ALSARAH,7(2)MOVDX,AXSARDX,15(3)TESTAX,1JZISZEROSTCJMPDONEISZERO:CLCDONE,9.寫出實現(xiàn)下列功能的指令序列。(1)將AL與BX中的兩個無符號數相加,結果放入AX。(2)將AL與BX中的兩個帶符號數相加,結果放入AX。10.分析下列指令序列完成什么功能。MOVCL,4SHLAX,CLMOVBL,DLSHRDX,CLSHLBL,CLORAH,BL11.給出下列各條指令執(zhí)行后AL以及CF、OF、SF和ZF的值。XORAL,ALMOVAL,255,INCALNOTALSHLALCMPALSUBAL,7FHSHLAL,112.寫出與下列指令功能相同的指令序列。(1)CLDREPMOVSB(2)CLDRDPSTOSD(3)CLDREPECMPSW,13.設AX與DX存放的均為位十進制數對應的壓縮BCD碼,給出下列代碼的功能。ADDAL,DLDAAXCHGAL,AHADCAL,DHDAAXCHGAL,AH14.編寫實現(xiàn)下列功能的指令序列。(1)AL的高位與低位分別放入BH與BL的低4位,并將BH與BL的高4位清0。(2)將CX:BX:AX中的48位數加倍。其中,CX與AX分別作為最高16位與最低16位。(3)設AL的值為帶符號數,若AL的絕對值小于10,則置CF=0,否則置CF=1。,(4)若AX和BX中的數恰好一個是奇數、一個是偶數,則將奇數放入AX,偶數放入BX;否則,AX和BX不變。(5)將AX中的無符號數乘以10存入DX:AX(要求用移位、傳送和加法指令實現(xiàn))。(6)設字節(jié)變量X中存放著位帶符號數,計算4X5X2,將結果存入AX中。(7)求12100,結果放入AX中。,

注意事項

本文(微型計算機指令系統(tǒng).ppt)為本站會員(tian****1990)主動上傳,裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!