第三章 指令系統(tǒng)_第1頁(yè)
第三章 指令系統(tǒng)_第2頁(yè)
第三章 指令系統(tǒng)_第3頁(yè)
第三章 指令系統(tǒng)_第4頁(yè)
第三章 指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩222頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第3章章 指令系統(tǒng)指令指令: :控制計(jì)算機(jī)進(jìn)行某種操作的命令控制計(jì)算機(jī)進(jìn)行某種操作的命令指令系統(tǒng)指令系統(tǒng): :指令的集合指令的集合2 指明計(jì)算機(jī)的有關(guān)部件執(zhí)行什么操作; 指明參加操作的是一些什么樣的數(shù); 指明這些操作數(shù)存放在什么地方,以及通過(guò)什么方式才能夠找到它們; 指明后繼指令從哪里取出。第一節(jié) 指令的基本格式指令包含的基本內(nèi)容指令包含的基本內(nèi)容1. 1. 做什么操作做什么操作由指令的由指令的操作碼操作碼字段規(guī)定。字段規(guī)定。2. 2. 操作數(shù)的來(lái)源操作數(shù)的來(lái)源操作數(shù)來(lái)自于什么地方。由指令的操作數(shù)來(lái)自于什么地方。由指令的操作操作數(shù)數(shù)字段規(guī)定。字段規(guī)定。操作數(shù)的來(lái)源可以是:操作數(shù)的來(lái)源可以是:

2、 a. CPU內(nèi)的某個(gè)內(nèi)的某個(gè)寄存器寄存器;b. 存儲(chǔ)器內(nèi)的某一個(gè)或幾個(gè)存儲(chǔ)器內(nèi)的某一個(gè)或幾個(gè)單元單元;c. I/O端口端口; d. 立即數(shù)。立即數(shù)。3. 3. 操作結(jié)果的去向操作結(jié)果的去向操作的操作的結(jié)果結(jié)果將存放在何處。將存放在何處。4. 4. 下一條指令的位置下一條指令的位置指示下一條指令是指示下一條指令是順序順序執(zhí)行還是執(zhí)行還是轉(zhuǎn)移轉(zhuǎn)移執(zhí)行。執(zhí)行。指令的種類(lèi)指令的種類(lèi)1. 1. 數(shù)據(jù)處理指令數(shù)據(jù)處理指令2. 2. 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令3. 3. 程序處理指令程序處理指令4. 4. 狀態(tài)管理指令狀態(tài)管理指令指令的表示方法指令的表示方法1. 二進(jìn)制代碼表示二進(jìn)制代碼表示機(jī)器語(yǔ)言指令機(jī)器

3、語(yǔ)言指令2. 助記符表示助記符表示匯編語(yǔ)言指令匯編語(yǔ)言指令例例:10001000 11011000例例:MOV BL,ALMOV表示表示“傳送傳送”助記符,助記符,BL(寄存器)(寄存器)表示結(jié)果存放的位置,表示結(jié)果存放的位置,AL(寄存器)表示數(shù)(寄存器)表示數(shù)據(jù)的來(lái)源。據(jù)的來(lái)源。助記符表示的指令便于書(shū)寫(xiě)、理解和助記符表示的指令便于書(shū)寫(xiě)、理解和記憶,但最終必須將助記符指令記憶,但最終必須將助記符指令“翻譯翻譯”成成機(jī)器指令才能被識(shí)別和執(zhí)行。這個(gè)過(guò)程叫機(jī)器指令才能被識(shí)別和執(zhí)行。這個(gè)過(guò)程叫“匯編匯編”。助記符指令助記符指令機(jī)器指令機(jī)器指令匯編匯編指令的書(shū)寫(xiě)格式 標(biāo)號(hào)標(biāo)號(hào): : 指令助記符指令助記

4、符 操作數(shù)操作數(shù) ;注釋?zhuān)蛔⑨?標(biāo)號(hào)標(biāo)號(hào): :給指令所在地址起的名字給指令所在地址起的名字指令助記符指令助記符: :指明指令的操作類(lèi)型指明指令的操作類(lèi)型操作數(shù)操作數(shù): :指明指令操作對(duì)象或操作對(duì)象存放地址:指明指令操作對(duì)象或操作對(duì)象存放地址:注釋部分注釋部分: :可選項(xiàng)可選項(xiàng), ,必須用分號(hào)開(kāi)頭必須用分號(hào)開(kāi)頭9地址地址:數(shù)據(jù)和指令存放的位置。:數(shù)據(jù)和指令存放的位置。數(shù)據(jù)存放的位置可以是數(shù)據(jù)存放的位置可以是寄存器寄存器、存儲(chǔ)器存儲(chǔ)器或或I/OI/O端口端口指令存放的位置只能是存儲(chǔ)器中的指令存放的位置只能是存儲(chǔ)器中的代碼段代碼段。尋址方式:尋址方式:尋找指令地址和操作數(shù)地址的方式。尋找指令地址和操

5、作數(shù)地址的方式。尋址過(guò)程:尋址過(guò)程:形成指令地址和操作數(shù)地址的過(guò)程。形成指令地址和操作數(shù)地址的過(guò)程。第二節(jié)尋址方式一 立即數(shù)尋址方式11指令操作數(shù)直接包含在指令中它是一個(gè)8位或16位的常數(shù)AHALAX5678代碼段代碼段 (存儲(chǔ)器中存儲(chǔ)器中).B83412.操作碼操作碼(B8)操作數(shù)操作數(shù)(1234H)立即數(shù)立即數(shù)一條指令一條指令指令執(zhí)行后,指令執(zhí)行后,AX=1234H (原有的內(nèi)容被新的內(nèi)容替換原有的內(nèi)容被新的內(nèi)容替換)。1234MOV AX,1234H立即尋址方式特點(diǎn):1 執(zhí)行速度快:操作數(shù)是直接從指令中取得,不執(zhí)行總線(xiàn)周期,所以執(zhí)行速度快;2 立即數(shù)只能作源操作數(shù),不能作目的操作數(shù);3

6、主要用來(lái)給寄存器或存儲(chǔ)器賦初值。12注意事項(xiàng)13源操作數(shù)與目的操作數(shù)類(lèi)型必須匹配源操作數(shù)與目的操作數(shù)類(lèi)型必須匹配 8位(字節(jié))立即數(shù)可裝入位(字節(jié))立即數(shù)可裝入8位或位或16位寄存器位寄存器16位(字)立即數(shù)只能裝入位(字)立即數(shù)只能裝入16位寄存器。位寄存器。 MOV AL,14H 執(zhí)行后,執(zhí)行后,(AL)=14H MOV AX,14H 執(zhí)行后,執(zhí)行后,(AX)=0014H MOV BP,1234H 執(zhí)行后執(zhí)行后(BP)=1234H思考:思考:指令是否正確指令是否正確 MOV AL,1234H MOV BL,123H二 寄存器器尋址方式操作數(shù)存放在寄存器中,由指令指定寄存器的名稱(chēng)。操作數(shù)存放

7、在寄存器中,由指令指定寄存器的名稱(chēng)。1616位寄存器:位寄存器:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、BPBP8 8位寄存器:位寄存器:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL例:例:MOV AX,BX MOV AX,BX ;1616位寄存器傳送,位寄存器傳送, ;(BX) (BX) AXAX MOV DL,CL MOV DL,CL ;8 8位寄存器傳送,位寄存器傳送, ;(CL) (CL) DLDL14例例:INC BL操作操作:使:使BL中內(nèi)容加中內(nèi)容加1后送回后送回+1BL00若若BL=00H,則執(zhí)行后,則執(zhí)行后BL=

