第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頁,還剩54頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-11 匯編語言匯編語言 程序設計程序設計 匯編語言程序設計匯編語言程序設計 (第三章)(第三章) 遼寧石油化工大學計算機與通信工程學院遼寧石油化工大學計算機與通信工程學院 主講:王曉虹主講:王曉虹 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-12 匯編語言匯編語言 程序設計程序設計 三、三、位操作指令 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-13 匯編語言匯編語言 程序設計程序設計 三、

2、三、位操作指令 80868086提供的位操作指令包括邏輯運算指令和移位指令,這類指令可直接對提供的位操作指令包括邏輯運算指令和移位指令,這類指令可直接對 寄存器或存儲器中的位進行操作。寄存器或存儲器中的位進行操作。 1 1邏輯運算指令邏輯運算指令 邏輯運算指令包括:邏輯運算指令包括:ANDAND指令、指令、OROR指令、指令、XORXOR指令、指令、TESTTEST指令和指令和NOTNOT指令,指令, 其中前四種指令是雙操作數(shù)指令,符合雙操作數(shù)指令的一般規(guī)律,其中前四種指令是雙操作數(shù)指令,符合雙操作數(shù)指令的一般規(guī)律,這四條指這四條指 令執(zhí)行后將使令執(zhí)行后將使CFCF和和OFOF位為位為0 0,

3、AFAF位不確定,而位不確定,而SFSF、ZFZF和和PFPF位則根據(jù)運算結果設位則根據(jù)運算結果設 置;置;NOTNOT指令是單操作數(shù)指令,符合單操作數(shù)指令的一般規(guī)律,它的執(zhí)行不影指令是單操作數(shù)指令,符合單操作數(shù)指令的一般規(guī)律,它的執(zhí)行不影 響標志位。響標志位。 (1 1)邏輯與指令)邏輯與指令 格式:格式:AND OPDAND OPD,OPSOPS 功能:將目的操作數(shù)與源操作數(shù)按位相與,結果送目的操作數(shù)。功能:將目的操作數(shù)與源操作數(shù)按位相與,結果送目的操作數(shù)。 即:即:OPDOPD(OPDOPD)(OPSOPS)。)。 說明:說明: “ “與與”的運算原則是:的運算原則是:11=111=1,

4、01=001=0,10=010=0,00=000=0。 AND AND指令常用于指令常用于: : (a) (a)使一個操作數(shù)中的若干位保持不變,而若干位清為使一個操作數(shù)中的若干位保持不變,而若干位清為0 0的場合。的場合。 (b b)某一操作數(shù),自己和自己相)某一操作數(shù),自己和自己相“與與”,操作數(shù)不變,但可以使進,操作數(shù)不變,但可以使進 位標志位標志CFCF清清0 0。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-14 匯編語言匯編語言 程序設計程序設計 【例】將【例】將ALAL中第中第3 3位和第位和第7 7位清零。位清零。 MOVMO

5、V ALAL,0FFH 0FFH AND AND ALAL,77H 77H 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-15 匯編語言匯編語言 程序設計程序設計 (2 2)邏輯或指令)邏輯或指令 格式:格式:OR OPDOR OPD,OPSOPS 功能:將目的操作數(shù)與源操作數(shù)按位相或,結果送目的操作數(shù)。功能:將目的操作數(shù)與源操作數(shù)按位相或,結果送目的操作數(shù)。 即:即:OPDOPD(OPDOPD)(OPSOPS)。)。 說明:說明: “ “或或”操作的運算原則是:操作的運算原則是:11=111=1,01=101=1,10=110=1,00=0

6、00=0。 OR OR指令常用于:指令常用于: (a) (a) 使一個操作數(shù)中的若干位保持不變,而另外若干位置使一個操作數(shù)中的若干位保持不變,而另外若干位置1 1的的 場合。這時,要保持不變的這些位與場合。這時,要保持不變的這些位與“0”0”相或;而要置相或;而要置1 1 的這些位與的這些位與“1”1”相或。相或。 (b) (b) 某一操作數(shù),自己和自己相某一操作數(shù),自己和自己相“或或”,操作數(shù)不變,但可以,操作數(shù)不變,但可以 使進位標志使進位標志CFCF清清0 0。 【例】將【例】將AL寄存器中第寄存器中第3位和第位和第7位置位置1。 MOVAL,0 OR AL,88H 單擊此處編輯母版標題

7、樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-16 匯編語言匯編語言 程序設計程序設計 (3)邏輯異或指令)邏輯異或指令 格式:格式:XOR OPD,OPS 功能:將目的操作數(shù)與源操作數(shù)按位相異或,結果送目的操作數(shù)。功能:將目的操作數(shù)與源操作數(shù)按位相異或,結果送目的操作數(shù)。 即:即:OPD(OPD) (OPS)。)。 說明:說明: “異或異或”操作的運算原則是:操作的運算原則是:1 1=0,0 0=0,0 1=1,1 0=1。 XOR指令常用于:指令常用于: (a) 使一個操作數(shù)中的若干位保持不變,而另外若干位取反的場合。這時,使一個操作數(shù)中的若干位保持不變,而

