工學第3章-指令系統(tǒng)2課件_第1頁
工學第3章-指令系統(tǒng)2課件_第2頁
工學第3章-指令系統(tǒng)2課件_第3頁
工學第3章-指令系統(tǒng)2課件_第4頁
工學第3章-指令系統(tǒng)2課件_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

8086指令系統(tǒng)(2)18086指令系統(tǒng)(2)1三、邏輯運算和移位類邏輯運算移位操作非循環(huán)移位循環(huán)移位2三、邏輯運算和移位類邏輯運算非循環(huán)移位2邏輯運算和移位指令3邏輯運算和移位指令3指令類型邏輯運算與,或,非,異或移位操作非循環(huán)移位,循環(huán)移位4指令類型邏輯運算4一、邏輯運算邏輯運算指令對操作數的要求大多與MOV指令相同?!胺恰边\算指令要求操作數不能是立即數;除“非”運算指令外,其余指令的執(zhí)行都會使標志位OF=CF=05一、邏輯運算邏輯運算指令對操作數的要求大多與MOV指令相同1.“與”指令:格式:

ANDOPRD1,OPRD2操作:兩操作數相“與”,結果送目標地址。61.“與”指令:格式:6“與”指令的應用實現兩操作數按位相與的運算ANDBL,[SI]使目標操作數的某些位不變,某些位清零ANDAL,0FH在操作數不變的情況下使CF和OF清零ANDAX,AX7“與”指令的應用實現兩操作數按位相與的運算72.“或”運算指令格式:

OROPRD1,OPRD2操作:

兩操作數相“或”,結果送目標地址82.“或”運算指令格式:8“或”指令的應用實現兩操作數相“或”的運算ORAX,[DI]使某些位不變,某些位置“1”O(jiān)RCL,0FH在不改變操作數的情況下使OF=CF=0ORAX,AX9“或”指令的應用實現兩操作數相“或”的運算9“或”指令的應用將一個二進制數9變?yōu)樽址?’如何實現?10“或”指令的應用將一個二進制數9變?yōu)樽址?’如何實現?103.“非”運算指令格式:NOTOPRD操作:操作數按位取反再送回原地址注:指令中的操作數不能是立即數指令的執(zhí)行對標志位無影響例:NOTBYTEPTR[BX]113.“非”運算指令格式:114.“異或”運算指令格式:XOROPRD1,OPRD2操作:兩操作數相“異或”,結果送目標地址例:XOR

BL,80H

XORAX,AX兩操作數自身相異或,結果為零124.“異或”運算指令格式:兩操作數自身相異或,結果為零15.“測試”指令格式:TESTOPRD1,OPRD2操作:執(zhí)行“與”運算,但運算的結果不送回目標地址。應用:常用于測試某些位的狀態(tài)135.“測試”指令格式:13例:從地址為3F8H的端口中讀入一個字節(jié)數,當該數的bit1,bit3,bit5位同時為1時,可從38FH端口將DATA為首地址的一個字輸出,否則就不能進行數據傳送。編寫相應的程序段。14例:從地址為3F8H的端口中讀入一個字節(jié)數,當該數的bit1源程序代碼:

LEASI,DATAMOVDX,3F8HWATT:INAL,DX

MOVDX,38FHMOVAX,[SI]OUTDX,AXANDAL,2AHCMPAL,2AHJNZWATTTESTAL,02HJZWATT;ZF=1轉移TESTAL,08HJZWATTTESTAL,20HJZWATTANDAL,2AHXORAL,2AHJNZWATT15源程序代碼:LEASI,DATAAND邏輯指令小結AND指令用于對一個數據的指定位清零OR指令用于對一個數據的指定位置1NOT指令用于取反碼,再加一,得補碼XOR指令用于對寄存器清零,對特定位取反TEST指令用于測試一個數據的指定位是1還是0。操作與AND指令相同,但不送回操作結果,僅影響標志位。16邏輯指令小結16二、移位指令

