《指令系統(tǒng)-傳送類(lèi)指令.ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《指令系統(tǒng)-傳送類(lèi)指令.ppt(19頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1,80 x86的指令系統(tǒng),傳送類(lèi)指令,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),2,傳送類(lèi)指令-傳送指令MOV------教材第47頁(yè),格式 MOV 目的,源 功能: 將一個(gè)操作數(shù)在存儲(chǔ)器和寄存器之間傳送,或者寄存器和寄存器之間傳送,或者將立即數(shù)傳送到寄存器或存儲(chǔ)器 不能用于存儲(chǔ)器與存儲(chǔ)器之間傳送 不能用于段寄存器和段寄存器之間傳送 不能將立即數(shù)傳送到段寄存器,,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),3,除IP,MOV 目的,源,段寄存器 DS ES SS,通用寄存器 AXSP BXBP CXSI DXDI,存儲(chǔ)器單元,立即數(shù),除CS,除PSW,,,,,,類(lèi)型要明確,標(biāo)志位不影響
2、,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),4,交換指令XCHG -------------------教材第47頁(yè),格式 XCHG 操作數(shù)1,操作數(shù)2 功能 交換2個(gè)操作數(shù) 可以是寄存器和寄存器之間交換 可以是寄存器和存儲(chǔ)器之間交換,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),5,XCHG 數(shù)1,數(shù)2,通用寄存器 AXSP BXBP CXSI DXDI,存儲(chǔ)器單元,,,通用寄存器 AXSP BXBP CXSI DXDI,段寄存器 DS ES SS CS,立即數(shù),標(biāo)志位不影響,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),6,例1-39(視頻演示) ---------------教材第4
3、7頁(yè),指令xchg ax, bx 實(shí)現(xiàn)將AX中的數(shù)據(jù)和用BX間接尋址所表示的存儲(chǔ)單元中的數(shù)據(jù)進(jìn)行互換。在DEBUG中跟蹤操作,指令執(zhí)行前,AX=0000,把BX中的0000作為偏移地址,ds:0000單元中執(zhí)行指令前為20cdh。用T命令執(zhí)行指令,可以看到,AX=20cdh,而數(shù)據(jù)段ds:0000單元中為0000h,實(shí)現(xiàn)了寄存器和存儲(chǔ)單元的數(shù)據(jù)互換。,,,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),7,(3) 換碼指令XLAT ----------------教材第48頁(yè),格式 XLAT 功能 將DS:BX指向轉(zhuǎn)換表的首地址,以AL中的內(nèi)容為序號(hào),以轉(zhuǎn)換表中的字節(jié)內(nèi)容存入到AL中,讀書(shū)之法,
4、在循序而漸進(jìn),熟讀而精思。(朱熹),8,XLAT,存儲(chǔ)器單元,,,,,,,,,BX,AL,,,,,,+,先定位BX 再置AL數(shù) 不涉及其余尋址方式,標(biāo)志位不影響,教材第48頁(yè),讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),9,(3) 換碼指令XLAT ----------------教材第48頁(yè),換碼指令XLAT用于將緩沖區(qū)中的一個(gè)數(shù)據(jù)取出并傳送給AL寄存器。BX指定這個(gè)緩沖區(qū)在主存中的開(kāi)始位置,AL指定數(shù)據(jù)距離開(kāi)始位置的位移量。XLAT指令的應(yīng)用場(chǎng)合比較獨(dú)特,主要用于將一種代碼轉(zhuǎn)換為另一種代碼。,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),10,例1-40(視頻演示) ----------
5、---教材第48頁(yè),在DEBUG中輸入xlat語(yǔ)句,執(zhí)行前查看BX、AL、以及 (BX+AL) 單元中的數(shù)據(jù),執(zhí)行后,查看AL 中的數(shù)據(jù)。在下圖中可見(jiàn),用R命令查看到執(zhí)行指令前,AL=00h,BX=0000h,源操作數(shù)在數(shù)據(jù)段的0000+00=0000單元中,用D命令查看到ds:0000單元中為0cdh,所以,用T命令執(zhí)行xlat時(shí),將0cdh傳送到隱含的目的操作數(shù)AL中,AL=0cdh。,,,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),11,(4) 堆棧指令PUSH / POP ------教材第48頁(yè),堆棧是主存中一個(gè)特殊的區(qū)域,它采用“先進(jìn)后出”的存取原則。8086/8088中堆棧區(qū)域
6、被稱(chēng)為堆棧段,首地址由SS指定,棧頂位置由SP指定。堆棧的基本操作是進(jìn)棧PUSH和出棧POP指令。 堆棧指令主要用于臨時(shí)保存數(shù)據(jù)、寄存器的保護(hù)和恢復(fù)以及參數(shù)傳遞。,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),12,堆棧操作指令-----------------------教材第48頁(yè),格式 PUSH 源 POP 目的 功能 PUSH指令將存儲(chǔ)器、寄存器中數(shù)據(jù)壓入堆棧 POP指令將堆棧頂?shù)臄?shù)據(jù)彈出到存儲(chǔ)器或寄存器中,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),13,PUSH 源 PUSHF,段寄存器 DS ES SS,通用寄存器 AXSP BXBP CXSI DXDI PSWIP,存儲(chǔ)器
7、單元,,堆棧區(qū),,,除CS,立即數(shù),必須是字類(lèi)型,標(biāo)志位不影響,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),14,POP 目的POPF,段寄存器 DS ES SS,通用寄存器 AXSP BXBP CXSI DXDI /PSW,存儲(chǔ)器單元,,堆棧區(qū),,,除CS,除IP,必須是字類(lèi)型,標(biāo)志位不影響,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),15,例1-41(視頻演示) -----------教材第49頁(yè),在DEBUG中調(diào)試下面指令,執(zhí)行前請(qǐng)先查看一下相關(guān)寄存器和堆棧單元的值,執(zhí)行后再查看有否發(fā)生變化,發(fā)生了什么變化。 push ax pop cx,,,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱
8、熹),16,(5) 有效地址傳送指令LEA ------教材第49頁(yè),有效地址傳送指令LEA獲取存儲(chǔ)器操作數(shù)的有效地址EA (偏移地址) ,常用于將變量所在的初始地址賦給寄存器。由于要在指令中指明變量符號(hào),而DEBUG中的指令不允許輸入符號(hào),要用單元的偏移地址來(lái)表示。,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),17,取有效地址指令LEA -------------教材第49頁(yè),格式 LEA 目的,源單元 功能 將單元偏移地址(有效地址)傳送給通用寄存器,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),18,LEA 目的,源單元,存儲(chǔ)器單元,,,,,,,,,通用寄存器 AXSP BXBP CXSI DXDI,地址,段寄存器 DS ES SS CS,立即數(shù),標(biāo)志位不影響,除PSW IP,讀書(shū)之法,在循序而漸進(jìn),熟讀而精思。(朱熹),19,例1-42(視頻演示) -----------教材第50頁(yè),mov ax, 1234 lea ax, 1234 在DEBUG中跟蹤比較這兩條指令的功能差異。從下圖中可以看到,兩條指令都是對(duì)數(shù)據(jù)段的1234h單元操作,但是MOV指令取的是單元中的值,而LEA指令取的是該單元的地址。,,,