8、另外若干位取反的場合。這時, 要保持不變的這些位與要保持不變的這些位與“0”相異或;而要取反的那些位與相異或;而要取反的那些位與“1”相異或。相異或。 (b) 使某一操作數(shù)清使某一操作數(shù)清0。由于一個操作數(shù)自身做。由于一個操作數(shù)自身做“異或異或”時,每一位都相同,時,每一位都相同, “異或異或”結果必為結果必為0,且使進位標志也為,且使進位標志也為0。因此這是使操作數(shù)的初值置。因此這是使操作數(shù)的初值置0的常用的常用 的有效的方法。的有效的方法。 如指令如指令XOR AX,AX ;AX清清0。 (c) 測試某一操作數(shù)是否與另一確定的操作數(shù)相等。這種操作在檢查地址是測試某一操作數(shù)是否與另一確定的操

9、作數(shù)相等。這種操作在檢查地址是 否匹配時是常用的。否匹配時是常用的。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-17 匯編語言匯編語言 程序設計程序設計 (4 4)測試指令)測試指令 格式:格式:TEST OPDTEST OPD,OPSOPS 功能:目的操作數(shù)與源操作數(shù)按位相與,結果反映在標志位上,功能:目的操作數(shù)與源操作數(shù)按位相與,結果反映在標志位上, 但不送回目的操作數(shù)。但不送回目的操作數(shù)。 即:(即:(OPDOPD)(OPSOPS)。)。 【例】按位加運算?!纠堪次患舆\算。 MOVAL,45H;(;(AL)=45H XORAL,3

10、1H;(;(AL)=? ;(;(AL)=74H 說明:說明: 該指令完成與該指令完成與ANDAND指令相同的操作,但指令相同的操作,但TESTTEST指令不改變目的操指令不改變目的操 作數(shù)的值。作數(shù)的值。 TEST TEST指令常用于:在不希望改變原有的操作數(shù)的情況下,用來指令常用于:在不希望改變原有的操作數(shù)的情況下,用來 檢測某一位或某幾位的條件是否滿足。編程時常與條件轉移指檢測某一位或某幾位的條件是否滿足。編程時常與條件轉移指 令一起使用,可在令一起使用,可在TESTTEST指令后面加上條件轉移指令,來測試操指令后面加上條件轉移指令,來測試操 作數(shù)某位是否為作數(shù)某位是否為1 1,或者是否為

11、,或者是否為0 0。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-18 匯編語言匯編語言 程序設計程序設計 【例】測試【例】測試AX中的第中的第12位是否為位是否為0,不為,不為0則轉則轉L。 TESTAX,_ JNEL 1000H (5)邏輯非指令)邏輯非指令 格式:格式:NOT OPD 功能:將目的操作數(shù)各位取反,結果送目的操作數(shù)。功能:將目的操作數(shù)各位取反,結果送目的操作數(shù)。 即:即:OPD(OPD)。)。 說明:若將整個操作數(shù)取反,則應使用說明:若將整個操作數(shù)取反,則應使用NOT指令,若只需將操作數(shù)指令,若只需將操作數(shù) 的一部分位取

12、反,則應使用的一部分位取反,則應使用XOR指令。指令。 【例】邏輯非運算?!纠窟壿嫹沁\算。 MOVAX,878AH;(;(AX)=878AH NOTAX ;(;(AX)=7875H 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-19 匯編語言匯編語言 程序設計程序設計 - AND指令對一個數(shù)據(jù)的指定位清指令對一個數(shù)據(jù)的指定位清0。例如,。例如,AND AL,0FH指令就實現(xiàn)將高指令就實現(xiàn)將高4 位清位清0。 - OR- OR指令常常用來對一些指定位置指令常常用來對一些指定位置1 1。例如,指令。例如,指令OR ALOR AL,0202實現(xiàn)對

13、累加器中實現(xiàn)對累加器中 的的D1D1位置位置1 1。 -XORXOR指令常常用在一些程序的開頭使某個寄存器清指令常常用在一些程序的開頭使某個寄存器清0 0,以配合初始化工作,以配合初始化工作 的完成。例如,的完成。例如,XOR AXXOR AX,AXAX,使累加器清,使累加器清0 0。 - NOT- NOT指令常用來將某個數(shù)據(jù)取成反碼,再加上指令常用來將某個數(shù)據(jù)取成反碼,再加上1 1,便得到補碼。,便得到補碼。 -TESTTEST指令一般用來檢測指定位是指令一般用來檢測指定位是1 1還是還是0 0,而這個指定位往往對應一個物,而這個指定位往往對應一個物 理量。理量。 例如,某一個狀態(tài)寄存器的最

14、低位反映一種狀態(tài),為例如,某一個狀態(tài)寄存器的最低位反映一種狀態(tài),為1 1時,說明狀態(tài)信號時,說明狀態(tài)信號 滿足要求,于是,就可以先將狀態(tài)寄存器的內容讀到滿足要求,于是,就可以先將狀態(tài)寄存器的內容讀到ALAL中,再用中,再用TEST ALTEST AL, 0101指令,此后就可以通過對指令,此后就可以通過對ZFZF的判斷來了解此狀態(tài)位是否為的判斷來了解此狀態(tài)位是否為1 1。如果。如果ZFZF 1 1,說明結果為,說明結果為0 0,即最低位為,即最低位為0 0,條件不滿足;如果,條件不滿足;如果ZFZF0 0,說明結果不,說明結果不 為為0 0,即最低位不為,即最低位不為0 0,而為,而為1 1,

15、所以條件滿足。,所以條件滿足。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-110 匯編語言匯編語言 程序設計程序設計 對一個位串,對一個位串,ANDAND可以屏蔽(清可以屏蔽(清0 0)某些位,)某些位,OROR可以置位可以置位( (置置1)1)某些位,某些位, XORXOR可以取反某些位,可以取反某些位,XORXOR可以檢查兩個位串是否匹配。可以檢查兩個位串是否匹配。 AND AX,0AND AX,0;AXAX清清0 0 AND CL,0FHAND CL,0FH;屏蔽;屏蔽CLCL的高的高4 4位位 OR BH,00111100BOR

16、BH,00111100B;將;將BHBH的中間的中間4 4位置位位置位 XOR BL,0F0HXOR BL,0F0H;將;將BLBL高高4 4位變反位變反 NOTNOT指令執(zhí)行不影響狀態(tài)標志,其他邏輯指令執(zhí)行后將重新設置指令執(zhí)行不影響狀態(tài)標志,其他邏輯指令執(zhí)行后將重新設置SFSF、 ZFZF、PFPF的狀態(tài),而總使的狀態(tài),而總使CF=0CF=0、OF=0OF=0,AFAF狀態(tài)不確定。狀態(tài)不確定。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-111 匯編語言匯編語言 程序設計程序設計 屏蔽若干位。屏蔽若干位。 (常用指令)(常用指令) AND

17、 AL,01H;屏蔽;屏蔽AL的的D7D1,保留,保留D0 AND AL,0FH;屏蔽;屏蔽AL高高4位,保留低位,保留低4位位 使若干位置使若干位置1 (常用指令)(常用指令) OR BL,0F0H;使;使BL高高4位置位置1,低,低4位不變位不變 清除清除CF、OF 或或 設置標志設置標志 AND AL,AL (AND AL,0FFH;OR BL,BL;) ;類似指令沒有改變目的操作數(shù),但使類似指令沒有改變目的操作數(shù),但使CF=OF=0,也,也 可能純粹以設置其他標志(可能純粹以設置其他標志(ZF)為目的。)為目的。 總結總結 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第

18、三級 第四級 第五級 2021-7-112 匯編語言匯編語言 程序設計程序設計 求反求反 NOT AL / NOT WORD PTRBX+DI 對指定位求反對指定位求反 XOR AL,0FH;AL高高4位不變,低位不變,低4位求反位求反 XOR CL,55H;CL偶數(shù)位求反,奇數(shù)位不變偶數(shù)位求反,奇數(shù)位不變 清除寄存器及清除寄存器及CF(常用指令)(常用指令) XOR AX,AX / XOR BX,BX XOR BYTE PTRBX,BYTE PTRBX X 0=X X 1=X 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-113 匯編語言匯

19、編語言 程序設計程序設計 不改變操作數(shù),測試操作數(shù)或操作數(shù)的指定位不改變操作數(shù),測試操作數(shù)或操作數(shù)的指定位 TEST AL,0FFH;由;由ZF標志判斷標志判斷AL是否為零是否為零 ;也可以用;也可以用CMP指令。指令。 TEST AL,01;由;由ZF標志判斷標志判斷AL的的D0是否為零,是否為零, ;ZF=1,則,則AL.D0=0 ;ZF=0,則,則AL.D0=1 AND AL,01 ;也可完成上述功能,但是改變了目;也可完成上述功能,但是改變了目 ;的操作數(shù);的操作數(shù) 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-114 匯編語言匯編語

20、言 程序設計程序設計 2 2 移位指令移位指令 移位指令包括算術移位指令、邏輯移位指令和循環(huán)移位指移位指令包括算術移位指令、邏輯移位指令和循環(huán)移位指 令,分別進行左移和右移操作。這些指令均有統(tǒng)一的語句格式:令,分別進行左移和右移操作。這些指令均有統(tǒng)一的語句格式: 標號:標號: 操作符操作符OPDOPD,1 1或或 標號:標號: 操作符操作符OPDOPD,CLCL 其功能為將目的操作數(shù)的所有位按操作符規(guī)定的方式移動其功能為將目的操作數(shù)的所有位按操作符規(guī)定的方式移動 1 1位或按寄存器位或按寄存器CLCL規(guī)定的次數(shù)(規(guī)定的次數(shù)(0-2550-255)移動,結果送入目的)移動,結果送入目的 地址。目

21、的操作數(shù)是地址。目的操作數(shù)是8 8位(或位(或1616位)的寄存器數(shù)據(jù)或存儲器數(shù)位)的寄存器數(shù)據(jù)或存儲器數(shù) 據(jù)。據(jù)。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-115 匯編語言匯編語言 程序設計程序設計 (1 1)邏輯左移指令)邏輯左移指令 格式:格式:SHL OPDSHL OPD,COUNTCOUNT 功能:將目的操作數(shù)向左移動功能:將目的操作數(shù)向左移動COUNTCOUNT指定的位數(shù),每左移一位,最低位指定的位數(shù),每左移一位,最低位 補補0 0,最高位送,最高位送CFCF。 (2 2)邏輯右移指令)邏輯右移指令 格式:格式:SHR OP

22、DSHR OPD,COUNTCOUNT 功能:將目的操作數(shù)向右移動功能:將目的操作數(shù)向右移動COUNTCOUNT指定的位數(shù),每右移一位,最高位指定的位數(shù),每右移一位,最高位 補補0 0,最低位送,最低位送CFCF。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-116 匯編語言匯編語言 程序設計程序設計 (3 3)算術左移指令)算術左移指令 格式:格式:SAL OPDSAL OPD,COUNTCOUNT 功能:功能:SALSAL指令與指令與SHLSHL指令的功能完全相同。指令的功能完全相同。 (4 4)算術右移指令)算術右移指令 格式:格式:

23、SAR OPDSAR OPD,COUNTCOUNT 功能:將目的操作數(shù)向右移動功能:將目的操作數(shù)向右移動COUNTCOUNT指定的位數(shù),每右移一位,最高指定的位數(shù),每右移一位,最高 位均保持不變,最低位送位均保持不變,最低位送CFCF。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-117 匯編語言匯編語言 程序設計程序設計 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-118 匯編語言匯編語言 程序設計程序設計 【例】算術右移運算。【例】算術右移運算。 MOVMOV BHBH,0F4H0F

24、4H;(;(BHBH)=0F4H=0F4H MOVMOV CLCL, 2 2 ;(;(CLCL)=2=2 SARSAR BHBH, CLCL;(;(BHBH)=0FDH=0FDH,(,(CFCF)=0=0 該例語句該例語句“SARSARBHBH,CL”CL”實際上完成了(實際上完成了(BHBH)BHBH的運算,的運算, 所以,用所以,用SARSAR指令可以實現(xiàn)對有符號數(shù)除指令可以實現(xiàn)對有符號數(shù)除2n2n的運算(的運算(n n為移位次數(shù))。為移位次數(shù))。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-119 匯編語言匯編語言 程序設計程序設計

25、(5 5)循環(huán)左移指令)循環(huán)左移指令ROLROL 格式:格式:ROL OPDROL OPD,COUNTCOUNT 功能:將目的操作數(shù)向左循環(huán)移位功能:將目的操作數(shù)向左循環(huán)移位COUNTCOUNT指定的位數(shù),每左移一位,指定的位數(shù),每左移一位, 左移前的最高送最低位以及左移前的最高送最低位以及CFCF。 (6 6)循環(huán)右移指令)循環(huán)右移指令RORROR 格式:格式:ROR OPDROR OPD,COUNTCOUNT 功能:將目的操作數(shù)向右循環(huán)移位功能:將目的操作數(shù)向右循環(huán)移位COUNTCOUNT指定的位數(shù),每右移一位,指定的位數(shù),每右移一位, 右移前的最低送最高位以及右移前的最低送最高位以及CF

26、CF。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-120 匯編語言匯編語言 程序設計程序設計 (7)帶進位的循環(huán)左移指令)帶進位的循環(huán)左移指令RCL 格式:格式:RCL OPD,COUNT 功能:將目的操作數(shù)連同功能:將目的操作數(shù)連同CF位一起向左循環(huán)移位位一起向左循環(huán)移位COUNT指定的位數(shù),指定的位數(shù), 每左移一位,左移前的每左移一位,左移前的CF送最低位,左移前的最高位送送最低位,左移前的最高位送CF。 (8)帶進位的循環(huán)右移指令)帶進位的循環(huán)右移指令RCR 格式:格式:RCR OPD,COUNT 功能:將目的操作數(shù)連同功能:將目的

27、操作數(shù)連同CF位一起向右循環(huán)移位位一起向右循環(huán)移位COUNT指定的位數(shù),指定的位數(shù), 每右移一位,右移前的每右移一位,右移前的CF送最高位,右移前的最低送送最高位,右移前的最低送CF。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-121 匯編語言匯編語言 程序設計程序設計 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-122 匯編語言匯編語言 程序設計程序設計 例:將例:將DXDX和和AXAX中的低中的低8 8位拼成一個位拼成一個1616位數(shù)放在位數(shù)放在DXDX中,要求原中,要求原DXDX

28、中的低中的低8 8 位置于位置于1616位數(shù)中的高位。位數(shù)中的高位。 MOV CL,8MOV CL,8 SHL DX,CLSHL DX,CL AND AX,0FFHAND AX,0FFH OR DX,AX OR DX,AX 例如,下面的程序段將例如,下面的程序段將ALAL中的數(shù)乘以中的數(shù)乘以1010: SALSALALAL,1 1,;,; 將將ALAL中數(shù)左移中數(shù)左移1 1位,得位,得2X2X MOVMOVBLBL,ALAL; 2X2X保存在保存在BLBL中中 MOVMOVCLCL,2 2; 移位次數(shù)置入移位次數(shù)置入CLCL中中 SALSALALAL,CLCL; 2X2X左移左移2 2位,得位

29、,得8X8X ADDADDALAL,BLBL; 2X2X加上加上8X8X,所以,所以ALAL中為中為10X10X 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-123 匯編語言匯編語言 程序設計程序設計 例:分析以下程序段。例:分析以下程序段。 MOV AX MOV AX ,1234H 1234H ;(;(AXAX) 0001001000110100B0001001000110100B MOV CL MOV CL ,8 8 ROL AX ROL AX ,CL CL 將將AXAX內容循環(huán)左移內容循環(huán)左移8 8位(位(AXAX) 00110100

30、00010010B0011010000010010B,CFCF0 0 執(zhí)行程序段以后,(執(zhí)行程序段以后,(AXAX)3412H3412H,相當于將高,相當于將高8 8位與低位與低8 8位位 交換。交換。 由此可見,循環(huán)移位指令可以改變操作數(shù)中原有位的位置。由此可見,循環(huán)移位指令可以改變操作數(shù)中原有位的位置。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-124 匯編語言匯編語言 程序設計程序設計 例:將例:將AXAX中的最高位移至中的最高位移至BXBX的最低位的最低位. . RCL AX RCL AX ,1 1 ;將;將AXAX中的最高位移至

31、中的最高位移至CFCF中中 RCL BX RCL BX ,1 1 ;將;將CFCF的內容移至的內容移至BXBX的最低位的最低位 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-125 匯編語言匯編語言 程序設計程序設計 四、四、處理器控制指令 1 1 標志位操作指令標志位操作指令 (1 1)清除進位標志指令)清除進位標志指令 (2 2)進位標志置位指令)進位標志置位指令 CLC CLC ;置;置CFCF0 STC 0 STC ;置;置CFCF1 1 (3 3)進位標志取反指令)進位標志取反指令 CMC CMC ;CFCF取反取反 (4 4)清除

32、方向標志指令)清除方向標志指令 (5 5)方向標志置位指令)方向標志置位指令 CLD CLD ;置;置DFDF0 STD 0 STD ;置;置DFDF1 1 (6 6)清除中斷標志指令)清除中斷標志指令 (7 7)中斷標志置位指令)中斷標志置位指令 CLI CLI ;置;置IFIF0 STI 0 STI ;置;置IFIF1 1 2 2 處理器控制指令處理器控制指令 (1 1)空操作指令)空操作指令 格式:格式:NOP NOP 功能:功能:CPUCPU執(zhí)行一次空操作執(zhí)行一次空操作 。 (2 2) 暫停指令暫停指令 格式:格式:HLT HLT 功能:使功能:使CPUCPU進入暫停狀態(tài),不進行任何操