非循環(huán)移位指令循環(huán)移位指令注:移動一位時由指令直接給出;移動兩位及以上,則移位次數由CL指定。17二、移位指令非循環(huán)移位指令注:17二、非循環(huán)移位指令SHLdst,count;邏輯左移SHRdst,count;邏輯右移SALdst,count;算數左移SARdst,count;算數右移CFML00MLCCFML0MLCF0最高位保持不變18二、非循環(huán)移位指令CFM算術左移和邏輯左移算術左移指令:

SALOPRD,1SALOPRD,CL邏輯左移指令:SHLOPRD,1SHLOPRD,CL有符號數無符號數移動一位后,若CF與最高位不相等,則OF=1;否則OF=019算術左移和邏輯左移算術左移指令:有符號數無符號數移動一位后,邏輯右移格式:

SHROPRD,1SHROPRD,CL0CF無符號數的右移移動一位后,若次高位與最高位不相等,則OF=1;否則OF=020邏輯右移格式:0CF無符號數的右移移動一位后,若次高位與最高邏輯右移例:MOVAL,68HMOVCL,2SHRAL,CL0CF011010AL00000110100ALCF0000011010ALCF00移動1次移動2次21邏輯右移例:MOVAL,68H0CF011010算術右移格式:

SAROPRD,1SAROPRD,CL有符號數的右移CF22算術右移格式:有符號數的右移CF22非循環(huán)移位指令的應用左移可實現乘法運算右移可實現除法運算程序段:MOVBX,AXMOVCL,2SHLAX,CL;左移2位,乘以4ADDAX,BX;AX為原來5倍

SHLAX,1;AX為原來的10倍

HLT

23非循環(huán)移位指令的應用左移可實現乘法運算232.循環(huán)移位指令不帶進位位的循環(huán)移位帶進位位的循環(huán)移位左移ROL右移ROR左移RCL右移RCR指令格式、對操作數的要求與非循環(huán)移位指令相同242.循環(huán)移位指令左移ROL左移RCL指令格式、對操作不帶進位位的循環(huán)移位CFCF25不帶進位位的循環(huán)移位CFCF25帶進位位的循環(huán)移位CFCF26帶進位位的循環(huán)移位CFCF26循環(huán)移位指令的應用用于對某些位狀態(tài)的測試;高位部分和低位部分的交換;與非循環(huán)移位指令一起組成32位或更長字長數的移位。(P124例3-35)27循環(huán)移位指令的應用用于對某些位狀態(tài)的測試;27程序例

MOVSI,1000HMOVDI,3000HMOVCX,4 STR:MOVAL,[SI]

MOVBL,AL

ANDAL,0FH ORAL,30H

MOV[DI],ALINCDIMOVAL,BLPUSHCXMOVCL,4SHRAL,CLORAL,30HMOV[DI],ALINCDIINCSIPOPCXDECCXJNZSTRHLT程序功能?28程序例MOVSI,1000HPUSHC程序功能將1000H開始存放的四個壓縮BCD碼轉換為ASCII碼存放在3000H開始的單元中去。┇┇12H34H56H78H┇1000H3000H29程序功能將1000H開始存放的四個壓縮BCD碼轉換為ASCI串操作指令30串操作指令30字串傳送:MOVSB/MOVSW字串比較:CMPSB/CMPSW字串掃描:SCASB/SCASW字串裝入:LODSB/LODSW字串存儲:STOSB/STOSB31字串傳送:MOVSB/MOVSW31串操作指令說明針對數據塊或字符串的操作;可實現存儲器到存儲器的數據傳送;待操作的數據串稱為源串,目標地址稱為目標串。32串操作指令說明針對數據塊或字符串的操作;32串操作指令的特點源串一般存放在數據段,偏移地址由SI指定。允許段重設;目標串必須在附加段,偏移地址由DI指定;指令自動修改地址指針,修改方向由DF決定。DF=0DF=1數據塊長度值由CX指定可增加自動重復前綴以實現自動修改CX內容。增地址方向;減地址方向;33串操作指令的特點源串一般存放在數據段,偏移地址由SI指定。允重復前綴無條件重復REP條件重復REPE相等重復REPZ為零重復REPNE不相等重復REPNZ不為零重復CX≠0且ZF=1CX≠0且ZF=0CX≠0重復34重復前綴無條件重復CX≠0且ZF=1CX≠0且串操作指令流程取源串地址取目標串地址設串長度傳送一個字節(jié)或字修改地址指針修改串長度值傳送完否?NY設操作方向35串操作指令流程取源串地址取目標串地址設串長度傳送一個字節(jié)或字1.串傳送指令格式:

MOVSOPRD1,OPRD2MOVSBMOVSW串傳送指令常與無條件重復前綴連用361.串傳送指令格式:36串傳送指令對比用MOV指令和MOVS指令實現將200個字節(jié)數據從內存的一個區(qū)域送到另一個區(qū)域的程序段。37串傳送指令對比用MOV指令和MOVS指令實現將200個字節(jié)數串傳送指令例用串傳送指令實現200個字節(jié)數據的傳送:LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPMOVSBHLT38串傳送指令例用串傳送指令實現200個字節(jié)數據的傳送:382.串比較指令格式:

CMPSOPRD1,OPRD2CMPSBCMPSW串比較指令常與條件重復前綴連用,指令的執(zhí)行不改變操作數,僅影響標志位。前綴的操作對標志位不影響392.串比較指令格式:39串比較指令例測試200個字節(jié)數據是否傳送正確:LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPECMPSBJZSTOPDECSIMOVAL,[SI]MOVBX,SISTOP:HLT40串比較指令例測試200個字節(jié)數據是否傳送正確:LEASI3.串掃描指令格式:

SCASOPRDSCASBSCASW執(zhí)行與CMPS指令相似的操作,只是這里的源操作數是AX或AL目標操作數413.串掃描指令格式:目標41串掃描指令的應用常用于在指定存儲區(qū)域中尋找某個關鍵字。P127例3-3842串掃描指令的應用常用于在指定存儲區(qū)域中尋找某個關鍵字。42串裝入指令格式:

LODSOPRDLODSBLODSW操作:對字節(jié):AL對字:AX源操作數[DS:SI][DS:SI]43串裝入指令格式:源操作數[DS:SI][DS:SI]434.串裝入指令用于將內存某個區(qū)域的數據串依次裝入累加器,以便顯示或輸出到接口。LODS指令一般不加重復前綴。444.串裝入指令用于將內存某個區(qū)域的數據串依次裝入累加器,以5.串存儲指令格式:

STOSOPRDSTOSBSTOSW操作:對字節(jié):AL對字:AX目標操作數[ES:DI][ES:DI]455.串存儲指令格式:目標[ES:DI][ES:DI]串存儲指令例內存某個區(qū)域清零設計思想:區(qū)域首地址送ES:DI串長度送CX置方向標志DF0送累加器AL執(zhí)行串送存指令P12946串存儲指令例內存某個區(qū)域清零設計思想:區(qū)域程序控制指令轉移指令循環(huán)控制過程調用中斷控制47程序控制指令轉移指令47一、轉移和調用指令的尋址段內直接轉移有效地址:IP+位移量段內間接轉移段間直接轉移

CS、IP段間間接轉移

CS、IP48一、轉移和調用指令的尋址段內直接轉移48二、無條件轉移指令和條件轉移指令1、無條件轉移指令

段內轉移:

JMP1000H;IPIP+1000HJMPSHORTLOP1;LOP1是標號

段間轉移

JMPFARPTRLOP2IPLOP2的段內偏移地址

CSLOP2的段地址

JMPDWORDPTR[BX]IP[BX]CS[BX+2]49二、無條件轉移指令和條件轉移指令1、無條件轉移指令

段內轉段間間接轉移間接尋址轉移的目標地址由指令中的32位操作數給出例:JMPDWORDPTR[BX]XXHXXHXXHXXHBXIPCSJMP┇┇┇┇指令碼代碼段1代碼段2數據段50段間間接轉移間接尋址XXHXXHXXHXXHBXIPCSJM

