《微機(jī)原理及接口技術(shù)》第3章指令系統(tǒng)1_第1頁(yè)
《微機(jī)原理及接口技術(shù)》第3章指令系統(tǒng)1_第2頁(yè)
《微機(jī)原理及接口技術(shù)》第3章指令系統(tǒng)1_第3頁(yè)
《微機(jī)原理及接口技術(shù)》第3章指令系統(tǒng)1_第4頁(yè)
《微機(jī)原理及接口技術(shù)》第3章指令系統(tǒng)1_第5頁(yè)
已閱讀5頁(yè),還剩60頁(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)介

第3章

8086/8088指令系統(tǒng)movax,12hcalldisplayJmp1234h主要內(nèi)容:指令系統(tǒng)的一般概念對(duì)操作數(shù)的尋址方式六大類(lèi)指令的操作原理:

操作碼的含義指令對(duì)操作數(shù)的要求指令執(zhí)行的結(jié)果3.1概述指令——控制計(jì)算機(jī)完成指定操作的命令機(jī)器指令——指令的二進(jìn)制代碼形式。例如:CD21H匯編指令——助記符形式的指令。例如:INCA指令系統(tǒng)——CPU所有指令及其使用規(guī)則的集合8088/8086指令系統(tǒng):(1)指令向后兼容(x86系列)(2)應(yīng)用廣泛,資料易于尋找指令按功能分為六大類(lèi)(92種)(1)數(shù)據(jù)傳送類(lèi);(2)算術(shù)運(yùn)算類(lèi);(3)邏輯運(yùn)算和移位;(4)串操作;(5)控制轉(zhuǎn)移類(lèi);(6)處理器控制。3.1.1指令的基本構(gòu)成操作碼[操作數(shù)],[操作數(shù)]說(shuō)明要執(zhí)行的是什么操作操作對(duì)象,可以有0個(gè)、1個(gè)或2個(gè)目的源指令舉例:ADDAX,[SI+6]MOVAX,BX操作碼操作數(shù)INC[BX]HLT部分8088常用指令指令類(lèi)型助記符數(shù)據(jù)傳送數(shù)據(jù)傳送MOV,PUSH/POP,XCHG等地址傳送LEA,LDS,LES輸入輸出IN,OUT算術(shù)運(yùn)算加法ADD,ADC,INC減法SUB,SBB,DEC,NEG,CMP乘/除法MUL,IMUL,DIV,IDIV邏輯AND,OR,NOT,XOR,TEST移位SHL/SHR/SAR,ROL/ROR,RCL/RCR串操作MOVS,CMPS,SCAS,LODS,STOS控制轉(zhuǎn)移JMP,JXX,LOOP,CALL/RET,INT/IRET8088/8086的操作數(shù)分為3類(lèi)1、立即數(shù)(常數(shù))取值范圍如下表:立即數(shù)只能用作源操作數(shù),如8位16位無(wú)符號(hào)數(shù)00H-FFH(0-255)0000H-FFFFH(0-65535)帶符號(hào)數(shù)80H-7FH(-128~127)8000H-7FFFH(-32768~32767)MOV AX,0FA00H ;正確MOV 8000H,DX ;錯(cuò)誤2、寄存器操作數(shù)放在8個(gè)通用寄存器或4個(gè)段寄存器中的操作數(shù)只能存放字操作數(shù)段寄存器存放當(dāng)前操作數(shù)的段基地址不允許將立即數(shù)傳送到段寄存器SIDIBPSPCSDSESSS3、存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)字節(jié)字雙字124類(lèi)型存儲(chǔ)單元個(gè)數(shù)一般不允許兩個(gè)操作數(shù)同時(shí)為存儲(chǔ)器操作數(shù)存儲(chǔ)單元的物理地址=段基地址+偏移地址若指令中沒(méi)有指明所涉及的段寄存器,CPU就采用默認(rèn)的段寄存器來(lái)確定操作數(shù)所在的段。存儲(chǔ)器操作數(shù)的偏移地址(也稱(chēng)有效地址)可以通過(guò)不同的尋址方式由指令給出。例如,若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,則以下指令的結(jié)果是一樣的: MOVAL,[2A00H] MOVAL,[BX+0A00H] MOVAL,[BX][SI] MOVAL,[DI]一條指令的執(zhí)行時(shí)間=∑3.1.2指令的執(zhí)行時(shí)間取指令取操作數(shù)執(zhí)行指令傳送結(jié)果單位用時(shí)鐘周期數(shù)表示在這里不詳細(xì)討論,但要注意:1)盡量使用寄存器作為操作數(shù)2)若有可能,用移位代替乘除法3)盡量使用簡(jiǎn)單的尋址方式尋址方式——尋找操作數(shù)的方法

