第4講1 80x86數(shù)據(jù)傳送指令_第1頁(yè)
第4講1 80x86數(shù)據(jù)傳送指令_第2頁(yè)
第4講1 80x86數(shù)據(jù)傳送指令_第3頁(yè)
第4講1 80x86數(shù)據(jù)傳送指令_第4頁(yè)
第4講1 80x86數(shù)據(jù)傳送指令_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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)介

4指令系統(tǒng)指令系統(tǒng)是微處理器所能執(zhí)行的各種指令的集合微處理器的主要功能是通過(guò)它的指令系統(tǒng)來(lái)實(shí)現(xiàn)的不同的處理器擁有不同的指令系統(tǒng)。8086的指令系統(tǒng)數(shù)據(jù)傳送指令算術(shù)指令邏輯指令串處理指令控制轉(zhuǎn)移指令處理機(jī)控制與雜項(xiàng)操作指令重點(diǎn)關(guān)注指令的格式指令的基本功能例題分析指令支持的尋址方式指令的執(zhí)行對(duì)標(biāo)志位的影響指令的特殊要求4.1數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令是計(jì)算機(jī)中最基本、最重要、最常用的一種操作。數(shù)據(jù)傳送指令負(fù)責(zé)把數(shù)據(jù)或地址傳送到寄存器或存儲(chǔ)單元中。一、通用數(shù)據(jù)傳送指令1.MOV功能:源操作數(shù)的內(nèi)容傳送到目標(biāo)操作數(shù)中去格式:MOV目標(biāo)操作數(shù),源操作數(shù)例題例題例題傳送方式:MOVreg/mem,imm;立即數(shù)送寄存器或主存MOVreg/mem/seg,reg;寄存器送(段)寄存器或主存MOVreg/seg,mem;主存送(段)寄存器MOVreg/mem,seg;段寄存器送寄存器或主存例題next例:立即數(shù)傳送moval,4

;al←4,字節(jié)傳送movsi,200h

;si←0200h,字傳送movbyteptr[si],78h

;78h送到存儲(chǔ)單元[si],字節(jié)傳送明確指令是字節(jié)操作還是字操作

傳送演示高高低低原則傳送178MOVAX,5678H??例:寄存器傳送movax,bx ;ax←bx,字傳送movah,al ;ah←al,字節(jié)傳送movds,ax ;ds←ax,字傳送mov[si],al ;[si]←al,字節(jié)傳送高高低低演示高高低低原則傳送2例:存儲(chǔ)器傳送moval,[10H] ;al←ds:[10H]movdx,[bp] ;dx←ss:[bp]moves,[si+di] ;es←ds:[si+di]高高低低演示高高低低原則傳送3例:段寄存器傳送mov[si],es ;ds:[si]←esmovax,es ;ax←esmovax,cs ;ax←csMOV指令傳送功能立即數(shù)段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPSIDI存儲(chǔ)器MOV也并非任意傳送MOV指令的注意事項(xiàng):不破壞源操作數(shù)的內(nèi)容立即數(shù)只能出現(xiàn)在源操作數(shù)位置,不能作為目的操作數(shù)兩個(gè)操作數(shù)的類型一致兩個(gè)操作數(shù)不能都是存儲(chǔ)器段寄存器的操作有一些限制IP、CS是專用寄存器,不能作為目的操作數(shù)示例示例示例next示例兩個(gè)操作數(shù)的類型要一致絕大多數(shù)雙操作數(shù)指令,除非特別說(shuō)明,目的操作數(shù)與源操作數(shù)必須類型一致,否則為非法指令。MOVAL,050AH×寄存器有明確的字節(jié)或字類型。MOVAL,[BX]MOVAX,34H對(duì)于存儲(chǔ)器單元與立即數(shù)同時(shí)作為操作數(shù)的情況,必須顯式指明:byteptr指示字節(jié)類型,wordptr指示字類型。movbyteptr[si],01hDOS演示兩個(gè)操作數(shù)不能都是存儲(chǔ)器8086指令系統(tǒng)不允許兩個(gè)操作數(shù)都在存儲(chǔ)單元(除串操作指令),要實(shí)現(xiàn)這種傳送,可通過(guò)寄存器間接實(shí)現(xiàn)movax,[BX]mov[100H],ax要小心段寄存器的操作不允許立即數(shù)傳送給段寄存器MOVDS,100H不允許段寄存器之間的直接數(shù)據(jù)傳送MOVDS,ESDOS演示IP、CS是專用寄存器不允許直接改變CS值MOVCS,[SI] 不允許直接改變IP的值MOVIP,BXMOV指令對(duì)標(biāo)志寄存器的影響沒(méi)有影響2.XCHG交換指令功能:可以實(shí)現(xiàn)通用寄存器與通用寄存器或存儲(chǔ)單元間的數(shù)據(jù)交換。格式:XCHGreg,reg/mem XCHGreg/mem,reg;regreg/mem交換方式:寄存器與寄存器之間對(duì)換數(shù)據(jù)寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)示例示例next例:movax,1234h movbx,5678h xchgax,bxxchgah,al ;ax=1234h;bx=5678h;ax=5678h,bx=1234h;ax=7856h例:xchgax,[2000h] ;字交換;等同于xchg[2000h],axxchgal,[2000h] ;字節(jié)交換;等同于xchg[2000h],al(2000h)=1234hAx=5678h????指令的特殊要求:不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù),也不能使用段寄存器和立即數(shù)。XCHG[1234],[BX][SI]×XCHGDS,AX×XCHGAX,1234H×對(duì)標(biāo)志位的影響:沒(méi)有影響DOS演示二、堆棧操作指令采用后進(jìn)先出方式來(lái)管理數(shù)據(jù)的內(nèi)存區(qū)域引入……存儲(chǔ)區(qū)域底部存儲(chǔ)區(qū)域123456存入:123456放入數(shù)據(jù)取出:563412移走數(shù)據(jù)只能對(duì)棧頂進(jìn)行操作棧頂堆棧管理堆棧段棧底棧頂采用后進(jìn)先出方式來(lái)管理數(shù)據(jù)的內(nèi)存區(qū)域SS段寄存器記錄其段地址;堆棧指針寄存器SP指定棧頂棧頂?shù)刂份^小,棧底不變堆棧指令堆棧有兩種基本操作:保存數(shù)據(jù)恢復(fù)數(shù)據(jù)入棧出棧堆棧指令:PUSH(入棧)POP(出棧)入棧指令PUSH功能:把后面16位操作數(shù)的內(nèi)容入棧格式:PUSH操作數(shù)PUSHAL×PUSHBL×例題:PUSHAX