33、作進入暫停狀態(tài),不進行任何操作 。 (3 3)等待指令)等待指令 格式:格式:WAITWAIT 功能:使功能:使CPUCPU處于等待狀態(tài)處于等待狀態(tài) 。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-126 匯編語言匯編語言 程序設計程序設計 五 串操作指令 串操作指令就是用一條指令實現(xiàn)對一串字符或數(shù)據(jù)的操作。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-127 匯編語言匯編語言 程序設計程序設計 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021

34、-7-128 匯編語言匯編語言 程序設計程序設計 80868086的串操作指令有如下特點:的串操作指令有如下特點: (1) (1) 通過加重復前綴來實現(xiàn)串操作。通過加重復前綴來實現(xiàn)串操作。 (2) (2) 可以對字節(jié)串進行操作,也可以對字串進行操作??梢詫ψ止?jié)串進行操作,也可以對字串進行操作。 (3) (3) 所有的串操作指令都用寄存器所有的串操作指令都用寄存器SISI對源操作數(shù)進行間接尋址,對源操作數(shù)進行間接尋址, 并且假定是在并且假定是在DSDS段中;此外,所有的串操作指令都用寄存器段中;此外,所有的串操作指令都用寄存器DIDI 為目的操作數(shù)進行間接尋址,并且假定是在為目的操作數(shù)進行間接尋