尋找操作數(shù)的地址(一般指源操作數(shù))尋找要執(zhí)行的下一條指令的地址在8086指令系統(tǒng)中,說(shuō)明操作數(shù)所在地址的尋址方式可分為8種:

①立即尋址⑤寄存器相對(duì)尋址

②直接尋址⑥基址-變址尋址

③寄存器尋址⑦相對(duì)的基址-變址尋址

④寄存器間接尋址⑧隱含尋址3.2

8086的尋址方式當(dāng)數(shù)據(jù)為8位或16位時(shí),可直接放在指令本身的最后一個(gè)字節(jié)(8位)或兩個(gè)字節(jié)(16位)中。這樣的數(shù)據(jù)常稱(chēng)為立即操作數(shù)。立即尋址只能用于源操作數(shù)例:

MOVAX,1C8FH

錯(cuò)誤例:

×

MOV2A00H,AX;錯(cuò)誤!

3.1.2立即尋址立即數(shù)操作碼低8位高8位存儲(chǔ)器MOV操作碼02H31HAHAL代碼段代碼段立即尋址指令在存儲(chǔ)器中的存放形式AX指令操作例:MOVAX,3102H;AX3102H執(zhí)行后,(AH)=31H,(AL)=02H3.2.2直接尋址操作數(shù)在存儲(chǔ)單元中,其16位有效地址,即段內(nèi)偏移地址在指令碼之中,占兩個(gè)字節(jié)。也就是說(shuō)指令中直接給出操作數(shù)的16位偏移地址,偏移地址也稱(chēng)為有效地址(EA,EffectiveAddress)

默認(rèn)的段寄存器為DS,但也可以顯式地指定其他段寄存器——稱(chēng)為段超越前綴偏移地址也可用符號(hào)地址來(lái)表示,如ADDR、VAR

例:

MOVAX,[2A00H]MOVDX,ES:[2A00H]MOVSI,TABLE_PTR指令操作例:MOVAX,[3102H]AL(3102H),AH(3103H)如果(DS)=2000H,(23012H)=CDH,(23013H)=ABH則操作數(shù)的物理地址為:20000H+3102H=23102H指令執(zhí)行后:(AX)=ABCDHMOV操作碼02H31HAHAL23102HCDHABH存儲(chǔ)器代碼段數(shù)據(jù)段..3.2.3寄存器尋址數(shù)據(jù)存放在指令規(guī)定的寄存器中。對(duì)于16位數(shù)據(jù),寄存器可以是AX,BX,CX,DX,SI,DI,SP或者BP。而對(duì)于8位數(shù)據(jù),寄存器可以是AL,AH,BL,BH,CL,CH,DL或DH。注意:源操作數(shù)與目的操作數(shù)字長(zhǎng)要相同

寄存器尋址與段地址無(wú)關(guān)例:MOVAX,BXMOV[3F00H],AXMOVCL,AL

錯(cuò)誤例:

×

MOVAX,BL;字長(zhǎng)不同

×MOVES:AX,DX;寄存器與段無(wú)關(guān)AXSI2233H2233H指令操作例:MOVSI,AX;SI(AX)

指令執(zhí)行前:(AX)=2233H指令執(zhí)行后:(AX)=2233H,(SI)=2233H3.2.4寄存器間接尋址操作數(shù)在存儲(chǔ)單元中,其有效地址在指令碼指明的基址寄存器BX、BP或變址寄存器SI或DI之中。有效地址可表示為

例:MOVAX,[BX]錯(cuò)誤例:

×MOVAX,[DX]×

MOVCL,[AX]EA=(BX)(BP)(SI)(DI)指令操作例:MOVAX,[SI]若(DS)=6000H,

(SI)=1200H,(61200H)=44H,(61201H)=33H則指令執(zhí)行后,(AX)=3344H。44H33H60001200DSSI6000061200

61200HAX存儲(chǔ)器數(shù)據(jù)段

+)120044H33H3.2.5寄存器相對(duì)尋址

EA=間址寄存器的內(nèi)容加上一個(gè)8/16位的位移量