形式:JX短目標地址

X:1~3個英文字母跳轉范圍:-128~+127字節(jié)1)、JE/JZ;等于,A=B(ZF=1則跳轉)JNZ/JNE;不等于,A<>B2)、無符號數比較

JB/JNAE:A<BJNB/JAE:A>=BJA/JNBE:A>B;JNA/JBE:A<=B2.條件轉移指令51形式:JX短目標地址2.條件轉移指令3)、帶符號數比較指令JL:A<BJNL:A>=BJG:A>BJNG:A<=B4)其它轉移指令JS、JNS;JO、JNO;JP、JPE:P=1JPO、JNP;JCXZ:CX=0轉移

523)、帶符號數比較指令4)其它轉移指令52例、比較1000H、1001單元的兩個數(無符號數),將大數存2000H單元中。解:MOVBX,1000H;第一數送ALMOVAL,[BX]INCBX;指向第二數

CMPAL,[BX];兩數比較

JALOP1

;大于轉

MOVAL,[BX];大數AL送LOP1:MOV[2000H],ALHLT53例、比較1000H、1001單元的兩個數(無符號數),53二、循環(huán)控制指令循環(huán)范圍:以當前IP為中心的-128~+127范圍內循環(huán)。循環(huán)次數由CX寄存器指定。循環(huán)指令:LOOP*LOOPZ*LOOPNZ無條件循環(huán)指令條件循環(huán)指令54二、循環(huán)控制指令循環(huán)范圍:LOOP無條件循環(huán)無條件循環(huán)指令格式:LOOPLABEL循環(huán)條件:CX≠0操作:

DECCXJNZ符號地址55無條件循環(huán)指令格式:55條件循環(huán)指令格式:LOOPZLABELLOOPELABEL循環(huán)條件:CX≠0ZF=1格式:LOOPNZLABELLOOPNELABEL循環(huán)條件:CX≠0ZF=056條件循環(huán)指令格式:格式:56三、過程調用和返回用于調用一個子過程;子過程由程序員預先設計并裝入內存子過程執(zhí)行結束后要返回原調用處調用程序斷點入口地址入口地址斷點地址子程序57三、過程調用和返回用于調用一個子過程;調用程序斷點入口地址入

指令格式CALL

RET

(1)CALL指令

CALL1000H;段內直接調用

1)、IP入棧:SPSP-2[SP]IP2)、入口地址:IPIP+1000H58指令格式CALL

RET

CALLNEARBCD1;段內直接調用1)IP值入棧:SPSP-2[SP]IP2)入口地址:IPBCD1的偏移地址CALLAX;段內間接調用1)IP值入棧:SPSP-2[SP]IP2)入口地址:IPAX的值59CALLNEARBCD1;段內直接調用59CALLFARBCD2;段間直接調用

1)、CS值入棧

2)、IP值入棧

3)、CSBCD2的段地址IPBCD2的偏移地址CALLDWORDPTR[DI];段間間接調用

1)、CS值入棧

2)、IP值入棧

3)、IP[DI]CS[DI+2]60CALLFARBCD2;段間直接調用CALL(2)、返回指令:RET

1)段內調用返回從堆棧彈出一個字到IP2)段間調用返回從堆棧彈出一個字到IP

從堆棧彈出一個字到CS3)RETN:帶參數返回

RET6,返回后,使SP+6。61(2)、返回指令:RET

1)段內調用返回61段間調用例格式:

CALLFARPROC格式例:CALLFARTIMRECALLDWORDPTR[SI]XXHXXHCALL代碼段數據段┇SIXXHXXHCSIP62段間調用例格式:XXHXXHCALL代碼段數據段┇SIXXH四、中斷指令中斷中斷源中斷的類型中斷指令引起CPU產生一次中斷的指令63四、中斷指令中斷63中斷與過程調用:中斷是隨機事件或異常事件引起,調用則是事先已在程序中安排好;響應中斷請求不僅要保護斷點地址,還要保護FLAGS內容;調用指令在指令中直接給出子程序入口地址,中斷指令只給出中斷向量碼,入口地址則在向量碼指向的內存單元中。64中斷與過程調用:中斷是隨機事件或異常事件引起,調用則是事64