35、址,并且假定是在ESES段中。串操作指段中。串操作指 令是唯一的一組源操作數(shù)和目的操作數(shù)都在存儲單元的指令。令是唯一的一組源操作數(shù)和目的操作數(shù)都在存儲單元的指令。 (4) (4) 串操作時,地址的修改往往與方向標志串操作時,地址的修改往往與方向標志DFDF有關,當有關,當DFDF1 1時,時, SISI和和DIDI作自動減量修改,當作自動減量修改,當DFDF0 0時,時,SISI和和DIDI作自動增量修改。作自動增量修改。 (5) (5) 在同一個段內實現(xiàn)字符串傳送時,應該將數(shù)據(jù)段基址和附加在同一個段內實現(xiàn)字符串傳送時,應該將數(shù)據(jù)段基址和附加 段基址設置成同一數(shù)值,即段基址設置成同一數(shù)值,即(

36、DS)(DS)(ES)(ES),此時,仍由,此時,仍由SISI和和DIDI分分 別指出源串操作數(shù)和目的操作數(shù)的偏移地址。別指出源串操作數(shù)和目的操作數(shù)的偏移地址。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-129 匯編語言匯編語言 程序設計程序設計 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-130 匯編語言匯編語言 程序設計程序設計 流程圖總結了串操作的過程。 圖圖 串操作流程圖串操作流程圖 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-