操作數(shù)在存儲(chǔ)單元中,其有效地址是一個(gè)8位或16位的位移量(以后都用disp表示)與一個(gè)基址寄存器或變址寄存器的內(nèi)容之和。位移量disp和這個(gè)寄存器在指令碼中給出。EA=(BX)(BP)(SI)(DI)+8位16位位移量

例:MOVAX,[BX+8]MOVAX,[BP+1000H];

默認(rèn)段寄存器為SS

指令操作例:MOVAX,DATA[BX]

若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H

則物理地址=60000H+1000H+2A00H=63A00H

指令執(zhí)行后:(AX)=5566H(見(jiàn)下頁(yè)圖示)操作碼00偏移量低2A偏移量高DS6000BX1000+DATA2A0063A0063A00HAHALAX代碼段數(shù)據(jù)段.........66H55HMOVAX,DATA[BX]3.2.6基址-變址尋址若操作數(shù)的偏移地址:由基址寄存器(BX或BP)給出——基址尋址方式由變址寄存器(SI或DI)給出——變址尋址方式

由一個(gè)基址寄存器的內(nèi)容和一個(gè)變址寄存器的內(nèi)容相加而形成操作數(shù)的偏移地址,稱(chēng)為基址-變址尋址。EA=(BX)(BP)+(SI)(DI)

同一組內(nèi)的寄存器不能同時(shí)出現(xiàn)。例:MOVAX,[BX][SI]MOVAX,[BX+SI]錯(cuò)誤例:

×MOVAX,[BX][BP]

×

MOVAX,[DI][SI]83000操作碼DS

8000BX

2000+SI

100083000HAHALAX代碼段數(shù)據(jù)段.........YYXX指令操作例:MOVAX,[BX][SI]假定:(DS)=8000H,(BX)=2000H,SI=1000H則物理地址=80000H+2000H+1000H=83000H指令執(zhí)行后:(AL)=[83000H](AH)=[83001H]3.2.7相對(duì)的基址-變址尋址在基址-變址尋址的基礎(chǔ)上再加上一個(gè)相對(duì)位移量

注意事項(xiàng)同基址-變址尋址EA=(BX)(BP)+(SI)(DI)+8位16位位移量

例:MOVAX,BASE[SI][BX]MOVAX,[BX+BASE][SI]MOVAX,[BX+SI+BASE]MOVAX,[BX]BASE[SI]MOVAX,[BX+SI]BASE指令操作例:MOVAX,DATA[DI][BX]若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H則指令執(zhí)行后(AH)=[83021H],(AL)=[83020H]8320083200HAHALAX+DATA0200操作碼代碼段數(shù)據(jù)段.........YYXXDS

8000BX

2000

DI

10003.2.8隱含尋址

指令操作數(shù)是隱含的,在指令中未顯式地指明。例:MULBL

指令隱含了被乘數(shù)AL及乘積AX

類(lèi)似的指令還有:DIV、CBW、MOVS等(AL)×(BL)→AX小結(jié)指令由(

)和(

)構(gòu)成如何取得操作數(shù)——稱(chēng)為(

)操作碼操作數(shù)尋址方式尋址方式可分為立即尋址直接尋址寄存器相對(duì)尋址寄存器尋址基址-變址尋址基址-變址相對(duì)尋址寄存器間接尋址寄存器間接、寄存器相對(duì)、基址變址、相對(duì)基址變址四種尋址方式的比較:

尋址方式指令操作數(shù)形式

寄存器間接只有一個(gè)寄存器(BX/BP/SI/DI之一)寄存器相對(duì)一個(gè)寄存器加上位移量基址—變址兩個(gè)不同類(lèi)別的寄存器相對(duì)基址-變址兩個(gè)不同類(lèi)別的寄存器加上位移量3.28086/8088指令系統(tǒng)