1)INTn

(1)、標志寄存器入棧;(2)、清標志位TF、IF;(3)、CS、IP值入棧;(4)、計算中斷地址:

n4:低地址單元入IP

高地址單元入CS

2)INTO:溢出中斷

3)中斷返回IRET651)INTn65中斷指令的執(zhí)行過程n×4

22H11H00H67HIPCS68122HMOV代碼段中斷向量表┇堆棧段SPFLAGSHFLAGSLIPHCSLCSHIPL┇SPSPSP66中斷指令的執(zhí)行過程n×422H11H00H67HIPCS6例3:INT21H操作結果:1)、標志寄存器入棧,

2)、清TF、IF3)、CS、IP入棧

4)、計算中斷矢量存放地址:

21H4=84H

84H85H86H87H00200030IP2000HCS3000H67例3:INT21H84H00IP23.中斷返回指令格式:

IRET中斷服務程序的最后一條指令,負責恢復斷點恢復標志寄存器內容683.中斷返回指令格式:恢復斷點68五、處理器控制指令對標志位的操作與外部設備的同步說明見p139表69五、處理器控制指令對標志位的操作說明見p139表69本章課外自學內容:BCD碼調整指令遠地址指針指令LDS,LES條件循環(huán)指令LOOPZ,LOOPNZPentium新增指令70本章課外自學內容:BCD碼調整指令70結束語:掌握:指令的格式及意義;指令對操作數的要求及對標志位的影響;指令的應用。71結束語:掌握:718086指令系統(tǒng)(2)728086指令系統(tǒng)(2)1三、邏輯運算和移位類邏輯運算移位操作非循環(huán)移位循環(huán)移位73三、邏輯運算和移位類邏輯運算非循環(huán)移位2邏輯運算和移位指令74邏輯運算和移位指令3指令類型邏輯運算與,或,非,異或移位操作非循環(huán)移位,循環(huán)移位75指令類型邏輯運算4一、邏輯運算邏輯運算指令對操作數的要求大多與MOV指令相同?!胺恰边\算指令要求操作數不能是立即數;除“非”運算指令外,其余指令的執(zhí)行都會使標志位OF=CF=076一、邏輯運算邏輯運算指令對操作數的要求大多與MOV指令相同1.“與”指令:格式:

ANDOPRD1,OPRD2操作:兩操作數相“與”,結果送目標地址。771.“與”指令:格式:6“與”指令的應用實現兩操作數按位相與的運算ANDBL,[SI]使目標操作數的某些位不變,某些位清零ANDAL,0FH在操作數不變的情況下使CF和OF清零ANDAX,AX78“與”指令的應用實現兩操作數按位相與的運算72.“或”運算指令格式:

OROPRD1,OPRD2操作:

兩操作數相“或”,結果送目標地址792.“或”運算指令格式:8“或”指令的應用實現兩操作數相“或”的運算ORAX,[DI]使某些位不變,某些位置“1”O(jiān)RCL,0FH在不改變操作數的情況下使OF=CF=0ORAX,AX80“或”指令的應用實現兩操作數相“或”的運算9“或”指令的應用將一個二進制數9變?yōu)樽址?’如何實現?81“或”指令的應用將一個二進制數9變?yōu)樽址?’如何實現?103.“非”運算指令格式:NOTOPRD操作:操作數按位取反再送回原地址注:指令中的操作數不能是立即數指令的執(zhí)行對標志位無影響例:NOTBYTEPTR[BX]823.“非”運算指令格式:114.“異或”運算指令格式:XOROPRD1,OPRD2操作:兩操作數相“異或”,結果送目標地址例:XOR

BL,80H

