微機(jī)原理指令小結(jié)_第1頁
微機(jī)原理指令小結(jié)_第2頁
微機(jī)原理指令小結(jié)_第3頁
微機(jī)原理指令小結(jié)_第4頁
微機(jī)原理指令小結(jié)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、8086cpu指令小結(jié)所有指令:(1)立即數(shù)不能作為目的操作數(shù)。(2)不能在2個存儲單元之間直接進(jìn)行操作(串操作除外)。(3)mov指令和堆棧指令是惟一能對段寄存器進(jìn)行操作的指令。(4)源和目的操作數(shù)的數(shù)據(jù)類型必須匹配,都是8位,或都是16位。(5) cs 、ip不能直接作為操作數(shù)。(6)指令中至少要有一項明確說明傳送的是字節(jié)還是字,如果沒有,可通過ptr進(jìn)行設(shè)置。一、傳送指令(1)6種指令:通用傳送指令、堆棧操作指令、交換操作指令、i/o操作指令、目的地址傳送指令和標(biāo)志傳送指令。(2)對標(biāo)志位的影響:除標(biāo)志傳送(sahf、popf)外,均不影響標(biāo)志位。(3)操作數(shù)表示方法:立即數(shù)data,存

2、儲器單元地址mem,寄存器reg, 段寄存器segreg。1. 通用傳送指令:完成數(shù)據(jù)傳送 (1)指令格式:mov oprd1,oprd2 ;目的操作數(shù)oprd1 源操作數(shù)oprd2(2)源oprd2: data、mem、reg、segreg。(3)目的oprd1: mem、reg、segreg。(4)通用傳送指令mov和堆棧指令是唯一允許以段寄存器(代碼段寄存器cs和指令指針ip除外,即cs 、ip不能作為直接操作數(shù))作為操作數(shù)的指令,不允許通過mov指令直接以立即數(shù)方式給段寄存器賦值,不允許直接在兩個段寄存器之間直接進(jìn)行傳送。(5)8位/16位操作。2. 堆棧操作指令:將數(shù)據(jù)壓入/彈出堆棧

3、(1)指令格式:入棧:push oprd;先修改堆棧指針sp-2,然后將數(shù)據(jù)壓入堆棧。 ;sp =sp-1,sp=操作數(shù)高8位; sp =sp-1,sp= 操作數(shù)低8位。出棧:pop oprd; 先將數(shù)據(jù)彈出堆棧,然后修改堆棧指針sp+2。 ;(操作數(shù)低8位)sp,sp =sp+1;(操作數(shù)高8位)sp,sp =sp+1。(2)操作數(shù):mem、reg、segreg。操作數(shù)不能是立即數(shù)data。(3)僅能進(jìn)行字運(yùn)算(16位操作)。(4)堆棧存取原則為后進(jìn)先出,只有一個入/出口ss:sp, sp始終指向棧頂,sp是自動修改的,sp在初始化中需要設(shè)置。(5)push、pop指令必須成對使用。3. 交

4、換操作指令:xchg數(shù)據(jù)交換;xlat完成一個字節(jié)的換碼轉(zhuǎn)換(1)指令格式:交換操作指令: xchg oprd1,oprd2;oprd1 oprd2累加器換碼指令(表轉(zhuǎn)換指令、查表指令):xlat;(al) (ds)16(bx)+(al)(2)xchg:段寄存器和立即數(shù)不能作為一個操作數(shù),8位/16位操作。(3)xlat:表首地址在bx中,al的內(nèi)容作為某一項到表首的偏移量(256字節(jié)的表的下標(biāo)),轉(zhuǎn)換后的結(jié)果存放在al中。4. i/o操作指令:累加器(ax/al)與i/o端口之間的數(shù)據(jù)傳送(1)指令格式:輸入指令:in al/ ax,port;(al/ ax) portin al/ ax,d

5、x ;(al/ ax) dx輸出指令:out port,al/ ax ;port(al/ ax)out dx ,al/ ax ;dx(al/ ax)(2)當(dāng)端口地址 255時,使用port(8位端口直接地址);當(dāng)端口地址255時,必須用dx( 16位端口直接地址)作橋梁。dx作端口尋址最多可尋找64k個端口。(3)port為直接尋址,8位/16位操作。5. 目的地址傳送指令(1)取有效地址指令:lea oprd1,oprd2 或: lea reg,add ;( reg) add, add為有效地址把存儲器的有效地址ea(源操作數(shù)的地址偏移量)送入一個寄存器reg;常用于將一個16位的通用寄存器