8、01HBL=FFH,則執(zhí)行后,則執(zhí)行后BL=00H (自動(dòng)溢出自動(dòng)溢出)01寄存器尋址方式特點(diǎn):特點(diǎn): 1 1 執(zhí)行速度快:操作數(shù)就在執(zhí)行速度快:操作數(shù)就在CPUCPU內(nèi)部,內(nèi)部, 不執(zhí)行總線(xiàn)周期;不執(zhí)行總線(xiàn)周期; 2 2 源操作數(shù)和目的操作數(shù)都可使用寄存器尋址。源操作數(shù)和目的操作數(shù)都可使用寄存器尋址。 注意注意: : 源操作數(shù)的長(zhǎng)度必須與目的操作數(shù)源操作數(shù)的長(zhǎng)度必須與目的操作數(shù) 一致,否則出錯(cuò)。一致,否則出錯(cuò)。 MOV CX , AHMOV CX , AH16三 固定尋址方式( (隱含尋址隱含尋址) )P U S H s ; S P 2 S P, 源 操 作 數(shù)源 操 作 數(shù) 壓 入壓 入

9、堆 棧堆 棧 保 存保 存POP d;SP所指堆棧所指堆棧的的內(nèi)容內(nèi)容送目送目 標(biāo),標(biāo),SP+2 SP例:例:PUSH BX;把;把BX內(nèi)容壓入堆棧內(nèi)容壓入堆棧設(shè)設(shè) SS=2000H,SP=0040H,BX=2340H則執(zhí)行后,則執(zhí)行后,2340H被保存到堆棧,同時(shí)被保存到堆棧,同時(shí)SP=003EH,BX內(nèi)容不變內(nèi)容不變SS 1620000HSP=0040H(初值初值)20040H2003EH4023SP=003EH(壓棧后壓棧后)XX23 40BX注注:s和和d只能為只能為16位寄存器或存儲(chǔ)器位寄存器或存儲(chǔ)器錯(cuò)誤指令:錯(cuò)誤指令:PUSH 1234HPOP AL20三 存儲(chǔ)器尋址操作數(shù)在操作數(shù)

10、在存儲(chǔ)器存儲(chǔ)器中的一個(gè)或幾個(gè)中的一個(gè)或幾個(gè)單元單元中。中。在這種尋址方式下,要找到該操作數(shù),關(guān)鍵是必須找在這種尋址方式下,要找到該操作數(shù),關(guān)鍵是必須找到該操作數(shù)所在單元的到該操作數(shù)所在單元的地址地址。由于由于8086采用存儲(chǔ)器段組織結(jié)構(gòu),內(nèi)存單元的地址由采用存儲(chǔ)器段組織結(jié)構(gòu),內(nèi)存單元的地址由段起始地址段起始地址 (基地址基地址) 和該單元與段起始地址之間的和該單元與段起始地址之間的距距離離 (以以字節(jié)數(shù)字節(jié)數(shù)計(jì)計(jì)) 兩部分共同決定。兩部分共同決定。執(zhí)行步驟CPU首先根據(jù)操作數(shù)字段提供的地址信息,首先根據(jù)操作數(shù)字段提供的地址信息,由執(zhí)行部件由執(zhí)行部件EU計(jì)算出有效地址計(jì)算出有效地址EA再由總線(xiàn)接

11、口單元再由總線(xiàn)接口單元BIU根據(jù)公式根據(jù)公式PA(16段首址)段首址)EA 計(jì)算出實(shí)際物理地址計(jì)算出實(shí)際物理地址執(zhí)行總線(xiàn)周期訪(fǎng)問(wèn)存儲(chǔ)器,取得操作數(shù),執(zhí)行總線(xiàn)周期訪(fǎng)問(wèn)存儲(chǔ)器,取得操作數(shù),最后再執(zhí)行指令規(guī)定的基本操作。最后再執(zhí)行指令規(guī)定的基本操作。有效地址有效地址EA待尋址的內(nèi)存單元待尋址的內(nèi)存單元(CS, DS, ES, SS) 16 段基地段基地址址 物理地址物理地址 =段基值段基值 16+EA 內(nèi)存單元物理地址內(nèi)存單元物理地址存儲(chǔ)器尋址方式分類(lèi)存儲(chǔ)器尋址方式共有存儲(chǔ)器尋址方式共有2424種。種。按EA的計(jì)算方法不同分為:22直接尋址方式寄存器間接尋址變址尋址基址尋址相對(duì)的基址變址尋址基址加變

12、址尋址1.直接尋址方式操作數(shù)所在存儲(chǔ)單元的偏移地址直接由指令給出。操作數(shù)所在存儲(chǔ)單元的偏移地址直接由指令給出。MOV AX,2000HMOV AX,2000H STEP1: STEP1: 取指令機(jī)器碼取指令機(jī)器碼0A1H0A1H、00H00H、20H20H;STEP2: CPUSTEP2: CPU由由0A1H0A1H后得知本指令為數(shù)據(jù)傳送指后得知本指令為數(shù)據(jù)傳送指令,后面的字為存儲(chǔ)單元的有效地址;令,后面的字為存儲(chǔ)單元的有效地址;STEP3: STEP3: 計(jì)算操作數(shù)所在內(nèi)存單元物理地址計(jì)算操作數(shù)所在內(nèi)存單元物理地址PAPA1616(DS)(DS)EAEA,EAEA即為即為2000H2000H

13、。STEP4: CPUSTEP4: CPU執(zhí)行總線(xiàn)操作,從執(zhí)行總線(xiàn)操作,從PAPA地址單元取得地址單元取得數(shù)據(jù)送到數(shù)據(jù)送到AXAX寄存器。寄存器。23例 子設(shè)(DS)=3000H,則指令執(zhí)行過(guò)程如下圖所示:243412數(shù)據(jù)段代碼段A1002032000H 12 34AXAH ALDS 10H=30000H ) 2000H 32000H3000H注意事項(xiàng)注意事項(xiàng) 在直接尋址方式下,在直接尋址方式下,缺省的段基址總由缺省的段基址總由DSDS給出給出,表明操作數(shù)在數(shù)據(jù)段中。表明操作數(shù)在數(shù)據(jù)段中。 操作數(shù)地址也可位于數(shù)據(jù)段以外的其它段。操作數(shù)地址也可位于數(shù)據(jù)段以外的其它段。在操作數(shù)地址前使用前綴指出段

14、寄存器名,稱(chēng)為前綴在操作數(shù)地址前使用前綴指出段寄存器名,稱(chēng)為前綴為為段超越前綴段超越前綴。 MOV ALMOV AL,ES:2000H ES:2000H ; 直接地址可用數(shù)值表示,被包括在直接地址可用數(shù)值表示,被包括在之中之中 直接地址用符號(hào)地址表示,可直接表示直接地址用符號(hào)地址表示,可直接表示252.2.寄存器間接尋址寄存器間接尋址操作數(shù)的有效地址操作數(shù)的有效地址EAEA為四個(gè)寄存器的內(nèi)容為四個(gè)寄存器的內(nèi)容BXBX、BPBP、SISI、DIDI例:例:MOV AX,BXMOV AX,BX EA=(BX),PA=(DS) EA=(BX),PA=(DS)16+(BX), 指令執(zhí)行后,指令執(zhí)行后,