;AX=1234…………棧底低地址高地址堆棧段<--棧頂SP<--棧頂SP1234<--棧頂SPPUSH執(zhí)行過(guò)程:先高半部分入棧;先移棧頂指針再入棧后低半部分入棧;先移棧頂指針再入棧先高后低,先移后入出棧指令POP功能:把棧頂?shù)膬?nèi)容彈出來(lái)傳送給16位操作數(shù)格式:POP操作數(shù)執(zhí)行過(guò)程:和入棧過(guò)程相反例題POPDX;DX=…………低地址高地址<--棧頂SP<--棧頂SP<--棧頂SP棧底堆棧段12123434POP執(zhí)行過(guò)程:低半部分內(nèi)容出棧;先出棧再移棧頂指針高半部分內(nèi)容出棧;先出棧再移棧頂指針先低后高,先出再移PUSH執(zhí)行過(guò)程:先高后低,先移后入PUSHPUSH;進(jìn)棧指令先使堆棧指針SP減2,然后把一個(gè)字操作數(shù)存入堆棧頂部(高高低低)PUSHAXPUSHr16/m16/seg;SP←SP-2;SS:[SP]←r16/m16/segPOPPOP;出棧指令把棧頂?shù)囊粋€(gè)字傳送至指定的目的操作數(shù)(高高低低)

,然后堆棧指針SP加2。POPr16/m16/seg;r16/m16/seg←SS:[SP];SP←SP+2POPDX注意8086~80286堆棧操作必須以字為單位。不要寫出“PUSHAL”

8086不能用立即尋址方式

PUSH1234H堆棧中的數(shù)據(jù)彈出后,數(shù)據(jù)并沒(méi)有在堆棧中消失,除非壓入新數(shù)據(jù),DOS演示對(duì)標(biāo)志位的影響不影響標(biāo)志位課堂練習(xí)請(qǐng)分別用一條匯編指令完成如下功能:把1234H傳送給bx寄存器把5678h傳送到存儲(chǔ)單元的數(shù)據(jù)段中,bx指出該單元的偏移地址把上面存儲(chǔ)單元的內(nèi)容傳送給ax寄存器將ax的內(nèi)容入棧執(zhí)行一次出棧操作,出棧內(nèi)容傳送給cx三、地址傳送指令:地址傳送指令用來(lái)傳送操作數(shù)的地址LEA,LDS,LES有效地址傳送指令LEA指令格式:LEAr16,mem指令功能: 把源操作數(shù)的有效地址(不是物理地址)傳送到指定寄存器中。源操作數(shù)是一個(gè)存儲(chǔ)單元。舉例movbx,0400hmovsi,3chleabx,[bx+si+0f62h];BX=0400h+003ch+0f62h=139EH注意:用來(lái)傳送操作數(shù)的地址,而不是存儲(chǔ)單元的內(nèi)容目的操作數(shù)必須為通用寄存器操作數(shù),常用的寄存器是BX、BP、SI、DI。一般不使用其他寄存器。該指令不影響標(biāo)志位。MOVBX,[BX+SI+0F62H],執(zhí)行后BX為139EH存儲(chǔ)單元的內(nèi)容。LDS指令指令格式:LDSr16,mem指令功能: 將存儲(chǔ)單元存放的4個(gè)字節(jié)送指定的寄存器和DS寄存器中,其中(SRC)→REG,(SRC+2)→DS舉例movwordptr[3060h],0100hmovwordptr[3062h],1450hldssi,[3060h] ;ds=1450h,si=0100h注意:本組指令的目的操作數(shù)不能使用段寄存器。不影響標(biāo)志位。作業(yè)1、在debug中寫出以下程序片段給存儲(chǔ)單元ds:[1234]的傳送內(nèi)容1111H;

溫馨提示

  • 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)論