6、作為地址指針。傳送的是有效地址ea。(2)將雙地址指針裝入ds和另一個寄存器指令lds指令:lds oprd1,oprd2 或: lds reg,add ;(reg) (add+1)(add), (ds)(add+3)(add +2)(3)將雙地址指針裝入es和另一個寄存器指令les指令: les oprd1,oprd2 或: les reg,add ;(reg)(add+1)(add), (es)(add+3)(add +2) 從源操作數(shù)指定的存儲單元中取出4字節(jié)的地址指針(包括2字節(jié)的段地址和2字節(jié)的偏移量)傳送到ds/es和reg。指定將段地址送入ds/es,偏移量部分送入一個16位的指

7、針寄存器或變址寄存器。 源操作數(shù)mem,目的操作數(shù)必須是一個16位的通用寄存器。 傳送的是存儲單元的內(nèi)容,而不是存儲器的有效地址ea。6. 標(biāo)志傳送指令(1)讀標(biāo)志指令:lahf; (ah) (fr)07功能:將標(biāo)志寄存器中的sf、zf、af、pf和cf(即低8位)傳送至ah寄存器的指定位,空位沒有定義。(2)存標(biāo)志指令:sahf; (fr)07 (ah)功能:將寄存器ah的指定位,送至標(biāo)志寄存器的sf、zf、af、pf和cf位(即低8位)。根據(jù)ah的內(nèi)容,影響上述標(biāo)志位,對of、df、 if和tf無影響。(3)標(biāo)志入棧指令:pushf;將fr入棧。(sp)(sp)2,(sp)+1,(sp)(

8、fr)功能:將標(biāo)志寄存器fr壓入堆棧頂部,同時修改堆棧指針,不影響標(biāo)志位。(4)標(biāo)志彈出棧指令:popf;將棧頂?shù)膬?nèi)容彈出到fr中。;(fr)(sp)+1,(sp), (sp) (sp)+ 2功能:堆棧頂部的一個字,傳送到標(biāo)志寄存器fr,同時修改堆棧指針,影響標(biāo)志位。二、算術(shù)運(yùn)算指令(1)9種指令:加法指令、減法指令、增量/減量指令、求補(bǔ)指令、比較指令、乘法指令、除法指令、字節(jié)字/轉(zhuǎn)換為字?jǐn)U展指令和十進(jìn)制調(diào)整指令。(2)對標(biāo)志位的影響: 加、減、比較指令(cmp)、取補(bǔ)指令(neg)指令均影響6個標(biāo)志位cf、of、pf、sf、zf和af。 乘法指令影響cf和of標(biāo)志;除法指令所有標(biāo)志位都不確定

9、,無意義。 增量/減量指令影響除進(jìn)位標(biāo)志cf以外的5個標(biāo)志位af、of、pf、sf和zf。 字節(jié)字/轉(zhuǎn)換為字?jǐn)U展指令不影響標(biāo)志位。 加法的ascii調(diào)整指令aaa,十進(jìn)制調(diào)整指令 daa影響除溢出標(biāo)志of以外5個標(biāo)志: cf、pf、sf、zf和af;of沒有意義。 減法的ascii調(diào)整指令 aas、十進(jìn)制調(diào)整指令 das影響 2個標(biāo)志:cf和af;其余標(biāo)志沒有意義。 乘法的ascii調(diào)整指令aam 、除法的ascii調(diào)整指令aad 根據(jù)al寄存器的結(jié)果影響sf、zf和pf。1加法指令 (addition):完成加法操作。(1)格式:add/ adc oprd1,oprd2 ;(oprd1)(o

10、prd1)+(oprd2)(2)源: data、mem、reg;目的:reg,mem。(3)adc指令主要用于多字節(jié)運(yùn)算中。(4)8位/16位操作。2減法指令(subtraction) :完成減法操作。(1)格式:sub/ sbb oprd1,oprd2;(oprd1)(oprd1)(oprd2)(2)規(guī)定同加法指令。3. 增量(加1 )/減量(減1 )指令inc/ dec:完成+1/-1操作。(1)格式:inc/ dec oprd; (oprd)(oprd)1(2)功能:主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)等。(3)操作數(shù):reg、mem。4. 求補(bǔ)指令neg:完成補(bǔ)碼操作。(1)格式