本節(jié)將介紹8086微處理器的指令系統(tǒng)。指令系統(tǒng)是指處理器所能完成的所有指令的集合。它是在微處理器設(shè)計(jì)時(shí)就確定了的,所以,對(duì)于不同的微處理器,其指令系統(tǒng)中所包含的具體指令將是各不相同的。由于微處理器8088與8086的指令系統(tǒng)是完全一樣的,所以,本節(jié)介紹的指令系統(tǒng)同樣適用于8088CPU。8086/8088CPU指令系統(tǒng)可分成下面幾類(lèi):(1)數(shù)據(jù)傳送指令;(2)算術(shù)運(yùn)算指令;(3)邏輯運(yùn)算指令;(4)移位指令;(5)標(biāo)志處理指令和CPU控制指令;(6)轉(zhuǎn)移和循環(huán)控制指令;(7)調(diào)用和返回指令;(8)字符串操作指令;(9)輸入、輸出指令。我們重點(diǎn)將放在各條指令的功能和它們的使用上,關(guān)于這些指令的功能是如何實(shí)現(xiàn)的以及執(zhí)行指令的具體操作細(xì)節(jié)將不作詳細(xì)討論。學(xué)習(xí)指令系統(tǒng)著重要掌握指令的基本操作功能,合法的尋址方式以及對(duì)標(biāo)志位的影響。在詳細(xì)介紹指令系統(tǒng)之前,我們將書(shū)中描述指令操作時(shí)用到的各種縮寫(xiě)和符號(hào)列于下表中。

3.2.1數(shù)據(jù)傳送類(lèi)指令這里討論的數(shù)據(jù)傳送指令僅指CPU中的寄存器與寄存器或者寄存器與存儲(chǔ)單元之間的數(shù)據(jù)傳送。這類(lèi)指令的基本格式及功能說(shuō)明見(jiàn)表3.5。表中除了SAHF和POPF指令外,標(biāo)志寄存器F的各位均不受影響。指令中出現(xiàn)兩個(gè)操作數(shù)時(shí),目的操作數(shù)在前,源操作數(shù)在后,并且目的操作數(shù)的尋址方式一定不能為立即數(shù)和段寄存器CS。表3.5數(shù)據(jù)傳送類(lèi)指令的格式與功能

1.通用傳送指令(MOV)

指令的功能是將源操作數(shù)SRC的一個(gè)字節(jié)或一個(gè)字傳送到目的操作數(shù)DST所指單元。源操作數(shù)可以是通用寄存器、段寄存器、立即數(shù)和內(nèi)存單元,目的操作數(shù)可以是通用寄存器、段寄存器和內(nèi)存單元,但不能為立即數(shù)和CS。當(dāng)目的操作數(shù)為段寄存器時(shí),源操作數(shù)不能為立即數(shù),當(dāng)源操作數(shù)不是立即數(shù)時(shí),兩個(gè)操作數(shù)中必須有一個(gè)是寄存器。其具體的數(shù)據(jù)傳送示意圖如下所示:立即數(shù)存儲(chǔ)器通用寄存器AX、BX、CX、DX、BP、SP、SI、DI段寄存器CS、DS、SS、ES注意:立即數(shù)不能作為目的操作數(shù),且源操作數(shù)和目的操作數(shù)兩者不能同時(shí)為存儲(chǔ)器例如:將立即數(shù)1234H送到DS寄存器 MOV AX,1234 MOV DS,AX 將存儲(chǔ)單元3000H的內(nèi)容送到4000H單元 MOV AX,[3000H] MOV [4000H],AX 將BX中的一個(gè)字傳送到AX中 MOVAX,BXMOVAL,DL;將DL中的一個(gè)字節(jié)傳送到AL中MOVAX,02;將立即數(shù)02傳送到AX中

2.取有效地址指令(LEA)指令的功能是將源操作數(shù)SRC(必須是存儲(chǔ)器操作數(shù))的有效地址(16位偏移地址)送入目的地址DST所指定的16位通用寄存器中。這里寄存器不允許是段寄存器。格式:LEA DST,SRC這是一條特殊指令,它傳送的不是操作數(shù)本身,而是操作數(shù)的有效地址。比如:LEABX,[SI+1000H]該指令的執(zhí)行過(guò)程如圖3-17所示器結(jié)果是將源操作數(shù)1234H的有效地址3000H送到BX寄存器中。

3.取地址指針指令(LDS,LES)這是取某變量的32位地址指針的指令。其功能是將源操作數(shù)SRC的有效地址所對(duì)應(yīng)的內(nèi)存單元中的32位內(nèi)容分別送入DS(或ES)和指令中所指出的寄存器中。也就是說(shuō),從由指令的源操作數(shù)所指定的存儲(chǔ)單元開(kāi)始,由4個(gè)連續(xù)存儲(chǔ)單元中取出某變量的地址指針(共4個(gè)字節(jié)),將前兩個(gè)字節(jié)(變量的偏移地址)送到指令的目的操作數(shù)所指定的某16位通用寄存器中,后兩個(gè)字節(jié)(變量的段基址)送到DS段寄存器中。格式:LDSDST,SRC例題:LDSSI,[DI+1000H](過(guò)程如圖3-18所示)注意:課本中的5000H應(yīng)該為1200H