15、AX=(PA)。26基址寄存器基址寄存器變址寄存器變址寄存器設(shè)設(shè)DS=2000H,BX=1000H本例執(zhí)行后本例執(zhí)行后 AX=50A0HDS=2000HDS 1620000H EA=BX(=1000H)21000H 50 A0 8B.04A050代碼段代碼段數(shù)據(jù)段數(shù)據(jù)段AX AH AL 這種尋址方式的優(yōu)點(diǎn)就在于可以隨時(shí)修改這種尋址方式的優(yōu)點(diǎn)就在于可以隨時(shí)修改BX寄存器的內(nèi)寄存器的內(nèi)容,而指向不同的存儲(chǔ)單元。故容,而指向不同的存儲(chǔ)單元。故BX又稱(chēng)為基址指針寄存器。又稱(chēng)為基址指針寄存器。注意事項(xiàng)注意事項(xiàng) 指令指定指令指定BXBX、SISI、DIDI為間址寄存器時(shí),則操作數(shù)在數(shù)據(jù)段為間址寄存器時(shí),則

16、操作數(shù)在數(shù)據(jù)段中。這種情況下用中。這種情況下用DSDS寄存器內(nèi)容作段首址,操作數(shù)的實(shí)際地寄存器內(nèi)容作段首址,操作數(shù)的實(shí)際地址由下式計(jì)算,其中址由下式計(jì)算,其中DSDS提供缺省段基址;提供缺省段基址; 28 (BX) PA16(DS) (SI) (DI) 指令中若指定指令中若指定BPBP為間址寄存器,則操作數(shù)在堆棧段中。為間址寄存器,則操作數(shù)在堆棧段中。這種情況下,用這種情況下,用SSSS寄存器內(nèi)容作段首址,操作數(shù)的實(shí)際寄存器內(nèi)容作段首址,操作數(shù)的實(shí)際地址為:地址為:PAPA1616(SS)(SS)(BP)(BP) 在指令中,也可指定段超越前綴來(lái)取得其它段中的操作在指令中,也可指定段超越前綴來(lái)取

17、得其它段中的操作數(shù)。例如:數(shù)。例如:MOV AXMOV AX,ES:BXES:BX 寄存器間接尋址方式可以用來(lái)對(duì)一維數(shù)組或表格進(jìn)行處寄存器間接尋址方式可以用來(lái)對(duì)一維數(shù)組或表格進(jìn)行處理,只要改變間址寄存器理,只要改變間址寄存器BXBX、BPBP、SISI、DIDI中的內(nèi)容,用中的內(nèi)容,用一條寄存器間接尋址指令就可對(duì)連續(xù)的存儲(chǔ)器單元進(jìn)行一條寄存器間接尋址指令就可對(duì)連續(xù)的存儲(chǔ)器單元進(jìn)行存取操作。存取操作。 29注意事項(xiàng)注意事項(xiàng)3.3. 寄存器相對(duì)尋址寄存器相對(duì)尋址 指定指定BXBX、BPBP、SISI,DIDI的內(nèi)容進(jìn)行間接尋址的同時(shí)的內(nèi)容進(jìn)行間接尋址的同時(shí)指令中還要指定一個(gè)指令中還要指定一個(gè) 8

18、8 位或位或 1616 位的位的位移量位移量 DISPDISP(DisplacementDisplacement),操作數(shù)的有效地址,操作數(shù)的有效地址EAEA等于變等于變址寄存器內(nèi)容和位移量之和,結(jié)果按址寄存器內(nèi)容和位移量之和,結(jié)果按1616位歸算,位歸算,即即30EA=(SI)(DI)(BX)(BP)DISP8DISP16+ 31對(duì)于寄存器為對(duì)于寄存器為BXBX、SISI、DIDI,用段寄存器,用段寄存器DSDS的內(nèi)容作段的內(nèi)容作段首址首址PA=(DS) 16 +16 +(SI)(SI)(DI)(DI)(BX)(BX)DISP8DISP16+對(duì)于寄存器BP,則使用段寄存器SS的內(nèi)容作段首址。

19、操作數(shù)的實(shí)際地址為:注意事項(xiàng)注意事項(xiàng)PA=(SS) 16 +(BP)DISP8DISP16+ 32 采用相對(duì)尋址的指令,也可使用段超越前綴。采用相對(duì)尋址的指令,也可使用段超越前綴。 例如例如: MOV DL: MOV DL,ES:2000HSIES:2000HSI 例如例如: MOV DL: MOV DL,ES:2000HBPES:2000HBP位移量若為位移量若為8 8位位DISPDISP8 8( (以補(bǔ)碼形式出現(xiàn)以補(bǔ)碼形式出現(xiàn)) ) ,其數(shù)值范,其數(shù)值范圍為圍為-128-128+127+127,應(yīng)將其變成,應(yīng)將其變成1616位補(bǔ)碼方能相加;位補(bǔ)碼方能相加;位移量若為位移量若為1616位位D

20、ISPDISP1616(仍為補(bǔ)碼,數(shù)值范圍(仍為補(bǔ)碼,數(shù)值范圍- -3276832768+32767+32767),則直接相加。,則直接相加。取結(jié)果低取結(jié)果低1616位有位有效值效值。 該尋址通常是用來(lái)訪(fǎng)問(wèn)數(shù)組中的元素,該尋址通常是用來(lái)訪(fǎng)問(wèn)數(shù)組中的元素,位移量定位位移量定位于數(shù)組的起點(diǎn)于數(shù)組的起點(diǎn),間址寄存器的值間址寄存器的值選擇數(shù)組中的某個(gè)選擇數(shù)組中的某個(gè)元素。元素。注意事項(xiàng)注意事項(xiàng)4.4.基址加變址尋址基址加變址尋址 存儲(chǔ)器操作數(shù)的有效地址存儲(chǔ)器操作數(shù)的有效地址EAEA由指令指定的一個(gè)基由指令指定的一個(gè)基址寄存器和一個(gè)變址寄存器的內(nèi)容之和。址寄存器和一個(gè)變址寄存器的內(nèi)容之和。BXBX、BP

21、BP為基址寄存器,為基址寄存器,SISI、DIDI為變址寄存器。為變址寄存器。PA=(DS) PA=(DS) 16 +16 + (BX)(BX) + +(SI)(SI)(DI)(DI)PA=(SS) PA=(SS) 16 +(BP)16 +(BP) + +(SI)(SI)(DI)(DI)EA =EA =(SI)(SI)(DI)(DI)+ +(BX)(BX)(BP)(BP) 34例:例:MOV AXMOV AX,BXSI BXSI 或書(shū)寫(xiě)為或書(shū)寫(xiě)為: : MOV AX MOV AX,BX+SIBX+SI設(shè)設(shè)(DS)(DS)2000H2000H,(BX)(BX)8000H8000H,(SI)(SI

22、)90FEH90FEH,則:則:(BX)(BX)(SI)(SI)8000H8000H90FEH90FEH110FEH110FEH 取低取低1616位有效得:位有效得: EAEA10FEH10FEH PA PA2000H2000H1616EAEA210FEH210FEH注意事項(xiàng):注意事項(xiàng): 35 PA計(jì)算公式中,BX可與SI或DI組合,BP也可與SI或DI組合,但BX不可與BP組合。BX的缺省段基址寄存器為DS,而而B(niǎo)PBP的缺省的缺省段基址寄存器為SS; 基址變址尋址方式也可使用段超越前綴; 例如: MOV CX,ES:BXSI。 基址變址尋址方式同樣適合數(shù)組或表格的處理,由于基址和變址寄存器

23、中的內(nèi)容都可以修改,因而在處理二維數(shù)組二維數(shù)組時(shí)特別方便。在處理數(shù)組時(shí),SI用于源數(shù)組的變址尋址;DI則用于目的數(shù)組的變址尋址。5.5.相對(duì)基址變址尋址相對(duì)基址變址尋址 36在基址變址尋址基礎(chǔ)上,再加上一個(gè)在基址變址尋址基礎(chǔ)上,再加上一個(gè)8 8位或位或1616位的位移位的位移量,稱(chēng)為相對(duì)的基址變址尋址。量,稱(chēng)為相對(duì)的基址變址尋址?;颍夯颍篜A=(SS) PA=(SS) 16 +(BP)16 +(BP) + +(SI)(SI)(DI)(DI)DISPDISP8 8DISPDISP1616+ +PA=(DS) PA=(DS) 16 +16 +(BX)(BX)+ +(SI)(SI)(DI)(DI)D

24、ISPDISP8 8DISPDISP1616+ + 37例:例: MOV AXMOV AX, 0250HBXSI 0250HBXSI 或?qū)憺榛驅(qū)憺? MOV AX: MOV AX, 0250HBX0250HBXSISI也可寫(xiě)為也可寫(xiě)為: MOV AX: MOV AX,BXBXSISI0250H0250H。設(shè)設(shè)(DS)(DS)3000H3000H,(BX)(BX)2000H2000H,(SI)(SI)1000H1000H,則源操作數(shù)的,則源操作數(shù)的實(shí)際地址為實(shí)際地址為: :PAPA30000H30000H(2000H(2000H1000H1000H0250H)0250H)33250H33250H