XORAX,AX兩操作數自身相異或,結果為零834.“異或”運算指令格式:兩操作數自身相異或,結果為零15.“測試”指令格式:TESTOPRD1,OPRD2操作:執(zhí)行“與”運算,但運算的結果不送回目標地址。應用:常用于測試某些位的狀態(tài)845.“測試”指令格式:13例:從地址為3F8H的端口中讀入一個字節(jié)數,當該數的bit1,bit3,bit5位同時為1時,可從38FH端口將DATA為首地址的一個字輸出,否則就不能進行數據傳送。編寫相應的程序段。85例:從地址為3F8H的端口中讀入一個字節(jié)數,當該數的bit1源程序代碼:

LEASI,DATAMOVDX,3F8HWATT:INAL,DX

MOVDX,38FHMOVAX,[SI]OUTDX,AXANDAL,2AHCMPAL,2AHJNZWATTTESTAL,02HJZWATT;ZF=1轉移TESTAL,08HJZWATTTESTAL,20HJZWATTANDAL,2AHXORAL,2AHJNZWATT86源程序代碼:LEASI,DATAAND邏輯指令小結AND指令用于對一個數據的指定位清零OR指令用于對一個數據的指定位置1NOT指令用于取反碼,再加一,得補碼XOR指令用于對寄存器清零,對特定位取反TEST指令用于測試一個數據的指定位是1還是0。操作與AND指令相同,但不送回操作結果,僅影響標志位。87邏輯指令小結16二、移位指令

非循環(huán)移位指令循環(huán)移位指令注:移動一位時由指令直接給出;移動兩位及以上,則移位次數由CL指定。88二、移位指令非循環(huán)移位指令注:17二、非循環(huán)移位指令SHLdst,count;邏輯左移SHRdst,count;邏輯右移SALdst,count;算數左移SARdst,count;算數右移CFML00MLCCFML0MLCF0最高位保持不變89二、非循環(huán)移位指令CFM算術左移和邏輯左移算術左移指令:

SALOPRD,1SALOPRD,CL邏輯左移指令:SHLOPRD,1SHLOPRD,CL有符號數無符號數移動一位后,若CF與最高位不相等,則OF=1;否則OF=090算術左移和邏輯左移算術左移指令:有符號數無符號數移動一位后,邏輯右移格式:

SHROPRD,1SHROPRD,CL0CF無符號數的右移移動一位后,若次高位與最高位不相等,則OF=1;否則OF=091邏輯右移格式:0CF無符號數的右移移動一位后,若次高位與最高邏輯右移例:MOVAL,68HMOVCL,2SHRAL,CL0CF011010AL00000110100ALCF0000011010ALCF00移動1次移動2次92邏輯右移例:MOVAL,68H0CF011010算術右移格式:

SAROPRD,1SAROPRD,CL有符號數的右移CF93算術右移格式:有符號數的右移CF22非循環(huán)移位指令的應用左移可實現乘法運算右移可實現除法運算程序段:MOVBX,AXMOVCL,2SHLAX,CL;左移2位,乘以4ADDAX,BX;AX為原來5倍

SHLAX,1;AX為原來的10倍

HLT

94非循環(huán)移位指令的應用左移可實現乘法運算232.循環(huán)移位指令不帶進位位的循環(huán)移位帶進位位的循環(huán)移位左移ROL右移ROR左移RCL右移RCR指令格式、對操作數的要求與非循環(huán)移位指令相同952.循環(huán)移位指令左移ROL左移RCL指令格式、對操作不帶進位位的循環(huán)移位CFCF96不帶進位位的循環(huán)移位CFCF25帶進位位的循環(huán)移位CFCF97帶進位位的循環(huán)移位CFCF26循環(huán)移位指令的應用用于對某些位狀態(tài)的測試;高位部分和低位部分的交換;與非循環(huán)移位指令一起組成32位或更長字長數的移位。(P124例3-35)98循環(huán)移位指令的應用用于對某些位狀態(tài)的測試;27程序例

MOVSI,1000HMOVDI,3000HMOVCX,4 STR:MOVAL,[SI]

MOVBL,AL

ANDAL,0FH ORAL,30H