LES指令的功能與執(zhí)行情況和LDS類(lèi)似,只是32位地址的高16位不是送給DS,而是送給ES。上面兩條指令的源操作數(shù)的尋址方式為直接尋址方式,也可采用其它尋址方式,但不同尋址方式所指的內(nèi)存單元都應(yīng)是雙字類(lèi)型。4.標(biāo)志傳送指令(LAHF,SAHF)在第2章中已介紹,CPU中有一標(biāo)志寄存器FLAG,其中的每一位標(biāo)志了CPU的一種狀態(tài)。我們以后會(huì)看到,許多指令的執(zhí)行結(jié)果會(huì)影響標(biāo)志寄存器中的某些位,同時(shí),有些指令的執(zhí)行也受標(biāo)志寄存器中的某些位控制。(1)取標(biāo)志指令LAHF

LAHF把標(biāo)志寄存器低8位中的5個(gè)標(biāo)志位傳送到AH中的指定位,如下圖所示:

OFDFIFTFSFZFAFPFCFAHLAHF指令的功能FLAG(2)設(shè)置標(biāo)志指令SAHF

SAHF的功能與LAHF的功能正好相反,用圖來(lái)示意,只要將上圖中5個(gè)箭頭方向反一下即可。OFDFIFTFSFZFAFPFCFAHSAHF指令的功能FLAG(3)標(biāo)志進(jìn)棧指令PUSHF

將16位標(biāo)志寄存器F內(nèi)容入棧保護(hù)。其操作過(guò)程與PUSH指令類(lèi)似。(4)標(biāo)志出棧指令POPF

將當(dāng)前棧頂和次棧頂?shù)臄?shù)據(jù)字彈出送回標(biāo)志寄存器中。PUSHF和POPF指令常用于調(diào)用子程序時(shí)保護(hù)和恢復(fù)狀態(tài)標(biāo)志位。(5.數(shù)據(jù)交換指令(XCHG)格式:XCHG DST,SRC該指令是完成寄存器與寄存器或寄存器與存儲(chǔ)單元之間內(nèi)容交換的。該指令要求兩個(gè)操作數(shù)之一必須是寄存器,允許兩個(gè)操作數(shù)都是寄存器,但不允許是段寄存器。例如:

XCHG AX,BX ;(AX)←→(BX)XCHG CX,[DI] ;(CX)←→([DI])XCHG BX,DATA1XCHG指令可以進(jìn)行字節(jié)或字?jǐn)?shù)據(jù)交換。通用寄存器AX、BX、CX、DXBP、SP、SI、DI存儲(chǔ)器

6.字節(jié)轉(zhuǎn)換指令(XLAT)該指令的尋址方式是隱含的,其有效地址EA=(BX)+(AL)。指令的功能是將偏移量EA所對(duì)應(yīng)的存儲(chǔ)單元中的一個(gè)字節(jié)的內(nèi)容送入AL中,從而實(shí)現(xiàn)了AL中的字節(jié)變換。即AL((BX)+(AL))指令執(zhí)行前,BX指向一張256個(gè)字節(jié)的表的起點(diǎn),AL中是表的索引值。例24:通過(guò)查7段顯示碼表,將任意一位十進(jìn)制數(shù)轉(zhuǎn)換為對(duì)應(yīng)的7段顯示碼。其操作步驟如下:(1)建立轉(zhuǎn)換表,將表定位,表的起點(diǎn)地址偏移量送入BX。(2)將待轉(zhuǎn)換的十進(jìn)制數(shù)在表中的序號(hào)送入AL寄存器(3)執(zhí)行XLAT指令

7.堆棧操作指令1)堆棧堆棧是以后進(jìn)先出(LIFO)的規(guī)則存取信息的一種存儲(chǔ)機(jī)構(gòu)。在微型計(jì)算機(jī)中,堆棧通常是存儲(chǔ)器的一部分。為了保證堆棧區(qū)的存儲(chǔ)器能按后進(jìn)先出的規(guī)則存取信息,該存儲(chǔ)區(qū)的存取地址由一個(gè)專(zhuān)門(mén)的地址寄存器來(lái)管理,這個(gè)地址寄存器稱(chēng)為堆棧指示器或稱(chēng)堆棧指針。當(dāng)信息存入堆棧時(shí),堆棧指針將自動(dòng)減量并將信息存入堆棧指針?biāo)赋龅拇鎯?chǔ)單元,當(dāng)需要從堆棧中取出信息時(shí),也將從堆棧指針?biāo)赋龅拇鎯?chǔ)單元中讀取信息,并自動(dòng)將堆棧指針增量。所以,堆棧指針始終指向堆棧中最后存入信息的那個(gè)單元,我們稱(chēng)該單元為堆棧頂。在信息的存與取的過(guò)程中,棧頂是不斷移動(dòng)的,也稱(chēng)它為堆棧區(qū)的動(dòng)端,而堆棧區(qū)的另端則是固定不變的,這端我們又稱(chēng)其為棧底。