25、注意事項(xiàng): 38 PA PA計(jì)算公式中,計(jì)算公式中,BXBX、 BPBP、SISI、DIDI組合關(guān)系與基組合關(guān)系與基址變址尋址方式相同;址變址尋址方式相同;可使用段超越前綴;可使用段超越前綴;該尋址方式為訪(fǎng)問(wèn)堆棧中的數(shù)組提供了方便,可該尋址方式為訪(fǎng)問(wèn)堆棧中的數(shù)組提供了方便,可以在以在基址寄存器基址寄存器BPBP中存放堆棧頂?shù)牡刂罚弥写娣哦褩m數(shù)牡刂?,用位移量位移量表示棧頂?shù)綌?shù)組第一個(gè)元素的距離,表示棧頂?shù)綌?shù)組第一個(gè)元素的距離,變址寄存變址寄存器則器則用來(lái)訪(fǎng)問(wèn)數(shù)組中的每一個(gè)元素。用來(lái)訪(fǎng)問(wèn)數(shù)組中的每一個(gè)元素。例1:若(BX)=0158H,(DI)10A5H,位移量1B57H,(DS)2100H,

26、(SS)1100H(BP)=0100H,段寄存器按默認(rèn)段寄存器,則相對(duì)于各種尋址方式的有效地址和物理地址是多少?(1)直接尋址(2)寄存器BX間接尋址(3)寄存器 BP相對(duì)尋址(4)BX和DI的基址加變址尋址(5)BP和DI的基址變址的相對(duì)尋址例2:說(shuō)明畫(huà)線(xiàn)操作數(shù)的尋址方式(1)MOV AX, 0A78H(2)MOV BX, SP (3) MOV AX, BP100H (4) MOV AX, 100HBP (5) MOV BX, SI+50H (6) MOV BX, 50HSI (7) MOV AL, BX+SI+30H (8) MOV AL, 30HBX+SI (9) MOV CX, SP6

27、 6 串尋址串尋址這類(lèi)指令規(guī)定這類(lèi)指令規(guī)定:源串源串操作數(shù)在操作數(shù)在數(shù)據(jù)段數(shù)據(jù)段,且有效地址,且有效地址EA=SI目的串目的串操作數(shù)在操作數(shù)在附加段附加段,且有效地址,且有效地址EA=DI指令執(zhí)行后,指令執(zhí)行后,自動(dòng)自動(dòng)修改修改SI,DI的值,使之指向新的的值,使之指向新的單元。單元。 8086的段約定的段約定8086在執(zhí)行某種操作時(shí),在執(zhí)行某種操作時(shí),預(yù)先預(yù)先規(guī)定了采規(guī)定了采用的段寄存器和段,即有基本的用的段寄存器和段,即有基本的段約定段約定。如。如果要改變默認(rèn)的段約定,則果要改變默認(rèn)的段約定,則需要在指令中明需要在指令中明 確指出來(lái)確指出來(lái)。8086/8088的段約定的段約定存儲(chǔ)器存取方式

28、存儲(chǔ)器存取方式基本段約定基本段約定 允許修改的段允許修改的段偏移地址偏移地址取指令取指令堆棧操作堆棧操作源串源串目的串目的串用用BP作基址寄存器作基址寄存器通用數(shù)據(jù)讀寫(xiě)通用數(shù)據(jù)讀寫(xiě)CSSSDSESSSDS無(wú)無(wú)無(wú)無(wú)ES,CS,SS無(wú)無(wú)CS,DS,ESCS,ES,SSIPSPSIDIEAEA前面所述的各種尋址方式實(shí)際上是前面所述的各種尋址方式實(shí)際上是數(shù)據(jù)尋址數(shù)據(jù)尋址方式,關(guān)方式,關(guān)鍵是如何找到鍵是如何找到操作數(shù)操作數(shù)。相對(duì)指令尋址方式屬于相對(duì)指令尋址方式屬于程序存儲(chǔ)器尋址程序存儲(chǔ)器尋址,關(guān)鍵是要找,關(guān)鍵是要找到下一條待執(zhí)行指令的到下一條待執(zhí)行指令的地址地址。指令給出的形式地址與指令給出的形式地址與

29、IP的內(nèi)容相加,形成操作數(shù)的的內(nèi)容相加,形成操作數(shù)的有效地址,是以有效地址,是以IP作為變址寄存器作為變址寄存器(1) 轉(zhuǎn)移范圍轉(zhuǎn)移范圍段內(nèi)轉(zhuǎn)移:轉(zhuǎn)移范圍在段內(nèi)轉(zhuǎn)移:轉(zhuǎn)移范圍在同一個(gè)段同一個(gè)段以?xún)?nèi)以?xún)?nèi)段間轉(zhuǎn)移:從段間轉(zhuǎn)移:從一個(gè)一個(gè)代碼段轉(zhuǎn)移至代碼段轉(zhuǎn)移至另一個(gè)另一個(gè)代碼段代碼段(2) 轉(zhuǎn)移條件轉(zhuǎn)移條件無(wú)條件轉(zhuǎn)移無(wú)條件轉(zhuǎn)移有條件轉(zhuǎn)移有條件轉(zhuǎn)移 (轉(zhuǎn)移范圍僅為轉(zhuǎn)移范圍僅為128+127)(3) 轉(zhuǎn)移方式轉(zhuǎn)移方式直接轉(zhuǎn)移直接轉(zhuǎn)移 (轉(zhuǎn)移目標(biāo)轉(zhuǎn)移目標(biāo)直接直接在指令中給出在指令中給出)間接轉(zhuǎn)移間接轉(zhuǎn)移 (轉(zhuǎn)移目標(biāo)預(yù)先放入某個(gè)轉(zhuǎn)移目標(biāo)預(yù)先放入某個(gè)寄存器寄存器或或存儲(chǔ)器存儲(chǔ)器中中)操作數(shù)在某個(gè)操作數(shù)在某個(gè)