11、:neg oprd(2)操作數(shù):reg、:mem。5. 比較指令cmp:完成減法操作,結(jié)果不回送,反映在標(biāo)志位上。(1)格式:cmp oprd1,oprd2; (oprd1)(oprd2)(2)功能:主要用于比較兩個數(shù)之間的關(guān)系。在比較指令之后,根據(jù)標(biāo)志即可判斷兩者之間的關(guān)系。減法操作,結(jié)果不回送目的操作數(shù)。(3)兩數(shù)關(guān)系的判斷標(biāo)志 a=b 用 zf=1 判斷; 兩個無符號數(shù)的大小用cf判斷。cf=1,ab。 兩個符號數(shù)的大小用sfof判斷。sfof=1,ab。 jg/jnle(大于, sfof=0且 zf=0 ) jl/jnge (小于, sfof=1且 zf=0 )6. 乘法指令mul/

12、imul:完成無符號乘法/帶符號(整數(shù))乘法操作。(1)格式:mul/ imul oprd ;8位:(ax) (al)( oprd ) ;16位:(dx) (ax) (ax)( oprd ) (2)源操作數(shù):reg、mem,由指令給出。(3)目的操作數(shù):默認(rèn)在al/ax中。(4)帶符號數(shù)乘法指令imul當(dāng)結(jié)果的高半部分不是結(jié)果的低半部分的符號擴(kuò)展時,標(biāo)志位cf和of將置位。(6)可完成字節(jié)與字節(jié)乘法、字與字乘法操作。7. 除法指令div/ idiv:完成無符號除法/帶符號(整數(shù))除法操作。(1)格式:div/ idiv oprd; 8位:(al) (ax)/( oprd ) (ah) (余數(shù))

13、 ;16位:(ax) (dx) (ax)/( oprd) ( dx )(余數(shù))(2)源/目的操作數(shù)規(guī)定同乘法指令。(3)對于符號數(shù),當(dāng)被除數(shù)不夠位數(shù)時,需要對高8/16位進(jìn)行擴(kuò)展符號擴(kuò)展。8. 字節(jié)字/轉(zhuǎn)換為字?jǐn)U展指令cbw/cwd:將al/ax寄存器的最高位擴(kuò)展到ah/dx。(1)格式:cbw/cwd(2)功能:將al/ax寄存器的最高位擴(kuò)展到ah/dx, al.7(ax.15)=0,則ah(dx)=0;al.7(ax.15)= 1,則ah=0ffh(dx=0ffffh)。9. 十進(jìn)制調(diào)整指令(1)壓縮bcd碼:每個字節(jié)表示兩位bcd數(shù);非壓縮bcd碼:用一個字節(jié)表示一位bcd數(shù),在這字節(jié)的

14、高四位用0填充。(2)每條十進(jìn)制調(diào)整指令在使用時都與相應(yīng)的算術(shù)運(yùn)算指令配合,并自動對相應(yīng)的算術(shù)運(yùn)算指令結(jié)果進(jìn)行相應(yīng)的十進(jìn)制調(diào)整。(3)格式: daa:壓縮的bcd碼加法調(diào)整 das:壓縮的bcd碼減法調(diào)整 aaa:非壓縮的bcd碼加法調(diào)整 aas:非壓縮的bcd碼減法調(diào)整 aam:乘法后的bcd碼調(diào)整 aad:除法前的bcd碼調(diào)整三、邏輯運(yùn)算和移位指令1. 邏輯運(yùn)算指令(1)5種指令:邏輯與、或、非、異或和測試指令。(2)指令格式 邏輯與指令and oprd1,oprd2; (oprd1)(oprd1)(oprd2) 邏輯或指令or oprd1,oprd2; (oprd1)(oprd1)(op

15、rd2 ) 邏輯非指令 not oprd; (oprd) (/oprd) 邏輯異或指令xor oprd1,oprd2;(oprd1)(oprd1)(oprd2) 測試指令test oprd1,oprd2 ; (oprd1)( oprd2 ) ,結(jié)果不回送。(3)操作數(shù)范圍源操作數(shù)為reg 、mem、data;目的操作數(shù)為reg 、mem(not指令只有一個操作數(shù))。單操作數(shù)指令not的操作數(shù)不能為立即數(shù)。雙操作數(shù)邏輯指令中,必須有一個操作數(shù)為寄存器尋址方式,且目的操作數(shù)不能為立即數(shù)。(4)功能:實(shí)現(xiàn)相應(yīng)的邏輯功能。 與指令可實(shí)現(xiàn)屏蔽(復(fù)位)數(shù)據(jù)的某些位(使一個字或字節(jié)中的某些位清0,而其余位不

16、變),提取某些位或拆字。 或指令可實(shí)現(xiàn)置位數(shù)據(jù)的某些位(使一個字或字節(jié)中的某些位置1,而其余位不變),拼字。 非指令常用于使某個數(shù)取反,或取反后+1而得補(bǔ)碼。 異或指令可實(shí)現(xiàn)某個寄存器清0,或使目的操作數(shù)的某些位取反(使一個字或字節(jié)中的某些位取反,而其余位不變)。 測試指令通常用于測試。目的操作數(shù)的某些位是1還是0,用zf標(biāo)志判斷。(5)對標(biāo)志位的影響 邏輯與、或、異或和測試指令影響zf,pf,sf標(biāo)志;cf=0,of=0;af無意義。 邏輯非指令不影響標(biāo)志位。2. 移位指令(1)4組8種指令:算術(shù)移位sa,邏輯移位sh,循環(huán)移位ro,帶進(jìn)位位的循環(huán)移位rc。右移r,左移l。(2)指令格式:操