在8086/8088CPU中,寄存器SP即為堆棧指針,它是一個(gè)16位的地址寄存器,用來(lái)存放堆棧區(qū)的偏移地址,堆棧區(qū)的段地址則存于段寄存器SS中。若把內(nèi)存中某段的偏移地址為0000~00FFH的一個(gè)存儲(chǔ)區(qū)作為堆棧,那么堆棧指針SP的初值為0100H。此時(shí),若向堆棧中存入信息,那么,首先將SP內(nèi)容減2,即(SP)=00FEH,然后,將16位信息送入SP所指單元。,堆棧的讀寫(xiě)地址由一個(gè)堆棧指針指示,保證了它的信息存取按后進(jìn)先出的規(guī)則進(jìn)行。2)堆棧操作指令堆棧操作指令是用來(lái)完成堆棧操作的。堆棧的主要操作是對(duì)堆棧進(jìn)行信息的存取。通常將信息送入堆棧的過(guò)程稱(chēng)為壓入操作,而從堆棧中取出信息的過(guò)程稱(chēng)為彈出操作。8086/8088指令系統(tǒng)中提供了完成這兩種操作的相應(yīng)指令。(1)建棧建立堆棧就是規(guī)定底部在RAM存儲(chǔ)器中的位置,用戶可以通過(guò)數(shù)據(jù)傳送指令將堆棧底部的地址設(shè)置在堆棧指針SP和堆棧段寄存器SS中。這時(shí),棧中無(wú)數(shù)據(jù),底部與頂部重疊,是一個(gè)空棧。例19:MOV AX,3000HMOV SS,AX ;初始化SS段寄存器MOV SP,64H ;初始化SP指針

(2)壓入指令(PUSH):PUSHSRC壓入指令是將SRC或標(biāo)志寄存器FLAG的內(nèi)容送入堆棧,并修正堆棧指針的內(nèi)容。指令的操作必須是字類(lèi)型的。指令中的操作數(shù)SRC可以是通用寄存器和段寄存器,也可以是某種尋址方式所指示的內(nèi)存單元,但不能是立即數(shù)。指令對(duì)標(biāo)志寄存器內(nèi)容沒(méi)有影響。例如:PUSHAX;(SP)←(SP)-2,((SP)←(AH),((SP)-1)←(AL)PUSHDSPUSH[SI]PUSHF

(3)彈出指令(POP):POPDST彈出指令是將SP所指出的棧頂內(nèi)容取出,并送入DST所指寄存器、內(nèi)存某單元或標(biāo)志寄存器F,并修正SP內(nèi)容。DST也必須為字類(lèi)型,它可以是通用寄存器和除了CS以外的段寄存器,也可以是某種尋址方式所指的內(nèi)存單元,但不能為立即數(shù)。指令POPDST對(duì)標(biāo)志位不產(chǎn)生影響。由于SP所指的就是堆棧中最后存入信息的單元,彈出指令正是彈出該單元的內(nèi)容,所以,執(zhí)行POP指令時(shí)是先彈出棧頂內(nèi)容,后修正SP的內(nèi)容,并且SP以加2修正。后兩條指令詳細(xì)步驟見(jiàn)課本P76、778、輸入/輸出指令只限于用累加器AL或AX來(lái)傳送信息。功能:(累加器)←→I/O端口(1)輸入指令I(lǐng)N格式:INacc,PORT;PORT端口號(hào)0~255INacc,DX;DX表示的端口范圍達(dá)64K例:INAL,80H;(AL)←(80H端口)

INAL,DX;(AL)←((DX))(2)輸出指令OUT

格式:OUTport,acc

OUTDX,acc例:OUT68H,AX;(69H,68H)←(AX)OUTDX,AL;((DX))←(AL)在使用間接尋址的IN/OUT指令時(shí),要事先用傳送指令把I/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)論