30、8位位或或16位位端口端口中。中。端口地址可以置于端口地址可以置于DX中,但不能置于其它寄存器中。中,但不能置于其它寄存器中。端口的輸入、輸出數(shù)據(jù)只能置于累加器端口的輸入、輸出數(shù)據(jù)只能置于累加器AL或或AX中。中。注:注:b. 端口輸出端口輸出OUT port, ALa. 端口輸入端口輸入 IN AL,portport=端口地址端口地址 (8位,位,0255)例例:IN AL,80H操作操作:從端口地址為:從端口地址為80H的端口輸入一字節(jié)送的端口輸入一字節(jié)送AL。(1) 直接端口尋址直接端口尋址(2) 間接端口尋址間接端口尋址當(dāng)端口地址超過(guò)一個(gè)字節(jié)時(shí),將端口地址當(dāng)端口地址超過(guò)一個(gè)字節(jié)時(shí),將端

31、口地址送入送入DX,然后進(jìn)行端口尋址:,然后進(jìn)行端口尋址:輸入:輸入: IN AL,DX 輸出:輸出: OUT DX,AL注注: 若用若用AX代替代替AL,則表示,則表示16位數(shù)據(jù)的端位數(shù)據(jù)的端口。口。 端口地址大于端口地址大于255時(shí),必須將端口地址時(shí),必須將端口地址送入送入DX,即采用間接尋址端口方式。,即采用間接尋址端口方式。尋址方式小結(jié):尋址方式小結(jié):固定尋址固定尋址:操作數(shù)固定在某個(gè):操作數(shù)固定在某個(gè)寄存器寄存器中中寄存器尋址寄存器尋址:操作數(shù)在某個(gè):操作數(shù)在某個(gè)寄存器寄存器中中立即數(shù)尋址立即數(shù)尋址:操作數(shù)就是操作碼后跟的:操作數(shù)就是操作碼后跟的立即數(shù)立即數(shù)存儲(chǔ)器尋址存儲(chǔ)器尋址直接尋

32、址直接尋址間接尋址間接尋址串操作尋址串操作尋址基址尋址基址尋址變址尋址變址尋址基址基址+變址尋址變址尋址I/O端口尋址端口尋址直接端口尋址直接端口尋址間接端口尋址間接端口尋址相對(duì)尋址相對(duì)尋址總結(jié)1.1.所謂尋址就是指令尋找操作數(shù)的方式。實(shí)際程序中所謂尋址就是指令尋找操作數(shù)的方式。實(shí)際程序中所用指令往往只給出操作數(shù)地址;所用指令往往只給出操作數(shù)地址;2.2.立即數(shù)可以出現(xiàn)在方括號(hào)內(nèi),表示直接地址,如立即數(shù)可以出現(xiàn)在方括號(hào)內(nèi),表示直接地址,如2000H2000H;3.3.只有只有BXBX、BPBP、SISI、DIDI這四個(gè)寄存器可以出現(xiàn)在這四個(gè)寄存器可以出現(xiàn)在 內(nèi),它們可以單獨(dú)出現(xiàn),也可以由幾個(gè)寄

33、存器組合內(nèi),它們可以單獨(dú)出現(xiàn),也可以由幾個(gè)寄存器組合起來(lái)(其值相加),或以寄存器與常數(shù)相加的形式起來(lái)(其值相加),或以寄存器與常數(shù)相加的形式出現(xiàn),但出現(xiàn),但BXBX和和BPBP寄存器不允許出現(xiàn)在同一個(gè)寄存器不允許出現(xiàn)在同一個(gè) 內(nèi),內(nèi),SISI和和DIDI也不能同時(shí)出現(xiàn)在同一個(gè)也不能同時(shí)出現(xiàn)在同一個(gè) 內(nèi)。內(nèi)。524.4.方括號(hào)有相加的含義,下面幾種寫(xiě)法都是等價(jià)的:方括號(hào)有相加的含義,下面幾種寫(xiě)法都是等價(jià)的: 6BXSI BX6BXSI BX6SI BX6SI BXSISI6 6 5.5.若方括號(hào)內(nèi)包含若方括號(hào)內(nèi)包含BPBP,則隱含段寄存器為,則隱含段寄存器為SSSS,它們的物理,它們的物理地址的

34、計(jì)算方法為:地址的計(jì)算方法為:PAPA1616(SS)(SS)EAEA,其中,其中EAEA有下面有下面三種形式:三種形式: DISPBPDISPBPSI SI ;EAEA(BP)(BP)(SI)(SI)DISPDISP DISPBP DISPBPDI DI ;EAEA(BP)(BP)(DI)(DI)DISPDISP DISPBP DISPBP ;EAEA(BP)(BP)DISPDISP BP BP ;EAEA(BP) (BP) 其中,其中,DISPDISP表示表示8 8位或位或1616位位移量,也可以為位位移量,也可以為0 0。53總結(jié)6.6.若方括號(hào)內(nèi)不包含若方括號(hào)內(nèi)不包含BPBP,則隱含段

35、寄存器為,則隱含段寄存器為DSDS,物,物理地址計(jì)算方法為:理地址計(jì)算方法為:PAPA1616(DS)(DS)EAEA EA EA可以有以下幾種形式:可以有以下幾種形式: DISP DISP ;EAEADISPDISP BX BX ;EAEA(BP)(BP) DISPBX DISPBXSI SI ;EAEA(BX)(BX)(SI)(SI)DISPDISP DISPBX DISPBXDI DI ;EAEA(BX)(BX)(DI)(DI)DISPDISP DISPBX DISPBX ;EAEA(BX)(BX)DISPDISP DISPSI DISPSI ;EAEA(SI)(SI)DISPDISP

36、DISPDI DISPDI ;EAEA(DI)(DI)DISPDISP54總結(jié)7. 7. 如果指令使用段超越前綴,則在計(jì)算如果指令使用段超越前綴,則在計(jì)算PAPA時(shí)時(shí)將將SSSS或或DSDS修改為相應(yīng)段前綴指定的段基址。修改為相應(yīng)段前綴指定的段基址。8.8. 計(jì)算計(jì)算EAEA時(shí),相加以后的結(jié)果一定要按時(shí),相加以后的結(jié)果一定要按1616位位歸算。歸算。9.9.一條指令中的源操作數(shù)與目的操作數(shù)可使一條指令中的源操作數(shù)與目的操作數(shù)可使用不同的尋址方式,所以要說(shuō)明一條指令的用不同的尋址方式,所以要說(shuō)明一條指令的尋址方式,需將源操作數(shù)、目的操作數(shù)分別尋址方式,需將源操作數(shù)、目的操作數(shù)分別加以說(shuō)明。加以說(shuō)

37、明。55總結(jié)課堂練習(xí)與思考:課堂練習(xí)與思考:1.請(qǐng)指出下列每條指令源操作數(shù)的尋址方式。請(qǐng)指出下列每條指令源操作數(shù)的尋址方式。(1) MOV AX, BX (2) MOV CH, 3AH (3) MOV BX, 2000H (4) MOV DX, BX (5) MOV CX, BP+2 (6) MOV AX, 3BX DI (7) MOV AL, ES:SI (8) MOV BX, DS:BP;寄存器尋址寄存器尋址,操作數(shù)在,操作數(shù)在BX中中 ;立即數(shù)尋址,操作數(shù)為立即數(shù)尋址,操作數(shù)為3AH ;直接尋址,直接尋址,EA=2000H,數(shù)在數(shù)據(jù)段,數(shù)在數(shù)據(jù)段 ;基址尋址基址尋址(寄存器寄存器間接尋址

38、間接尋址),EA=BX,數(shù)在數(shù)據(jù)段,數(shù)在數(shù)據(jù)段 ;基址尋址,基址尋址,EA=BP+2,數(shù)在堆棧段,數(shù)在堆棧段 ;相對(duì)基址變址尋址,相對(duì)基址變址尋址,EA=BX+DI+3,數(shù)在數(shù)據(jù)段,數(shù)在數(shù)據(jù)段 ;含段超越的變址尋址,含段超越的變址尋址,EA=SI,數(shù)在附加段,數(shù)在附加段 ;含段超越的基址尋址,含段超越的基址尋址,EA=BP,數(shù)在數(shù)據(jù)段,數(shù)在數(shù)據(jù)段課堂練習(xí)與思考:課堂練習(xí)與思考:2. MOV AX2. MOV AX,BX+SI+0080HBX+SI+0080H什么尋址方式?什么尋址方式?3.3.設(shè)設(shè)BX=0123H DI=1000H DS=3200HBX=0123H DI=1000H DS=32