17、作碼 oprd,mm =1時,只移1位; m1時,可將指令格式中的cnt改為cl寄存器,并在移位指令前將移位次數(shù)預(yù)先送入cl寄存器中。(3)功能:將oprd的內(nèi)容移位m次。算術(shù)移位適用于帶符號數(shù)的2,2。邏輯移位適用于無符號數(shù)的2,2。(4)操作數(shù)范圍: reg、mem。 (5)對標(biāo)志位的影響: 算術(shù)/邏輯移位指令影響cf、sf、zf、pf標(biāo)志,在移1位時,影響of標(biāo)志。不影響af標(biāo)志。 循環(huán)移位指令只影響cf、 of標(biāo)志,不影響其他標(biāo)志位。四、串操作類指令 (1)5種指令:串傳送movs,串比較cmps,串搜索scas,存串stos,取串lods。(2)指令格式:操作碼 dst,srcmov

18、sb(字節(jié))/movsw(字) 串傳送movs dst,src;(es:dst)(ds:src )movsb; (es:di)(ds:si),si=si1,di=di1movsw; (es:di)(ds:si),(es:di+1)(ds:si+1),si=si2,di=di2 串比較cmps dst,src; (es:di)(ds:si);si=si1,di=di1 串搜索scas dst; al (es:di);di=di1 存串stos dst; (es:di) al;di=di1 取串lods src; al (ds:si);si=si1字操作與字節(jié)操作類似,alax。(3)功能根據(jù)方向

19、標(biāo)志df及所傳送數(shù)據(jù)的類型(字節(jié)/字)對si及di進(jìn)行修改,在指令重復(fù)前綴rep的控制下實(shí)現(xiàn)。 串傳送:把數(shù)據(jù)段中由si間接尋址的一個字節(jié)/字傳送到附加段中由di間接尋址的一個字節(jié)/字單元中。 串比較:把數(shù)據(jù)段中由si間接尋址的一個字節(jié)/字與附加段中由di間接尋址的一個字節(jié)/字進(jìn)行比較操作,使比較的結(jié)果影響標(biāo)志位??稍趦蓚€數(shù)據(jù)串中尋找第一個不相等的字節(jié)/字,或者第一個相等的字節(jié)/字。 串搜索:用指令指定的關(guān)鍵字節(jié)/字(分別存放在al/ax中),與附加段中由di間接尋址的字節(jié)串中的一個字節(jié)進(jìn)行比較操作,使比較的結(jié)果影響標(biāo)志位??稍谥付ǖ臄?shù)據(jù)串中搜索第一個與關(guān)鍵字節(jié)匹配(或者不匹配)的字節(jié)。 存串

20、:把指令中指定的字節(jié)(或字)串(存放在al/ax中) 傳送到附加段中由di間接尋址的字節(jié)內(nèi)存單元中??蛇B續(xù)將al(或ax)的內(nèi)容存入到附加段中的一段內(nèi)存區(qū)域中去,該指令不影標(biāo)志位。 取串:從串中取指令實(shí)現(xiàn)從指定的字節(jié)(或字)串中讀出信息的操作。(4)規(guī)定 串操作類指令是唯一的一組源和目的操作數(shù)均在存儲單元的指令。 源串在數(shù)據(jù)段,目的串在附加段。各指令所使用的默認(rèn)寄存器是:源串地址ds:si;目的串地址es:di;字串長度cx;存取或搜索的默認(rèn)值 al 串操作時,地址的修改由方向標(biāo)志確定。cld;df=0,si/di地址作自動增量(自動+1)修改;std;df=1,si/di地址作自動減量(自動

21、1)修改。 任何一個串操作指令均可在指令前面加上一個重復(fù)操作作為前綴,于是就重復(fù)執(zhí)行,直至cx、zf滿足要求為止。 重復(fù)指令前綴rep;若(cx)0,則退出; cx=cx-1;執(zhí)行后續(xù)指令;重復(fù)-repe/repz;若(cx)0或zf=0,則退出;cx=cx-1;執(zhí)行后續(xù)指令;重復(fù)-repne/repnz;若(cx)0或zf=1,則退出;cx=cx-1;執(zhí)行后續(xù)指令;重復(fù)-五、控制轉(zhuǎn)移類指令改變指令執(zhí)行順序的指令(1)6種指令:無條件轉(zhuǎn)移指令、子程序調(diào)用和返回指令、條件轉(zhuǎn)移指令、循環(huán)控制指令、中斷指令、處理器控制命令。(2)概念直接轉(zhuǎn)移:轉(zhuǎn)移的目的地址(標(biāo)號)直接出現(xiàn)在指令碼中。間接轉(zhuǎn)移:轉(zhuǎn)移