37、7-131 匯編語言匯編語言 程序設計程序設計 1 1傳送指令傳送指令MOVSMOVS 語句格式:語句格式: MOVSB MOVSB字節(jié)串傳送字節(jié)串傳送 MOVSW MOVSW字串傳送字串傳送 功能:將以功能:將以SISI為指針的源串中的一個字節(jié)(或字)存儲單為指針的源串中的一個字節(jié)(或字)存儲單 元中的數(shù)據(jù)傳送至以元中的數(shù)據(jù)傳送至以DIDI為指針的目的地址中去,并自動修為指針的目的地址中去,并自動修 改指針,使之指向下一個字節(jié)(或字)存儲單元。改指針,使之指向下一個字節(jié)(或字)存儲單元。 即:即:(DSDS:SISI)ESES:DIDI。 當當DF=0DF=0時,(時,(SISI)和()和(

38、DIDI)增量。)增量。 當當DF=1DF=1時,(時,(SISI)和()和(DIDI)減量。)減量。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-132 匯編語言匯編語言 程序設計程序設計 2 2串比較指令串比較指令CMPS CMPS 語句格式:語句格式: CMPSB CMPSB字節(jié)串比較字節(jié)串比較 CMPSW CMPSW字串比較字串比較 功能:將功能:將SISI所指的源串中的一個字節(jié)(或字)存儲單元中所指的源串中的一個字節(jié)(或字)存儲單元中 的數(shù)據(jù)與的數(shù)據(jù)與DIDI所指的目的串中的一個字節(jié)(或字)存儲單元所指的目的串中的一個字節(jié)(或字)

39、存儲單元 中的數(shù)據(jù)相減,并根據(jù)相減的結果設置標志,但結果并不中的數(shù)據(jù)相減,并根據(jù)相減的結果設置標志,但結果并不 保存。保存。 即:即:(SISI)()(DIDI)。)。 修改串指針,使之指向串中的下一個元素。修改串指針,使之指向串中的下一個元素。 當當DF=0DF=0時,(時,(SISI)和()和(DIDI)增量。)增量。 當當DF=1DF=1時,(時,(SISI)和()和(DIDI)減量。)減量。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-133 匯編語言匯編語言 程序設計程序設計 3 3串搜索指令串搜索指令SCASSCAS 語句格式:

40、語句格式: SCASB SCASB字節(jié)串搜索字節(jié)串搜索 SCASW SCASW字串搜索字串搜索 功能:功能:ALAL(字節(jié))或(字節(jié))或AXAX(字)中的內容與(字)中的內容與DIDI所指的目的串所指的目的串 中的一個字節(jié)(或字)存儲單元中的數(shù)據(jù)相減,根據(jù)相減中的一個字節(jié)(或字)存儲單元中的數(shù)據(jù)相減,根據(jù)相減 結果設置標志位,結果不保存,結果設置標志位,結果不保存, 即:即: 字節(jié)操作:(字節(jié)操作:(ALAL)()(DIDI),), 字操作:(字操作:(AXAX)()(DIDI)。)。 修改指針使之指向串中的下一個元素。修改指針使之指向串中的下一個元素。 當當DF=0DF=0時,(時,(DID

41、I)增量。)增量。 當當DF=1DF=1時,(時,(DIDI)減量。)減量。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-134 匯編語言匯編語言 程序設計程序設計 4 4從源串中取數(shù)指令從源串中取數(shù)指令LODSLODS 語句格式:語句格式: LODSB LODSB從字節(jié)串中取數(shù)從字節(jié)串中取數(shù) LODSW LODSW從字串中取數(shù)從字串中取數(shù) 功能:將功能:將SISI所指的源串中的一個字節(jié)(或字)存儲單元所指的源串中的一個字節(jié)(或字)存儲單元 中的數(shù)據(jù)取出來送入中的數(shù)據(jù)取出來送入ALAL(或(或AXAX)中。)中。 即:即: 字節(jié)操作:(字節(jié)

42、操作:(SISI)ALAL, 字操作:(字操作:(SISI)AXAX。 修改指針修改指針SISI,使它指向串中的下一個元素。,使它指向串中的下一個元素。 當當DF=0DF=0時,(時,(SISI)增量。)增量。 當當DF=1DF=1時,(時,(SISI)減量。)減量。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-135 匯編語言匯編語言 程序設計程序設計 5 5往目的串中存數(shù)指令往目的串中存數(shù)指令STOSSTOS 語句格式:語句格式: STOSB STOSB往字節(jié)串中存數(shù)往字節(jié)串中存數(shù) STOSW STOSW往字串中存數(shù)往字串中存數(shù) 功能:

43、將功能:將ALAL或或AXAX中的數(shù)據(jù)送入中的數(shù)據(jù)送入DIDI所指的目的串中的字節(jié)(或所指的目的串中的字節(jié)(或 字)存儲單元中。字)存儲單元中。 即:即: 字節(jié)操作:(字節(jié)操作:(ALAL)DIDI, 字操作:(字操作:(AXAX)DIDI。 修改指針修改指針DIDI,使之指向串中的下一個元素。,使之指向串中的下一個元素。 當當DF=0DF=0時,(時,(DIDI)增量)。)增量)。 當當DF=1DF=1時,(時,(DIDI)減量。)減量。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-136 匯編語言匯編語言 程序設計程序設計 6 6重復前

44、綴指令重復前綴指令REP REPZ REPNZREP REPZ REPNZ (1 1)REP (REP (無條件重復無條件重復) ) REPREP前綴用在前綴用在MOVSMOVS、STOS STOS 、LODSLODS指令前。指令前。 功能:每執(zhí)行一次串指令(功能:每執(zhí)行一次串指令(CXCX)1 1,直到(,直到(CXCX)=0=0,重復執(zhí)行,重復執(zhí)行 結束。結束。 (2 2)REPZ (REPZ (當相等當相等/ /為零時重復為零時重復) ) 該指令一般用在該指令一般用在CMPCMP、SCASSCAS指令前。指令前。 功能:每執(zhí)行一次串指令(功能:每執(zhí)行一次串指令(CXCX)1 1,并判斷,

45、并判斷ZFZF標志是否為標志是否為0 0, 只要(只要(CXCX)=0=0或或ZF=0ZF=0,則重復執(zhí)行結束。,則重復執(zhí)行結束。 (3 3)REPNZ (REPNZ (當不等當不等/ /不為零時重復不為零時重復) ) 該指令一般用在該指令一般用在CMPSCMPS、SCAS SCAS 指令前。指令前。 功能:每執(zhí)行一次串指令(功能:每執(zhí)行一次串指令(CXCX)1 1,并判斷,并判斷ZFZF標志是否為標志是否為0 0, 只要(只要(CXCX)=0=0或或ZF=1ZF=1,則重復執(zhí)行結束。,則重復執(zhí)行結束。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 202

46、1-7-137 匯編語言匯編語言 程序設計程序設計 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-138 匯編語言匯編語言 程序設計程序設計 例例: 使使0404H開始的開始的256個單元清個單元清0。程序如下:。程序如下: CLDCLD; 清除方向標志清除方向標志DFDF LEALEADIDI,04040404; 將目的地址將目的地址0404H0404H送送DIDI MOVMOVCXCX,0080H0080H; 共有共有128128個字個字 XORXORAXAX,AXAX; AXAX清清0 0 REPREPSTOSWSTOSW; 將將256

47、256個字節(jié)清個字節(jié)清0 0 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-139 匯編語言匯編語言 程序設計程序設計 例例: :在某字符串中查找是否存在在某字符串中查找是否存在“”字符。若存在,則將字符。若存在,則將 “”字符所在地址送入字符所在地址送入BXBX寄存器中,否則將寄存器中,否則將BXBX寄存器清寄存器清 “0”0”。程序如下:。程序如下: CLD CLD ;清除方向標志;清除方向標志DFDF MOVMOVDIDI,0100H0100H;送目標串首元素偏移地址;送目標串首元素偏移地址 MOVMOVALAL,;關鍵字;關鍵字ALA

48、L REPNEREPNESCASBSCASB ;找關鍵字;找關鍵字 ANDANDCXCX,0FFH0FFH JZJZZERZER DECDECDIDI MOVMOVBXBX,DIDI;關鍵字所在地址;關鍵字所在地址BXBX JMPJMPST0ST0 ZERZER: MOVMOVBXBX,0 0;未找到,;未找到,0BX0BX ST0ST0:HLTHLT 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-140 匯編語言匯編語言 程序設計程序設計 例例: : 檢驗一段被傳送過的數(shù)據(jù)是否與源串完全相同檢驗一段被傳送過的數(shù)據(jù)是否與源串完全相同. . 若

49、相同,若相同,BXBX置置0 0,否則,將第一個不相同數(shù)據(jù)的地,否則,將第一個不相同數(shù)據(jù)的地 址和內容分別送到址和內容分別送到BXBX和和ALAL中。中。 ANDCX,0FFH JZEQQ DECSI MOVBX,SI;第一個不相同字節(jié)偏移地址;第一個不相同字節(jié)偏移地址BX MOVAL,SI;第一個不相同字節(jié)內容;第一個不相同字節(jié)內容AL JMPSTOP EQQ: MOVBX,0;兩串完全相同,;兩串完全相同,BX0 STOP:HLT CLD MOV CX,100初始化初始化 MOV SI,2400H MOV DI,1200H; REPECMPSB;串比較,直到;串比較,直到ZF0或或CX0

50、單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-141 匯編語言匯編語言 程序設計程序設計 六、控制轉移類指令六、控制轉移類指令 1 1 無條件轉移指令無條件轉移指令 2 2 條件轉移指令條件轉移指令 3 3 循環(huán)控制指令循環(huán)控制指令 4 4 子程序調用指令子程序調用指令 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-142 匯編語言匯編語言 程序設計程序設計 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-143 匯編語言匯編語言 程序設計程

51、序設計 1 1 無條件轉移指令無條件轉移指令 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-144 匯編語言匯編語言 程序設計程序設計 JMP STATJMP STAT(段內直接轉移)(段內直接轉移) JMP BX JMP BX (段內間接轉移)(段內間接轉移) JMP FAR PRT ADD2JMP FAR PRT ADD2(段間直接轉移)(段間直接轉移) JMP DWOD PTRBX+ADDR3JMP DWOD PTRBX+ADDR3(段間間接轉移)(段間間接轉移) 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四

52、級 第五級 2021-7-145 匯編語言匯編語言 程序設計程序設計 2 2 條件轉移指令條件轉移指令 (1 1)簡單條件轉移指令)簡單條件轉移指令 (2 2)無符號數(shù)條件轉移指令)無符號數(shù)條件轉移指令 (3 3) 有符號數(shù)條件轉移指令有符號數(shù)條件轉移指令 它們都有通用的語句格式和功能。它們都有通用的語句格式和功能。 語句格式:語句格式: 標號:標號: 操作符操作符 短標號短標號 功能:功能: 如果條件滿足,則(如果條件滿足,則(IPIP)位移量)位移量IPIP。 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-146 匯編語言匯編語言 程序設

53、計程序設計 (1 1)簡單條件轉移指令)簡單條件轉移指令 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-147 匯編語言匯編語言 程序設計程序設計 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-148 匯編語言匯編語言 程序設計程序設計 (2 2)無符號數(shù)條件轉移指令)無符號數(shù)條件轉移指令 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-149 匯編語言匯編語言 程序設計程序設計 【例】比較無符號數(shù)大小,將較大的數(shù)存【例】比較無符號數(shù)大小,將

54、較大的數(shù)存 放放AXAX寄存器。寄存器。 CMP AX, BX ;(;(AX)()(BX) JNB NEXT ;若;若AX=BX,轉移到,轉移到NEXT XCHGAX,BX ;若;若AX=BXAX=BX,轉移到,轉移到NEXTNEXT XCHG XCHGAXAX,BXBX;若;若AXBXAXBX,交換,交換 NEXTNEXT: 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-152 匯編語言匯編語言 程序設計程序設計 3 3 循環(huán)指令循環(huán)指令 (1 1)循環(huán)指令)循環(huán)指令LOOPLOOP (2 2)相等)相等/ /為零循環(huán)指令為零循環(huán)指令LOO

55、PELOOPE (3 3)不相等)不相等/ /不為零循環(huán)指令不為零循環(huán)指令LOOPNE LOOPNE (4 4)CXCX為零轉移指令為零轉移指令JCXZJCXZ 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-153 匯編語言匯編語言 程序設計程序設計 (1 1)循環(huán)指令)循環(huán)指令LOOPLOOP 語句格式:語句格式: LOOP LOOP 短標號短標號 功能:(功能:(CXCX)1 01 0,則程序轉移(循,則程序轉移(循 環(huán));否則,順序執(zhí)行。環(huán));否則,順序執(zhí)行。 說明:使用說明:使用LOOPLOOP指令可代替兩條指令:指令可代替兩條指令: DEC CXDEC CX JNE JNE 短標號短標號 單擊此處編輯母版標題樣式 單擊此處編輯母版文本樣式 第二級 第三級 第四級 第五級 2021-7-154 匯編語言匯編語言 程序設計程序設計 (2 2)相等)相等/ /為零循環(huán)指令為零循環(huán)指令LOOPELOOPE 語句格式:語句格式: LOOPE LOOPE 短標號短標號 LOOPZ LOOPZ 短標號短標號 功能:(功能:(CXCX)1 01 0且且ZF=1ZF=1,則程序轉移(循環(huán));,則程序轉移(循環(huán)); 否則,

溫馨提示

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

評論

0/150

提交評論