39、00H,默認(rèn),默認(rèn)DSDS作為操作為操作數(shù)對(duì)應(yīng)的段寄存器作數(shù)對(duì)應(yīng)的段寄存器( (假定沒(méi)使用段前綴假定沒(méi)使用段前綴) ),試指出下,試指出下列指令的尋址方式,并寫(xiě)出其操作數(shù)的有效地址和物列指令的尋址方式,并寫(xiě)出其操作數(shù)的有效地址和物理地址。理地址。 (1)MOV AX,1A38H (2)MOV AX,BX (3)MOV AX,BX+1A38H (4)MOV AX,BX+DI (5)MOV AX,BX+DI+1A38H課堂練習(xí)與思考:課堂練習(xí)與思考:(1)直接尋址)直接尋址 有效地址有效地址=1A38H, 物理地址物理地址=32000H+1A38H=33A38H (2)寄存器間接尋址)寄存器間接尋

40、址 有效地址有效地址=0123H, 物理地址物理地址=32000H+0123H=32123H (3)寄存器相對(duì)基址尋址)寄存器相對(duì)基址尋址 有效地址有效地址=0123H+1A38H=1B5BH, 物理地址物理地址=32000H+1B5B=33B5BH (4) 基址變址尋址基址變址尋址 有效地址有效地址=0123H+1000H=1123H, 物理地址物理地址=32000H+1123H=33123H (5)相對(duì)基址變址尋址)相對(duì)基址變址尋址 有效地址有效地址=0123H+1000H+1A38H=2B5BH, 物理地址物理地址=32000H+2B5BH=34B5BH 寫(xiě)出以下指令中的操作數(shù)是什么操作

41、數(shù),如果為內(nèi)存操作數(shù),寫(xiě)出內(nèi)存操作數(shù)的EA和PA,并說(shuō)明操作數(shù)的尋址方式。 MOV AL, 89H MOV AL, BX+5 MOV AX, 348AH MOV BX, AX MOV CX, 110HDI MOV BX, 30HBPDI MOV AX, BX+SI100H 第三節(jié)第三節(jié) 8086/8088指令系統(tǒng)指令系統(tǒng) 8086/8088指令系統(tǒng)包含133條基本指令,這些指令與尋址方式組合,再加上不同的數(shù)據(jù)形式有的為字處理,有的為字節(jié)處理,可構(gòu)成上千種指令。這些指令按功能可分為六類(lèi): 數(shù)據(jù)傳送類(lèi);數(shù)據(jù)傳送類(lèi); 算術(shù)運(yùn)算類(lèi);算術(shù)運(yùn)算類(lèi); 邏輯運(yùn)算與移位類(lèi);邏輯運(yùn)算與移位類(lèi); 串操作類(lèi);串操作類(lèi)

42、; 控制轉(zhuǎn)移類(lèi);控制轉(zhuǎn)移類(lèi); 處理器控制類(lèi)。處理器控制類(lèi)。60一一 數(shù)據(jù)傳送類(lèi)數(shù)據(jù)傳送類(lèi) 作用作用: :用于數(shù)據(jù)的存放和交換用于數(shù)據(jù)的存放和交換 功能:實(shí)現(xiàn)功能:實(shí)現(xiàn)CPUCPU內(nèi)部寄存器之間、內(nèi)部寄存器之間、CPUCPU和存和存儲(chǔ)器之間以及儲(chǔ)器之間以及CPUCPU和和I/OI/O端口之間的數(shù)據(jù)端口之間的數(shù)據(jù)傳送。傳送。 特點(diǎn):特點(diǎn): 含兩個(gè)操作數(shù);含兩個(gè)操作數(shù); 除除SAHFSAHF和和POPFPOPF指令外,數(shù)據(jù)傳送指指令外,數(shù)據(jù)傳送指令不影響標(biāo)志寄存器內(nèi)容。令不影響標(biāo)志寄存器內(nèi)容。62數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令重點(diǎn):重點(diǎn):63通用數(shù)據(jù)傳送通用數(shù)據(jù)傳送累加器專(zhuān)用傳送指令累加器專(zhuān)用傳送指令

43、地址目標(biāo)傳送指令地址目標(biāo)傳送指令標(biāo)志傳送指令標(biāo)志傳送指令一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令能夠完成下列操作數(shù)的傳送任務(wù)。數(shù)據(jù)傳送指令能夠完成下列操作數(shù)的傳送任務(wù)。立即數(shù)立即數(shù)存儲(chǔ)器存儲(chǔ)器段寄存器段寄存器CS,DS,ES,SS通用寄存器組通用寄存器組AX,BX,CX,DXBP,SP,SI,DI(CS不能作目的不能作目的)(1) MOV d, s功能功能:將源操作數(shù):將源操作數(shù)s復(fù)制到目標(biāo)操作數(shù)復(fù)制到目標(biāo)操作數(shù)d,源保持不變?cè)幢3植蛔?,目?biāo)被源代替目標(biāo)被源代替。注注: d, s不能同時(shí)為存儲(chǔ)器不能同時(shí)為存儲(chǔ)器錯(cuò)誤指令:錯(cuò)誤指令:MOV BX,SI d不能為立即數(shù)不能為立即數(shù) 錯(cuò)誤指令:錯(cuò)

44、誤指令:MOV 1234H,AX d, s必須同時(shí)為字節(jié)型或字型必須同時(shí)為字節(jié)型或字型錯(cuò)誤指令:錯(cuò)誤指令:MOV AX,BL 注注: 不允許在段不允許在段R之間直接傳送信息之間直接傳送信息錯(cuò)誤指令:錯(cuò)誤指令:MOV DS,ES 改為兩條語(yǔ)句:改為兩條語(yǔ)句:MOV BX,ESMOV BX,ESMOV DS,BXMOV DS,BX 不能向段寄存器送立即數(shù)不能向段寄存器送立即數(shù)錯(cuò)誤指令:錯(cuò)誤指令:MOV DS,1234H不能用不能用CS和和IP作目的操作數(shù),作目的操作數(shù),CS和和IP的內(nèi)容可以的內(nèi)容可以 讀出,但不能隨意修改讀出,但不能隨意修改錯(cuò)誤指令:錯(cuò)誤指令:MOV CS,BX MOV IP,3