22、的目的地址間接存儲于某一個寄存器或某一個內(nèi)存變量中。段內(nèi)轉(zhuǎn)移/調(diào)用:轉(zhuǎn)移的目的地址和本條指令在同一代碼段中,轉(zhuǎn)移時只改變ip,不改變cs。程序轉(zhuǎn)向的有效地址ea等于當(dāng)前ip的內(nèi)容加上8/16位位移量??煞譃椋憾蝺?nèi)近轉(zhuǎn)移near 16位位移量,適用于無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令,轉(zhuǎn)移范圍為-32768 - +32768。段內(nèi)短轉(zhuǎn)移short 8位位移量,適用于條件轉(zhuǎn)移指令,轉(zhuǎn)移范圍為-128 - +127 。段間轉(zhuǎn)移/調(diào)用(遠(yuǎn)轉(zhuǎn)移far):轉(zhuǎn)移的目的地址和本條指令不在同一代碼段中,轉(zhuǎn)移時同時改變cs和ip內(nèi)容,即程序轉(zhuǎn)移到另一個代碼段。1. 無條件轉(zhuǎn)移指令jmp 轉(zhuǎn)移方式oprd;轉(zhuǎn)移到oprd

23、所指向的存儲器單元處執(zhí)行程序(1)段內(nèi)直接短轉(zhuǎn)移指令jmp short oprd;(ip) (ip)+ oprd(2)段內(nèi)直接近轉(zhuǎn)移指令jmp near ptr oprd;(ip) (ip)+ oprd(3)段內(nèi)間接轉(zhuǎn)移指令jmp word ptr oprd;(ip) ea(4)段間直接(遠(yuǎn))轉(zhuǎn)移指令jmp far ptr oprd;(ip)oprd的段內(nèi)偏移地址,(cs)oprd所在的段地址。oprd為直接尋址方式。(5)段間間接轉(zhuǎn)移指令jmp dword ptr oprd;(ip) ea,(cs) ea+22. 條件轉(zhuǎn)移指令指令助記符 目的地址(1)標(biāo)志條件轉(zhuǎn)移指令助記符:j/jn+標(biāo)志(

24、c, p, s, s, o);(2)比較條件轉(zhuǎn)移指令助記符:j/jn+比較符(a高于, b低于, e等于, g大于, l小于)(3)無符號數(shù)比較:測試標(biāo)志位為cf、zf,分高于a、等于e、低于b等3種情況:zf=1,等于;cf=0,大于。 (4)符號數(shù)比較:測試標(biāo)志位為zf、of和sf,分大于g、等于e、小于l等3種情況:zf=1,等于;sfof =0,大于。3. 子程序調(diào)用和返回指令(1)子程序(過程)調(diào)用指令call 子程序名 dst段內(nèi)調(diào)用: call near ptr oprd ;(sp)(sp)-2,(sp)-2)(sp)-1) (ip), (ip)子程序dst的地址( 即:ip+1

25、6位位移)段間調(diào)用:call far ptr oprd ;(sp)(sp)-2 ,(sp)-2)(sp)-1)= ( cs ), (sp)(sp)-2 ,(sp)-2)(sp)-1)=( ip ),(ip)=ea,(cs)=ea+2(2)子程序返回指令ret;段內(nèi)返回( ip ) (sp) +1 ,sp),( sp ) ( sp) + 2 ;段間返回( ip ) (sp) +1 ,sp),( sp ) ( sp) + 2 ( cs ) (sp) +1 ,sp),( sp ) ( sp) + 24. 循環(huán)控制指令對cx或標(biāo)志位zf進(jìn)行測試,確定是否循環(huán)。(1)loop oprd(短標(biāo)號);(cx) (cx)1,若cx 0,則循環(huán),否則順序執(zhí)行。(2)loopnz/loopne oprd;(cx)(cx)1,若cx

溫馨提示

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

評論

0/150

提交評論