MOV[DI],ALINCDIMOVAL,BLPUSHCXMOVCL,4SHRAL,CLORAL,30HMOV[DI],ALINCDIINCSIPOPCXDECCXJNZSTRHLT程序功能?99程序例MOVSI,1000HPUSHC程序功能將1000H開始存放的四個壓縮BCD碼轉換為ASCII碼存放在3000H開始的單元中去。┇┇12H34H56H78H┇1000H3000H100程序功能將1000H開始存放的四個壓縮BCD碼轉換為ASCI串操作指令101串操作指令30字串傳送:MOVSB/MOVSW字串比較:CMPSB/CMPSW字串掃描:SCASB/SCASW字串裝入:LODSB/LODSW字串存儲:STOSB/STOSB102字串傳送:MOVSB/MOVSW31串操作指令說明針對數據塊或字符串的操作;可實現存儲器到存儲器的數據傳送;待操作的數據串稱為源串,目標地址稱為目標串。103串操作指令說明針對數據塊或字符串的操作;32串操作指令的特點源串一般存放在數據段,偏移地址由SI指定。允許段重設;目標串必須在附加段,偏移地址由DI指定;指令自動修改地址指針,修改方向由DF決定。DF=0DF=1數據塊長度值由CX指定可增加自動重復前綴以實現自動修改CX內容。增地址方向;減地址方向;104串操作指令的特點源串一般存放在數據段,偏移地址由SI指定。允重復前綴無條件重復REP條件重復REPE相等重復REPZ為零重復REPNE不相等重復REPNZ不為零重復CX≠0且ZF=1CX≠0且ZF=0CX≠0重復105重復前綴無條件重復CX≠0且ZF=1CX≠0且串操作指令流程取源串地址取目標串地址設串長度傳送一個字節(jié)或字修改地址指針修改串長度值傳送完否?NY設操作方向106串操作指令流程取源串地址取目標串地址設串長度傳送一個字節(jié)或字1.串傳送指令格式:

MOVSOPRD1,OPRD2MOVSBMOVSW串傳送指令常與無條件重復前綴連用1071.串傳送指令格式:36串傳送指令對比用MOV指令和MOVS指令實現將200個字節(jié)數據從內存的一個區(qū)域送到另一個區(qū)域的程序段。108串傳送指令對比用MOV指令和MOVS指令實現將200個字節(jié)數串傳送指令例用串傳送指令實現200個字節(jié)數據的傳送:LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPMOVSBHLT109串傳送指令例用串傳送指令實現200個字節(jié)數據的傳送:382.串比較指令格式:

CMPSOPRD1,OPRD2CMPSBCMPSW串比較指令常與條件重復前綴連用,指令的執(zhí)行不改變操作數,僅影響標志位。前綴的操作對標志位不影響1102.串比較指令格式:39串比較指令例測試200個字節(jié)數據是否傳送正確:LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPECMPSBJZSTOPDECSIMOVAL,[SI]MOVBX,SISTOP:HLT111串比較指令例測試200個字節(jié)數據是否傳送正確:LEASI3.串掃描指令格式:

SCASOPRDSCASBSCASW執(zhí)行與CMPS指令相似的操作,只是這里的源操作數是AX或AL目標操作數1123.串掃描指令格式:目標41串掃描指令的應用常用于在指定存儲區(qū)域中尋找某個關鍵字。P127例3-38113串掃描指令的應用常用于在指定存儲區(qū)域中尋找某個關鍵字。42串裝入指令格式:

LODSOPRDLODSBLODSW操作:對字節(jié):AL對字:AX源操作數[DS:SI][DS:SI]114串裝入指令格式:源操作數[DS:SI][DS:SI]434.串裝入指令用于將內存某個區(qū)域的數據串依次裝入累加器,以便顯示或輸出到接口。LODS指令一般不加重復前綴。1154.串裝入指令用于將內存某個區(qū)域的數據串依次裝入累加器,以5.串存儲指令格式:

STOSOPRDSTOSBSTOSW操作:對字節(jié):AL對字:AX目標操作數[ES:DI][ES:DI]1165.串存儲指令格式:目標[ES:DI][ES:DI]串存儲指令例內存某個區(qū)域清零設計思想:區(qū)域首地址送ES:DI串長度送CX置方向標志DF0送累加器AL執(zhí)行串送存指令P129117串存儲指令例內存某個區(qū)域清零設計思想:區(qū)域程序控制指令轉移指令循環(huán)控制過程調用中斷控制118程序控制指令轉移指令47一、轉移和調用指令的尋址段內直接轉移有效地址:IP+位移量段內間接轉移段間直接轉移

CS、IP段間間接轉移

CS、IP119一、轉移和調用指令的尋址段內直接轉移48二、無條件轉移指令和條件轉移指令1、無條件轉移指令

段內轉移:

JMP1000H;IPIP+1000HJMPSHORTLOP1;LOP1是標號

段間轉移

JMPFARPTRLOP2IPLOP2的段內偏移地址

CSLOP2的段地址

JMPDWORDPTR[BX]IP[BX]CS[BX+2]120二、無條件轉移指令和條件轉移指令1、無條件轉移指令

段內轉段間間接轉移間接尋址轉移的目標地址由指令中的32位操作數給出例:JMPDWORDPTR[BX]XXHXXHXXHXXHBXIPCSJMP┇┇┇┇指令碼代碼段1代碼段2數據段121段間間接轉移間接尋址XXHXXHXXHXXHBXIPCSJM

形式:JX短目標地址

X:1~3個英文字母跳轉范圍:-128~+127字節(jié)1)、JE/JZ;等于,A=B(ZF=1則跳轉)JNZ/JNE;不等于,A<>B2)、無符號數比較

JB/JNAE:A<BJNB/JAE:A>=BJA/JNBE:A>B;JNA/JBE:A<=B2.條件轉移指令122形式:JX短目標地址2.條件轉移指令3)、帶符號數比較指令JL:A<BJNL:A>=BJG:A>BJNG:A<=B4)其它轉移指令JS、JNS;JO、JNO;JP、JPE:P=1JPO、JNP;JCXZ:CX=0轉移

1233)、帶符號數比較指令4)其它轉移指令52例、比較1000H、1001單元的兩個數(無符號數),將大數存2000H單元中。解:MOVBX,1000H;第一數送ALMOVAL,[BX]INCBX;指向第二數

CMPAL,[BX];兩數比較

JALOP1

;大于轉

MOVAL,[BX];大數AL送LOP1:MOV[2000H],ALHLT124例、比較1000H、1001單元的兩個數(無符號數),53二、循環(huán)控制指令循環(huán)范圍:以當前IP為中心的-128~+127范圍內循環(huán)。循環(huán)次數由CX寄存器指定。循環(huán)指令:LOOP*LOOPZ*LOOPNZ無條件循環(huán)指令條件循環(huán)指令125二、循環(huán)控制指令循環(huán)范圍:LOOP無條件循環(huán)無條件循環(huán)指令格式:LOOPLABEL循環(huán)條件:CX≠0操作:

DECCXJNZ符號地址126無條件循環(huán)指令格式:55條件循環(huán)指令格式:LOOPZLABELLOOPELABEL循環(huán)條件:CX≠0ZF=1格式:LOOPNZLABELLOOPNELABEL循環(huán)條件:CX≠0ZF=0127條件循環(huán)指令格式:格式:56三、過程調用和返回用于調用一個子過程;子過程由程序員預先設計并裝入內存子過程執(zhí)行結束后要返回原調用處調用程序斷點入口地址入口地址斷點地址子程序128三、過程調用和返回用于調用一個子過程;調用程序斷點入口地址入

指令格式CALL

RET

(1)CALL指令

CALL1000H;段內直接調用

1)、IP入棧:SPSP-2[SP]IP2)、入口地址:IPIP+1000H129指令格式CALL

RET

CALLNEARBCD1;段內直接調用1)IP值入棧:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論