45、000H R R/ /R R傳送實(shí)例傳送實(shí)例 MOV AX,BX;BX中16位數(shù)據(jù)傳送到AXMOV SI,BP;BP中16位數(shù)據(jù)傳送到SI MOV AH,BL;BL中8位數(shù)據(jù)傳送到AH 68返回例例:MOV AX,0 ; AX0,AX清清0 執(zhí)行后,執(zhí)行后,AX=0MOV SI,BP ; SIBP,BP內(nèi)容送內(nèi)容送SI 執(zhí)行后,執(zhí)行后,SI=BP,BP不變不變段段R R/ /R R傳送實(shí)例傳送實(shí)例 MOV DS,AX ;AX中16位數(shù)據(jù)傳送到DS MOV AX,ES ;ES中16位數(shù)據(jù)傳送到AX70返回R/ImR/Im傳送實(shí)例傳送實(shí)例MOV CL,* ;執(zhí)行后CL2AH(*的ASCII碼)MO

46、V AX,03FFH ;執(zhí)行后AX03FFHMOV SP,2000H ;執(zhí)行后SP2000HMOV BX,1000 ;執(zhí)行后BX03E8HMOV SI,057BH ;執(zhí)行后SI057BHMOV AL, 41H ;執(zhí)行后AL=41H 字符串用 括起來(lái),表示該字符串的ASCII碼值。實(shí)際上西文文本采用ASCII碼存儲(chǔ) 。 71返回M/ImM/Im傳送實(shí)例傳送實(shí)例MOV WORD PTR2000H,6789H ;執(zhí)行后(2000H)89H,(2001H)67HMOV WORD PTRSI,1234H ;立即數(shù)1234H送DS段(SI)和(SI)+1 ;所指的兩存儲(chǔ)單元 運(yùn)算符 PTR 用于修改存儲(chǔ)器

47、操作數(shù)的類(lèi)型屬性,如例中的 WORD PTR2000H定義從2000H單元開(kāi)始的連續(xù)兩個(gè)單元為字變量。 72返回R R/ /M M傳送實(shí)例傳送實(shí)例 MOV AX,SI;將DS段(SI)和(SI)+1單元的內(nèi)容送AX MOV DI,CX;將CX的內(nèi)容送DS段(DI)和(DI)+1所指的存儲(chǔ)單元 MOV SI,BLOCKBP;將SS段EA為(BP)+BLOCK字單元的內(nèi)容送SI73返回MOV AL,BUFFERS ;BUFFERS內(nèi)存內(nèi)存單元內(nèi)容送入單元內(nèi)容送入ALBUFFERS代表代表符號(hào)地址符號(hào)地址,從該地址單元中,從該地址單元中取出內(nèi)容送取出內(nèi)容送AL寄存器。寄存器。屬于直接尋址方式。屬于直

48、接尋址方式。EA=BUFFERS偏移量偏移量3030HBUFFERSALDS 1630000H123434H12HAXAH ALEA=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BX段段R R/ /M M傳送實(shí)例傳送實(shí)例 MOV DS,2000H ;將2000H和2001H兩存儲(chǔ)單元 的內(nèi)容送DS MOV BXSI,CS ;CS內(nèi)容送DS段(BX)+(SI)所指 的字存儲(chǔ)單元 MOV DS,DATABX+SI ;將DS段(BX)+(SI)+DATA所 指的字單元的內(nèi)容送DS MOV DESTBP+DI,ES ;ES內(nèi)容送SS段 (BP)+(DI)+D

49、EST所指的字存儲(chǔ)單元 返回(2)堆棧操作指令)堆棧操作指令建棧:規(guī)定堆棧底部在存儲(chǔ)器中的位置,即設(shè)置堆棧指針和SS。進(jìn)棧: 將16位的源操作數(shù)推入堆棧,目標(biāo)地址誒當(dāng)前棧頂。 PUSH src ;SP (SP)-2 (SP) src出棧:將當(dāng)前棧頂?shù)囊粋€(gè)字送回目的操作數(shù) POP dst ;dst (SP) SP (SP)+277例:例:PUSH BX;把;把BX內(nèi)容壓入堆棧內(nèi)容壓入堆棧設(shè)設(shè) SS=2000H,SP=0040H,BX=2340H則執(zhí)行后,則執(zhí)行后,2340H被保存到堆棧,同時(shí)被保存到堆棧,同時(shí)SP=003EH,BX內(nèi)容不變內(nèi)容不變SS 1620000HSP=0040H(初值初值)

50、20040H2003EH4023SP=003EH(壓棧后壓棧后)XX23 40BX入棧和出棧指令的格式 通用寄存器的進(jìn)/出棧 PUSH AX POP BX 段寄存器進(jìn)/出棧 PUSH CS POP DS 存儲(chǔ)單元進(jìn)/出棧 PUSH SI POP 2000HPUSHF功能功能:SP-2 SP,同時(shí)將同時(shí)將標(biāo)志寄存器標(biāo)志寄存器壓棧至壓棧至當(dāng)當(dāng)前前SP所指內(nèi)容所指內(nèi)容(2字節(jié)字節(jié)) 。此指令在執(zhí)行時(shí)標(biāo)志寄存器的值不變此指令在執(zhí)行時(shí)標(biāo)志寄存器的值不變. POPF功能功能:將:將當(dāng)前當(dāng)前SP所指內(nèi)容所指內(nèi)容(2字節(jié)字節(jié))彈出彈出至至標(biāo)志寄存器標(biāo)志寄存器,同時(shí),同時(shí)SP+2SP。 一般用在子程序和中斷處理

51、程序的首尾一般用在子程序和中斷處理程序的首尾,起保存主程起保存主程序標(biāo)志和恢復(fù)主程序標(biāo)志的作用序標(biāo)志和恢復(fù)主程序標(biāo)志的作用.注注:s和和d只能為只能為16位寄存器或存儲(chǔ)器位寄存器或存儲(chǔ)器錯(cuò)誤指令:錯(cuò)誤指令:PUSH 1234HPOP AL堆棧、堆棧區(qū)堆棧、堆棧區(qū)堆棧是以“先進(jìn)后出”,或者LIFO“后進(jìn)先出”方式工作的一個(gè)存儲(chǔ)區(qū),它只有一個(gè)出入口。堆棧指針SP指示堆棧的出入口,SP任何時(shí)候都指向當(dāng)前的棧頂。 SS與SP給出堆棧棧頂?shù)倪壿嫷刂?,?jì)算棧頂物理地址PA=(SS)10H+(SP) 82注意事項(xiàng)注意事項(xiàng) 堆棧棧頂隱含尋址,堆棧棧頂隱含尋址,srcsrc、dstdst可以是可以是R R、SR

52、SR、存、存儲(chǔ)器儲(chǔ)器( (可使用各種存儲(chǔ)器尋址方式可使用各種存儲(chǔ)器尋址方式) )或標(biāo)志寄存器;或標(biāo)志寄存器; 8086/80888086/8088堆棧操作總是以字為單位進(jìn)行;堆棧操作總是以字為單位進(jìn)行; 8086/80888086/8088棧頂是所謂的實(shí)棧頂;棧頂是所謂的實(shí)棧頂; CSCS寄存器可進(jìn)棧,但不能隨意彈出一個(gè)數(shù)據(jù)到寄存器可進(jìn)棧,但不能隨意彈出一個(gè)數(shù)據(jù)到CSCS。 堆棧的容量有限,因此進(jìn)棧和出棧要成對(duì)出現(xiàn),堆棧的容量有限,因此進(jìn)棧和出棧要成對(duì)出現(xiàn),否則將有數(shù)據(jù)殘留在堆棧中,時(shí)間一長(zhǎng),堆棧會(huì)否則將有數(shù)據(jù)殘留在堆棧中,時(shí)間一長(zhǎng),堆棧會(huì)滿(mǎn)的!滿(mǎn)的! 83例:利用堆棧操作指令將例:利用堆棧操

53、作指令將DS:1000HDS:1000H單元內(nèi)單元內(nèi)容送容送ES ES 寄存器。寄存器。 PUSH 1000HPUSH 1000H POP ES POP ES堆棧操作指令堆棧操作指令堆棧操作指令例:編程實(shí)現(xiàn)例:編程實(shí)現(xiàn)AXAXBXBX,BXBXCXCX,CXCXAXAX。85解法解法1:MOV DX, AXMOV AX, CXMOV CX, BXMOV BX, DX需要一個(gè)中間變量需要一個(gè)中間變量解法解法2:PUSH AXPUSH BXPUSH CXPOP AXPOP CXPOP BX無(wú)需中間變量無(wú)需中間變量例3:已知AX=1234H,BX=5678H,連續(xù)執(zhí)行以下指令后SP、BP和DX的內(nèi)容

54、是什么?MOV SP, 60HPUSH AXPUSH BXMOV BP, SPMOV BX, BP+2POP BPPOP DX例2:已知SS=1234H,SP=0020H,(AX)0A2E1H,(BX)=6F93H,執(zhí)行以下指令后棧頂單元的物理地址是多少,畫(huà)出堆棧圖? PUSH BX; POP DX; PUSH AX; PUSH DX; PUSH BX; POP ES;(3)交換指令)交換指令88 指令格式:指令格式: XCHG dst,src 功能:功能: dst src 使用注意事項(xiàng):使用注意事項(xiàng): 交換指令可實(shí)現(xiàn)交換指令可實(shí)現(xiàn)CPU內(nèi)部?jī)?nèi)部R之間,或內(nèi)部之間,或內(nèi)部R與與M之間的內(nèi)容(字

55、節(jié)或字)交換;之間的內(nèi)容(字節(jié)或字)交換; dst 和和src不能同時(shí)為存儲(chǔ)器操作數(shù);不能同時(shí)為存儲(chǔ)器操作數(shù); 任一個(gè)操作數(shù)都不能使用段寄存器和任一個(gè)操作數(shù)都不能使用段寄存器和IP,也不能使用立即數(shù)。也不能使用立即數(shù)。例:例:XCHG AX,SI+400H執(zhí)行后,執(zhí)行后,5678H被送到內(nèi)存單元被送到內(nèi)存單元AX=1234H3412SI+400H5678AH ALAX34127856功能:從指定端口輸入數(shù)據(jù)至累功能:從指定端口輸入數(shù)據(jù)至累加器加器acc (AL或或AX) ,port=0255 輸入指令輸入指令I(lǐng)N acc, portAH ALacc端口端口port 16位數(shù)據(jù)時(shí)位數(shù)據(jù)時(shí) IN

56、acc, DX功能功能:從:從DX指示的端口輸入數(shù)據(jù)至累指示的端口輸入數(shù)據(jù)至累加器加器acc , DX=065535輸出指令輸出指令功能:功能:將累加器的數(shù)據(jù)輸出至指定端口。將累加器的數(shù)據(jù)輸出至指定端口。OUT DX,acc功能功能:將累加器的數(shù)據(jù)輸出到:將累加器的數(shù)據(jù)輸出到DX所指示的端口。所指示的端口。注注: 16位端口地址必須送入位端口地址必須送入DX中。中。 若采用若采用AX,則表示,則表示16位數(shù)據(jù)傳送位數(shù)據(jù)傳送(輸入輸入/輸出輸出)OUT port, acc輸入/輸出數(shù)據(jù)傳送指令說(shuō)明1 這類(lèi)指令只能用累加器AL/AX作I/O操作的機(jī)構(gòu),不能用其它寄存器;2 當(dāng)端口地址為兩字節(jié)長(zhǎng)時(shí),

57、端口地址必須放在DX寄存器中 (2)(2)換碼指令換碼指令 格式:格式: XLATXLAT功能:功能: AL AL (BX)+(AL)(BX)+(AL)特點(diǎn):特點(diǎn): 隱含尋址;隱含尋址; 常用于簡(jiǎn)單的代碼轉(zhuǎn)換,常用于簡(jiǎn)單的代碼轉(zhuǎn)換,BXBX中存放代碼中存放代碼表首地址,表首地址,ALAL中存放待查代碼的索引值。中存放待查代碼的索引值。94XLAT 指令小結(jié)指令小結(jié) a: 表首相對(duì)于段起始地址的偏移量預(yù)先送入表首相對(duì)于段起始地址的偏移量預(yù)先送入BX中;中;b. 待查找的待查找的表內(nèi)表內(nèi)某單元相對(duì)于表首的某單元相對(duì)于表首的偏移量偏移量送入送入AL中;中;c. 以以EA=BX+AL在表中(數(shù)據(jù)段)查

58、找,將查得的在表中(數(shù)據(jù)段)查找,將查得的數(shù)據(jù)再送回?cái)?shù)據(jù)再送回AL中。中。例例:設(shè)表首的偏移地址為:設(shè)表首的偏移地址為2000H,要查找表,要查找表內(nèi)第內(nèi)第4號(hào)單元號(hào)單元 (從從0號(hào)算起號(hào)算起)的內(nèi)容并送的內(nèi)容并送回回AL,則程序段如下:,則程序段如下:MOV BX,2000HMOV AL,04HXLAT18H34H05H06H09H2000HBX 04HAL(表首表首)TABLE DS 1604 AL09 則執(zhí)行后,則執(zhí)行后,AL=09H 例:例:設(shè)設(shè)ALAL中有一十六進(jìn)數(shù)字中有一十六進(jìn)數(shù)字(0(09 9、A AF)F),求其對(duì),求其對(duì)應(yīng)的應(yīng)的ASCIIASCII碼。碼。解:解: MOV B

59、X, TABLE MOV AL, 8 XLAT TABLE:DB 30H,31H,32H,33H,34HDB 35H,36H,37H,38H,39HDB 41H,42H,43H,44H,45HDB 46H 問(wèn):?jiǎn)枺?983.地址地址目標(biāo)傳送指令目標(biāo)傳送指令傳送到傳送到1616位目標(biāo)寄存位目標(biāo)寄存器中的是器中的是存儲(chǔ)器操存儲(chǔ)器操作數(shù)的地址作數(shù)的地址,而不,而不是它的內(nèi)容。是它的內(nèi)容。獲得存儲(chǔ)器操作數(shù)的獲得存儲(chǔ)器操作數(shù)的段地址或偏移地址。段地址或偏移地址。 99有效地址送寄存器指令有效地址送寄存器指令LEA指針?biāo)图拇嫫骱椭羔標(biāo)图拇嫫骱虳S的指令的指令LDS指針?biāo)图拇嫫骱椭羔標(biāo)图拇嫫骱虴S的指令的指

60、令LES(1)取有效地址指令取有效地址指令格式:格式: LEA R LEA R,src src 功能:功能: R R OFFSET(src)OFFSET(src)即即取存儲(chǔ)器源操作數(shù)有效地址有效地址送入目標(biāo)d例:LEA BX,COUNTER;取COUNTER地址偏移量BX若COUNTER地址偏移量為0002H,則執(zhí)行后BX=0002H 例:例:區(qū)分兩個(gè)指令區(qū)分兩個(gè)指令MOVMOV BX,SI+BP BX,SI+BPLEALEA BX,SI+BP BX,SI+BP 100(2)將地址指針裝到將地址指針裝到DS和另一和另一個(gè)寄存器的指令個(gè)寄存器的指令格式格式:LDS RLDS R,src src

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論