微機(jī)基礎(chǔ)-204_第1頁
微機(jī)基礎(chǔ)-204_第2頁
微機(jī)基礎(chǔ)-204_第3頁
微機(jī)基礎(chǔ)-204_第4頁
微機(jī)基礎(chǔ)-204_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、南京理工大學(xué) 王茂森 微機(jī)原理及應(yīng)用微機(jī)原理及應(yīng)用 南京理工大學(xué) 王茂森 2 8088/868088/86的指令系統(tǒng)的指令系統(tǒng) 本章主要內(nèi)容:本章主要內(nèi)容: 2.1 8088/862.1 8088/86的尋址方式的尋址方式 2.2 2.2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 2.3 2.3 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 2.4 2.4 邏輯運(yùn)算與移位指令邏輯運(yùn)算與移位指令 2.5 2.5 串操作類指令串操作類指令 2.6 2.6 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 2.7 2.7 處理器控制類指令處理器控制類指令 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 指令系統(tǒng)指令系統(tǒng) 指令系統(tǒng)是指微處理器所能執(zhí)行的各種

2、指令的集合。指令系統(tǒng)是指微處理器所能執(zhí)行的各種指令的集合。 不同的微處理器有不同的指令系統(tǒng)。不同的微處理器有不同的指令系統(tǒng)。 8088/86指令系統(tǒng)的特點(diǎn):指令系統(tǒng)的特點(diǎn): v 指令系統(tǒng)向上兼容指令系統(tǒng)向上兼容 v 采用變字節(jié)指令格式采用變字節(jié)指令格式 v 尋址能力強(qiáng)尋址能力強(qiáng) v 具有處理多種數(shù)據(jù)類型的能力具有處理多種數(shù)據(jù)類型的能力 v 支持構(gòu)成多處理器系統(tǒng)支持構(gòu)成多處理器系統(tǒng) 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8088/8086的指令格式 指令指令:由:由操作碼操作碼和和操作數(shù)操作數(shù)兩部分組成。兩部分組成。 操作碼:操作碼:指示計(jì)算機(jī)執(zhí)行什么操作。指示計(jì)算機(jī)執(zhí)行什么操作。 操作數(shù):操

3、作數(shù):指明參加操作的數(shù)本身或者操作數(shù)所在的地址。指明參加操作的數(shù)本身或者操作數(shù)所在的地址。 指令指令具體構(gòu)成一般如下:具體構(gòu)成一般如下: 指令助記符指令助記符 目的操作數(shù)目的操作數(shù) ,源操作數(shù)源操作數(shù) 例如:例如:MOV AX, BX 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 所謂尋址就是尋找操作數(shù)的地址。所謂尋址就是尋找操作數(shù)的地址。 尋址方式尋址方式:根據(jù)操作數(shù)地址尋找操作數(shù)的方式就是尋址方式。根據(jù)操作數(shù)地址尋找操作數(shù)的方式就是尋址方式。 操作數(shù)可能在哪里呢?操作數(shù)可能在哪里呢? 1 1)操作數(shù)包含在指令中)操作數(shù)包含在指令中 2 2)在)在CPUCPU內(nèi)部的某個(gè)寄存器中內(nèi)部的某個(gè)寄存器中

4、3 3)在存儲(chǔ)器(內(nèi)存的數(shù)據(jù)區(qū))中)在存儲(chǔ)器(內(nèi)存的數(shù)據(jù)區(qū))中 4 4)在)在I/OI/O接口中接口中 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 尋址方式尋址方式 對(duì)應(yīng)操作數(shù)所在四種可能,有以下四種基本尋址方式: 1)操作數(shù)包含在指令中立即尋址立即尋址 2)在CPU內(nèi)部的某個(gè)寄存器中寄存器尋址寄存器尋址 3)在存儲(chǔ)器(內(nèi)存的數(shù)據(jù)區(qū))中存儲(chǔ)器尋址存儲(chǔ)器尋址 4)在I/O接口中I/OI/O端口尋址端口尋址 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 1)立即尋址)立即尋址 操作數(shù)直接包含在指令中,緊跟在操作碼之后并和操作碼一操作數(shù)直接包含在指令中,緊跟在操作碼之后并和操作碼一 起存放在代碼段區(qū)域中起存放

5、在代碼段區(qū)域中,因而立即數(shù)總是和操作碼一起被取,因而立即數(shù)總是和操作碼一起被取 入入BIU(Bus Interface Unit BIU(Bus Interface Unit 總線接口總線接口) )的指令隊(duì)列里,在指的指令隊(duì)列里,在指 令執(zhí)行時(shí)不再需要訪問存儲(chǔ)器,所以令執(zhí)行時(shí)不再需要訪問存儲(chǔ)器,所以速度快速度快。 立即數(shù)可以是立即數(shù)可以是8 8位的,也可以是位的,也可以是1616位的。位的。 規(guī)定立即數(shù)只能是整數(shù)、只能作源操作數(shù)。規(guī)定立即數(shù)只能是整數(shù)、只能作源操作數(shù)。 立即尋址方式主要用于給寄存器賦值。立即尋址方式主要用于給寄存器賦值。 例如:例如: MOV ALMOV AL,80H80H M

6、OV AX MOV AX,8080H8080H 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 2)寄存器尋址)寄存器尋址 操作數(shù)存放在指令規(guī)定的寄存器中,寄存器名包操作數(shù)存放在指令規(guī)定的寄存器中,寄存器名包 含在指令中含在指令中。 操作數(shù)可以是操作數(shù)可以是16位的,也可以是位的,也可以是8位的。位的。 對(duì)對(duì)16位的操作數(shù),位的操作數(shù),需用需用AX(累加器累加器)、BX(基數(shù)基數(shù))、CX(計(jì)計(jì) 數(shù)器數(shù)器)、DX(數(shù)據(jù)數(shù)據(jù))、SI(源變址源變址)、DI(目的變址目的變址)、BP(基數(shù)指基數(shù)指 針針)、SP(堆棧指針堆棧指針)等等16位通用寄存器位通用寄存器, 段寄存器段寄存器CS(代碼(代碼 段)、段)

7、、DS(數(shù)據(jù)段)、(數(shù)據(jù)段)、SS(堆棧段)和(堆棧段)和ES(附加段附加段)僅用在僅用在 部分傳送指令中部分傳送指令中)。 對(duì)于對(duì)于8位的操作數(shù),可用位的操作數(shù),可用AH、AL、BH、BL、CH、CL、 DH、DL等等 8位寄存器。位寄存器。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 例如:MOV BX,AX ADD AL,BL BX AX 由于寄存器在處理器內(nèi)部,傳輸數(shù)據(jù)不需要通 過BIU,所以采用寄存器尋址方式可以提高工作 效率。對(duì)于那些需要經(jīng)常存取的操作數(shù),采用寄 存器尋址方式較為合適。 2)寄存器尋址)寄存器尋址 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址 存儲(chǔ)

8、器尋址存儲(chǔ)器尋址: : 操作數(shù)在內(nèi)存的數(shù)據(jù)段中,這時(shí)指令操作數(shù)在內(nèi)存的數(shù)據(jù)段中,這時(shí)指令 中的操作數(shù)包含著此操作數(shù)的地址中的操作數(shù)包含著此操作數(shù)的地址。 在在8088/80868088/8086管理的內(nèi)存中,內(nèi)存地址由段基地管理的內(nèi)存中,內(nèi)存地址由段基地 址和段內(nèi)偏移量?jī)刹糠纸M成。由于操作數(shù)一般是址和段內(nèi)偏移量?jī)刹糠纸M成。由于操作數(shù)一般是 在數(shù)據(jù)段在數(shù)據(jù)段DSDS中,段基地址默認(rèn)在中,段基地址默認(rèn)在DSDS段寄存器中。段寄存器中。 在指令的操作數(shù)部分規(guī)定的地址是段內(nèi)偏移量在指令的操作數(shù)部分規(guī)定的地址是段內(nèi)偏移量。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址 適應(yīng)要處理的

9、各種適應(yīng)要處理的各種數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的需的需 要,段內(nèi)偏移量可以有多種方式給出。要,段內(nèi)偏移量可以有多種方式給出。 根據(jù)給出段內(nèi)偏移量(又稱有效根據(jù)給出段內(nèi)偏移量(又稱有效 偏移地址偏移地址EAEA)方式的不同,存儲(chǔ)器尋)方式的不同,存儲(chǔ)器尋 址方式又有以下五種方式之分:址方式又有以下五種方式之分: 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址- 直接尋址直接尋址 操作數(shù)在存儲(chǔ)器中,其偏移地址由指令直接給出操作數(shù)在存儲(chǔ)器中,其偏移地址由指令直接給出。 例如:例如: MOV AX,2000H ;是將;是將DS段中段中2000H單元內(nèi)容送單元內(nèi)容送AL 中,中,2001H單元

10、內(nèi)容送單元內(nèi)容送AH中。中。(注意注意: 必需必需 ) 如果對(duì)其他段寄存器所指出的存儲(chǔ)區(qū)進(jìn)行直接尋址,則在如果對(duì)其他段寄存器所指出的存儲(chǔ)區(qū)進(jìn)行直接尋址,則在 本條指令前必須用前綴指出段寄存器名。本條指令前必須用前綴指出段寄存器名。在在8088/8086中允許中允許 段超越,即允許操作數(shù)在代碼段、堆棧段或附加段的區(qū)域中。段超越,即允許操作數(shù)在代碼段、堆棧段或附加段的區(qū)域中。 例如:例如: CS:MOV BX,3000H ;是將;是將CS段的段的3000H和和3001H 兩單元內(nèi)容送兩單元內(nèi)容送BX中。中。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址- 直接尋址直接尋址 例

11、如:MOV AX,1000H,已知DS=3000H 12H 34H 10H 00H 操作 碼 AX AH AL 代碼段數(shù)據(jù)段 31000H 34H12H 3000H*10H =30000H 1000H 31000H 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址- 寄存器間接尋址寄存器間接尋址 寄存器間接尋址寄存器間接尋址:操作數(shù)的有效偏移地址存放在寄存器:操作數(shù)的有效偏移地址存放在寄存器 中,即以寄存器內(nèi)容間接指示內(nèi)存操作數(shù)的偏移地址。中,即以寄存器內(nèi)容間接指示內(nèi)存操作數(shù)的偏移地址。 可用于間接尋址的寄存器有:可用于間接尋址的寄存器有:SI、DI、BX、BP。 所使用的段

12、寄存器由指令中的間址寄存器確定。所使用的段寄存器由指令中的間址寄存器確定。 v若用若用BX、SI、DI寄存器間址,則寄存器間址,則操作數(shù)在當(dāng)前數(shù)據(jù)段操作數(shù)在當(dāng)前數(shù)據(jù)段中,中, 即段地址在即段地址在DS中。中。 v若用若用BP間址,則間址,則操作數(shù)在堆棧段操作數(shù)在堆棧段SS中。中。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址- 寄存器間接尋址寄存器間接尋址 例:例:MOV CX,BX;已知;已知DS=3000H,BX=1000H 解:已知段地址和偏移地址,則存儲(chǔ)單元的物理地址為:解:已知段地址和偏移地址,則存儲(chǔ)單元的物理地址為: 30000H + 1000H = 3100

13、0H CX CH CL 12H 34H 操作 碼 代碼段數(shù)據(jù)段 31000H 34H12H 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址- 寄存器間接尋址寄存器間接尋址 寄存器間址通常用來對(duì)一維數(shù)據(jù)或表格進(jìn)行處理,寄存器間址通常用來對(duì)一維數(shù)據(jù)或表格進(jìn)行處理, 這時(shí)只要改變間址寄存器中的內(nèi)容,用一條寄存器這時(shí)只要改變間址寄存器中的內(nèi)容,用一條寄存器 間址指令就可對(duì)連續(xù)的存儲(chǔ)單元進(jìn)行操作。間址指令就可對(duì)連續(xù)的存儲(chǔ)單元進(jìn)行操作。 循環(huán)程序設(shè)計(jì)中,也多用間接尋址。循環(huán)程序設(shè)計(jì)中,也多用間接尋址。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址-(寄存器相對(duì)尋址

14、寄存器相對(duì)尋址)變址尋址變址尋址 操作數(shù)在存儲(chǔ)器中操作數(shù)在存儲(chǔ)器中,其偏移地址是指定的寄存器的內(nèi)容,其偏移地址是指定的寄存器的內(nèi)容 與指令中給出的位移量相加之和。段地址依據(jù)使用的寄與指令中給出的位移量相加之和。段地址依據(jù)使用的寄 存器的不同而不同。使用寄存器存器的不同而不同。使用寄存器BX、SI、DI時(shí)約定為時(shí)約定為 DS,使用寄存器,使用寄存器BP時(shí)約定為時(shí)約定為SS。 例如:例如:MOV BX+6,AL 或或 MOV 6BX,AL MOV BP+6,AX 或或 MOV 6BP,AX MOV AX,COUNT SI BXBX BPBP SISI DIDI EA = 8位偏移量位偏移量 16位

15、偏移量位偏移量 + 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址-(寄存器相對(duì)尋址寄存器相對(duì)尋址)變址尋址變址尋址 變址尋址的速度比直接尋址慢,因變址尋址的速度比直接尋址慢,因CPU要多執(zhí)行一要多執(zhí)行一 次加法。次加法。 變址尋址通常用來訪問一維數(shù)組中的元素,位移量變址尋址通常用來訪問一維數(shù)組中的元素,位移量 用來確定數(shù)組的起點(diǎn),間址寄存器的值選擇一個(gè)元用來確定數(shù)組的起點(diǎn),間址寄存器的值選擇一個(gè)元 素。素。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址- 基址加變址尋址基址加變址尋址 操作數(shù)在存儲(chǔ)器中操作數(shù)在存儲(chǔ)器中,其偏移地址是指令中指定的基址寄存

16、器和,其偏移地址是指令中指定的基址寄存器和 變址寄存器的內(nèi)容相加之和。段地址由基址寄存器約定在哪一變址寄存器的內(nèi)容相加之和。段地址由基址寄存器約定在哪一 個(gè)段寄存器中?;肥褂眉拇嫫鱾€(gè)段寄存器中。基址使用寄存器BX時(shí)約定為時(shí)約定為DS、使用寄存器、使用寄存器 BP時(shí)約定為時(shí)約定為SS。 例如:MOV BX+SI,AX 或MOV BXSI,AX BXBX BPBP EA = + SISI DIDI 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址- 基址變址相對(duì)尋址基址變址相對(duì)尋址 操作數(shù)在存儲(chǔ)器中,其偏移地址是指令中指定的基址寄存器和變,其偏移地址是指令中指定的基址寄存器和變

17、 址寄存器的內(nèi)容與位移量址寄存器的內(nèi)容與位移量3項(xiàng)相加之和。段地址由基址寄存器項(xiàng)相加之和。段地址由基址寄存器 約定在哪一個(gè)段寄存器中。基址使用寄存器約定在哪一個(gè)段寄存器中。基址使用寄存器BX時(shí)約定為時(shí)約定為DS、 使用寄存器使用寄存器BP時(shí)約定為時(shí)約定為SS。 例如:MOV BX+SI+5,AX 或MOV 5BXSI,AX BXBX BPBP EA = 8位偏移量位偏移量 16位偏移量位偏移量 + SISI DIDI + 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 3) 存儲(chǔ)器尋址存儲(chǔ)器尋址- 基址變址相對(duì)尋址基址變址相對(duì)尋址 由于基址和變址寄存器中的內(nèi)容都可以修改,所以基址由于基址和變址寄存器中

18、的內(nèi)容都可以修改,所以基址 加變址方式和基址加變址相對(duì)尋址方式常用來處理二維加變址方式和基址加變址相對(duì)尋址方式常用來處理二維 數(shù)組。數(shù)組。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 4)I/O端口尋址端口尋址 操作數(shù)存放在某個(gè)操作數(shù)存放在某個(gè)I/O端口中,指令中指出操作數(shù)所在的端口中,指令中指出操作數(shù)所在的 端口。端口。 8088/8086CPU的端口操作指令只有輸入和輸出兩條指的端口操作指令只有輸入和輸出兩條指 令令: IN OUT。 例如:例如: IN AL,5 OUT 32H,AL 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8088/8086指令尋址方式小結(jié) (1 1)立即尋址)立即尋址 (

19、2 2)寄存器尋址)寄存器尋址 (3 3)存儲(chǔ)器尋址)存儲(chǔ)器尋址 1 1)直接尋址)直接尋址 2 2)寄存器間址)寄存器間址 3 3)變址尋址)變址尋址 4 4)基址加變址尋址)基址加變址尋址 5 5)基址加變址相對(duì)尋址)基址加變址相對(duì)尋址 (4 4)I/OI/O端口尋址端口尋址 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8088/8086指令的編碼組成 8088/8086采用了變字節(jié)的指令格式,指令長(zhǎng)度最短采用了變字節(jié)的指令格式,指令長(zhǎng)度最短 的僅的僅1個(gè)字節(jié),最長(zhǎng)的占個(gè)字節(jié),最長(zhǎng)的占6個(gè)字節(jié)。指令編碼由操作碼、個(gè)字節(jié)。指令編碼由操作碼、 尋址方式和操作數(shù)三部分組成。尋址方式和操作數(shù)三部分組成

20、。 通常,指令的第一字節(jié)為操作碼,規(guī)定指令的操作類型通常,指令的第一字節(jié)為操作碼,規(guī)定指令的操作類型; ; 第二字節(jié)規(guī)定操作數(shù)的尋址方式第二字節(jié)規(guī)定操作數(shù)的尋址方式; ; 之后的第之后的第3-63-6字節(jié),依據(jù)指令的不同而取舍,可變字節(jié)指令主字節(jié),依據(jù)指令的不同而取舍,可變字節(jié)指令主 要體現(xiàn)在這里,這部分一般用來指出存儲(chǔ)器操作數(shù)地址的偏要體現(xiàn)在這里,這部分一般用來指出存儲(chǔ)器操作數(shù)地址的偏 移量或立即數(shù)。移量或立即數(shù)。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8088/8086指令的編碼組成 操作碼操作碼/尋址方式字節(jié)格式如下:尋址方式字節(jié)格式如下: D7D6D5D4D3D2D1D0D7D6D5

21、D4D3D2D1D0 OPCODEDWMODREGR/M 第一字節(jié)中:第一字節(jié)中:6 6位位 OPCODEOPCODE可表示可表示6464個(gè)不同的操作個(gè)不同的操作 ; W指示操作數(shù)類型,指示操作數(shù)類型,W=1(字),(字),W=0(字節(jié));(字節(jié)); D指示操作數(shù)的傳送方向,指示操作數(shù)的傳送方向, D=1,寄存器操作數(shù)為源操作數(shù),寄存器操作數(shù)為源操作數(shù) D=0,寄存器操作數(shù)為目的操作數(shù),寄存器操作數(shù)為目的操作數(shù) 第一字節(jié)第一字節(jié) 第二字節(jié)第二字節(jié) 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8088/8086指令的編碼組成 第二字節(jié)指出所用的操作數(shù)第二字節(jié)指出所用的操作數(shù) (源,目的)存放的位置,

22、(源,目的)存放的位置, 以及存儲(chǔ)器操作數(shù)有效地址以及存儲(chǔ)器操作數(shù)有效地址 的計(jì)算方法。的計(jì)算方法。 D5D3的的REG 字段規(guī)定一字段規(guī)定一 個(gè)寄存器操作數(shù),由第一字個(gè)寄存器操作數(shù),由第一字 節(jié)的節(jié)的D1位決定作為源還是位決定作為源還是 目的操作數(shù)。目的操作數(shù)。 REGW=0W=1 000ALAX 001CLCX 010DLDX 011BLBX 100AHSP 101CHBP 110DHSI 111BHDI 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8088/8086指令的編碼組成 D7、D6 的的MOD字段用來區(qū)字段用來區(qū) 分分另一個(gè)操作數(shù)另一個(gè)操作數(shù)是存儲(chǔ)器操是存儲(chǔ)器操 作數(shù)作數(shù)M還是寄存

23、器操作數(shù)還是寄存器操作數(shù)R, 若是存儲(chǔ)器操作數(shù)則進(jìn)一步若是存儲(chǔ)器操作數(shù)則進(jìn)一步 指出存儲(chǔ)器操作數(shù)地址位移指出存儲(chǔ)器操作數(shù)地址位移 量的字節(jié)數(shù)。量的字節(jié)數(shù)。 MOD方式方式位移量位移量 00M無 01M8位 10M16位 11R/ 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8088/8086指令的編碼組成 R/M字段由字段由MOD字段控制,若字段控制,若MOD=11,則,則 R/M字段指出第二操作數(shù)寄存器的名稱;字段指出第二操作數(shù)寄存器的名稱; 若若MOD=00,01,10,則,則R/M字段指出如何字段指出如何 計(jì)算存儲(chǔ)器操作數(shù)地址。計(jì)算存儲(chǔ)器操作數(shù)地址。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室

24、8088/8086指令的編碼組成 MOD 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)W=0W=1 R/M0001101111 000BX+SIBX+SI+D8BX+SI+D16ALAX 001BX+DIBX+DI+D8BX+DI+D16CLCX 010BP+SIBP+SI+D8BP+SI+D16DLDX 011BP+DIBP+DI+D8BP+DI+D16BLBX 100SISI+D8SI+D16AHSP 101DIDI+D8DI+D16CHBP 110BPBP+D8BP+D16DHSI 111BXBX+D8BX+D16BHDI 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 8086/8088指令系統(tǒng) 8088/808

25、6指令按功能分為以下六類: 一、一、數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令 三、邏輯運(yùn)算與移位指令三、邏輯運(yùn)算與移位指令 四、串操作指令四、串操作指令 五、控制轉(zhuǎn)移指令五、控制轉(zhuǎn)移指令 六、處理器控制指令六、處理器控制指令 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 一、數(shù)據(jù)傳送類指令 不論是專用計(jì)算機(jī),還是通用計(jì)算機(jī),也不不論是專用計(jì)算機(jī),還是通用計(jì)算機(jī),也不 管是數(shù)值計(jì)算或信息處理,還是實(shí)時(shí)控制,都需管是數(shù)值計(jì)算或信息處理,還是實(shí)時(shí)控制,都需 要傳送數(shù)據(jù)。因此,數(shù)據(jù)傳送是最基本、最主要要傳送數(shù)據(jù)。因此,數(shù)據(jù)傳送是最基本、最主要 的操作。數(shù)據(jù)傳送類指令也是使用頻率最高的。的操

26、作。數(shù)據(jù)傳送類指令也是使用頻率最高的。 傳送類指令的特點(diǎn)是把數(shù)據(jù)從計(jì)算機(jī)的一個(gè)傳送類指令的特點(diǎn)是把數(shù)據(jù)從計(jì)算機(jī)的一個(gè) 地方傳送到另一個(gè)地方。把數(shù)據(jù)的原來所在地稱地方傳送到另一個(gè)地方。把數(shù)據(jù)的原來所在地稱 為為“源源” SRC ,要接收數(shù)據(jù)的地方稱為要接收數(shù)據(jù)的地方稱為“目的地目的地” DST 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令用于實(shí)現(xiàn)用于實(shí)現(xiàn)CPU內(nèi)部寄存器之間、寄存器與存內(nèi)部寄存器之間、寄存器與存 儲(chǔ)器之間、累加器與儲(chǔ)器之間、累加器與I/O端口之間以及立即數(shù)到寄存器或端口之間以及立即數(shù)到寄存器或 存儲(chǔ)器的數(shù)據(jù)傳送,可按字或字節(jié)進(jìn)行數(shù)據(jù)傳送。存儲(chǔ)器的數(shù)據(jù)傳送,可按

27、字或字節(jié)進(jìn)行數(shù)據(jù)傳送。 數(shù)據(jù)傳送類指令共有數(shù)據(jù)傳送類指令共有14條,分為以下條,分為以下4小類:小類: (1)通用傳送指令:通用傳送指令: (2)累加器專用傳送指令累加器專用傳送指令 (3) 地址傳送指令地址傳送指令 (4) 標(biāo)志傳送指令標(biāo)志傳送指令 注:注:除特別說明外,數(shù)據(jù)傳送類指令一般不影響標(biāo)志位。除特別說明外,數(shù)據(jù)傳送類指令一般不影響標(biāo)志位。 一、數(shù)據(jù)傳送類指令 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 (1) 通用傳送指令 MOV DST,SRC PUSH SRC POP DST XCHG DST,SRC 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 通用傳送指令MOV 格式:格式: MOV

28、 dst, src 功能:功能:把一個(gè)字節(jié)或一個(gè)字操作數(shù)從源傳送到目的地把一個(gè)字節(jié)或一個(gè)字操作數(shù)從源傳送到目的地(源源 保持不變保持不變) 通用傳送指令的操作數(shù)及其傳送方向如圖所示:通用傳送指令的操作數(shù)及其傳送方向如圖所示: 立即數(shù) IMM 存儲(chǔ)器 MEM 通用寄存 器REG DS ES SS (CS除外) 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 通用傳送指令MOV 該指令有如下 幾種種形式: (1) MOV BX, AX; 通用寄存器間進(jìn)行傳送 (2) MOV DX, 2000H ; 立即數(shù)送通用寄存器 (3) MOV WORD PTR BX, 2400H ; 立即數(shù)送存儲(chǔ)器 (4) MOV

29、 BX, AX ; 通用寄存器送存儲(chǔ)器 (5) MOV AX, BP+SI+5 ; 存儲(chǔ)器送通用寄存器 (6) MOV DS, AX ; 通用寄存器送段寄存器 (CS除外) 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 通用傳送指令MOV 使用該指令需注意以下幾點(diǎn): (1) 源和目的操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù) (2) 兩操作數(shù)的位數(shù)、類型和屬性要一致 如: MOV AX,BL (3) 操作數(shù)不能出現(xiàn)二義性 如:MOV BX, 1 操作數(shù)的類型不明確(字/字節(jié)?) (4) CS,IP和立即數(shù)不能作目的操作數(shù); (5) 不能直接用立即數(shù)給段寄存器賦值 (6)不能在段寄存器間直接傳送數(shù)據(jù) 相關(guān)例:見P3

30、0 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 堆棧操作指令PUSH 格式:格式:PUSH src 功能:功能:將通用寄存器、段寄存器或存儲(chǔ)器中的一個(gè)字壓入棧頂。將通用寄存器、段寄存器或存儲(chǔ)器中的一個(gè)字壓入棧頂。 SP=0040H SP=003EH 12 34 1234 AH AL 設(shè)AX=1234H,下圖是執(zhí)行PUSH AX的具體過程(見書 P31,先減量修改指針再傳送): 執(zhí)行前執(zhí)行后 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 堆棧操作指令POP 格式:格式: POP dst 功能:功能:將將SP所指向的棧頂?shù)囊粋€(gè)字彈出給通用寄存器、段所指向的棧頂?shù)囊粋€(gè)字彈出給通用寄存器、段 寄存器寄存器(CS

31、除外除外)。同時(shí)進(jìn)行修改堆棧指針的操作,。同時(shí)進(jìn)行修改堆棧指針的操作, 即:即: SPSP+2 例如:POP DX POP CX (過程見書P32,先傳送再增量修改指針) 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 數(shù)據(jù)交換指令XCHG 格式:格式:XCHG dst, src 功能:功能:將源和目的操作數(shù)(字將源和目的操作數(shù)(字/字節(jié))中的內(nèi)容交換。字節(jié))中的內(nèi)容交換。 注意:注意:交換只能在通用寄存器之間、通用寄存器和存儲(chǔ)器之間進(jìn)行。即:交換只能在通用寄存器之間、通用寄存器和存儲(chǔ)器之間進(jìn)行。即: XCHG REG,REG XCHG REG,MEM XCHG MEM,REG 例如:將數(shù)據(jù)段中的字變

32、量例如:將數(shù)據(jù)段中的字變量DATA1和和DATA2互換互換. MOV AX,DATA1 XCHG AX,DATA2 MOV DATA1,AX 不可在兩存儲(chǔ)器之間不可在兩存儲(chǔ)器之間 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 (2)累加器專用傳送指令 IN AX(AL),n(DX) OUT n(DX), AX(AL) XLAT 表名 (查表轉(zhuǎn)換指令) 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 累加器專用傳送指令I(lǐng)N,OUT 格式:格式: IN Acc, Port 或或 IN Acc, DX 格式:格式: OUT Port, Acc 或或OUT DX, Acc 功能功能:對(duì)于對(duì)于8088,將一個(gè)字節(jié)由輸

33、入端口傳送至,將一個(gè)字節(jié)由輸入端口傳送至AL;對(duì)于;對(duì)于8086,還,還 可從端口進(jìn)行字的輸入輸出,可將一個(gè)字由輸入端口傳送至可從端口進(jìn)行字的輸入輸出,可將一個(gè)字由輸入端口傳送至 AX。 注意:注意:端口地址若是由指令中的端口地址若是由指令中的port所規(guī)定,則只可尋址所規(guī)定,則只可尋址0255,端,端 口地址若用口地址若用DX間址,則允許尋址間址,則允許尋址64K個(gè)輸入端口。個(gè)輸入端口。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 累加器專用傳送指令I(lǐng)N,OUT 例2: MOV DX, 330H IN AL, DX OUT DX, AL 端口地址超過端口地址超過255,必須用,必須用DX間間 址

34、訪問。這里的址訪問。這里的DX表示的是寄存表示的是寄存 器間接尋址的外設(shè)地址,而不是器間接尋址的外設(shè)地址,而不是 寄存器尋址。寄存器尋址。 例1: IN AL, 06H OUT 06H, AL 端口地址在端口地址在(00HFFH) 之間,可以用直接輸入之間,可以用直接輸入 輸出指令輸出指令 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 累加器專用傳送指令 查表轉(zhuǎn)換指令XLAT 格式:格式:XLAT source-table 功能:功能:該指令是從存放于內(nèi)存的轉(zhuǎn)換表中查找出一個(gè)該指令是從存放于內(nèi)存的轉(zhuǎn)換表中查找出一個(gè) 字節(jié)的內(nèi)容,用以取代字節(jié)的內(nèi)容,用以取代AL寄存器中的內(nèi)容。它寄存器中的內(nèi)容。它 的

35、操作數(shù)都是隱含的,在此指令之前,要將的操作數(shù)都是隱含的,在此指令之前,要將BX 指向轉(zhuǎn)換表的起點(diǎn)。指向轉(zhuǎn)換表的起點(diǎn)。AL中的內(nèi)容用做查表時(shí)的中的內(nèi)容用做查表時(shí)的 索引,查出表中偏移量等于索引,查出表中偏移量等于AL中的二進(jìn)制值的中的二進(jìn)制值的 那個(gè)單元的內(nèi)容,并用其取代那個(gè)單元的內(nèi)容,并用其取代AL中原來的內(nèi)容。中原來的內(nèi)容。 即即 BX+ALAL。 該指令可以方便地將一種代碼轉(zhuǎn)換為另一該指令可以方便地將一種代碼轉(zhuǎn)換為另一 種代碼。種代碼。 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 累加器專用傳送指令 查表轉(zhuǎn)換指令XLAT 例:從例:從5號(hào)端口輸入一位十進(jìn)制數(shù)碼,將其轉(zhuǎn)換后再輸號(hào)端口輸入一位十進(jìn)

36、制數(shù)碼,將其轉(zhuǎn)換后再輸 出到出到10號(hào)端口號(hào)端口(見見P33) MOV BX, OFFSET TABLE IN AL, 5 XLAT TABLE OUT 10, AL 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 (3)地址傳送指令 LEA DST,SRC LDS DST,SRC LES DST,SRC 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 地址傳送指令LEA 1偏移地址傳送指令 格式:LEA REG16,MEM 功能:將存儲(chǔ)單元的偏移地址送16位通用寄存器。該指令常用來給某 個(gè)16位通用寄存器設(shè)置地址初值,以便從此開始存取數(shù)據(jù)。 例:LEA BX, 1200H; 執(zhí)行后BX=1200H 另外:L

37、EA BX, TABLE MOV BX, OFFSET TABLE 作用相同 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 地址傳送指令LDS,LES 2 2傳送數(shù)據(jù)段偏移地址及數(shù)據(jù)段段地址指令 格式:LDS REG16,MEM32 功能:將存放在存儲(chǔ)器中的32位地址指針分別傳送到兩個(gè)寄存 器中。高位地址內(nèi)容送DS,低位地址內(nèi)容送指令中給出的寄存 器。 例:LDS SI,BX; 則將BX+3和BX+2送DS,BX+1和BX送SI 3 3傳送附加段偏移地址和附加段段地址指令傳送附加段偏移地址和附加段段地址指令 格式:LES REG16,MEM32 功能:除了將段地址送ES外,其余和LDS指令類似。 例

38、:LES DI,DWORD PTR BX 則將DS段的BX+3和BX+2送ES,BX+1和BX送DI 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 (4)標(biāo)志位傳送指令 LAHF SAHF PUSHF POPF 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 標(biāo)志傳送指令 1標(biāo)志寄存器低8位送AH 格式: LAHF 功能:將標(biāo)志寄存器低8位中的SF,ZF, AF,PF,CF送至AH中的相應(yīng)位。 AH內(nèi)容送標(biāo)志寄存器低8位 格式:SAHF 說明:影響標(biāo)志 2標(biāo)志寄存器內(nèi)容進(jìn)棧 格式:PUSHF 標(biāo)志寄存器內(nèi)容出棧 格式:POPF 說明:影響標(biāo)志 PUSHF和POPF指令一般用在子程序和中斷 處理程序的首尾。

39、南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 標(biāo)志傳送指令 在8088/8086指令系統(tǒng)中,沒有直接改變跟蹤標(biāo)志T 的指令,故要改變T標(biāo)志,須將標(biāo)志壓入堆棧,改變 堆棧中對(duì)應(yīng)D8位的值,然后再從堆棧中彈出標(biāo)志。 如: PUSHF POP AX OR AH,01H PUSH AX POPF O D IT S ZAPC 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 作業(yè)5 P65:2-1、2、7 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 補(bǔ)充: 80 x86系列指令系統(tǒng) 80 x8680 x86及其兼容芯片是應(yīng)用最多的處理器芯片,屬于及其兼容芯片是應(yīng)用最多的處理器芯片,屬于CISCCISC型的指令型的指令 系統(tǒng)

40、。系統(tǒng)。80868086指令指令是是變字長(zhǎng)指令變字長(zhǎng)指令,不同指令的操作碼和尋址方式不同,指,不同指令的操作碼和尋址方式不同,指 令長(zhǎng)度也不一致,每條指令由令長(zhǎng)度也不一致,每條指令由1 16 6個(gè)字節(jié)組成個(gè)字節(jié)組成。以。以8086CPU8086CPU為例說明為例說明 CISCCISC芯片分析指令編碼的特點(diǎn)。芯片分析指令編碼的特點(diǎn)。 前面講的最常用的兩操作數(shù)的傳送、加、減、與、或指令的編碼格式如前面講的最常用的兩操作數(shù)的傳送、加、減、與、或指令的編碼格式如 圖所示。圖所示。 操作碼操作碼 反映該反映該指令的功能指令的功能 OPCODEOPCODE; 類型類型 反映反映操作數(shù)操作數(shù)的的類型類型(字

41、長(zhǎng)等)(字長(zhǎng)等),W,W; 尋址方式尋址方式 反映反映操作數(shù)操作數(shù)的尋的尋址方式址方式,寄存器操作數(shù)的編碼也在,寄存器操作數(shù)的編碼也在 其間其間 D REG MOD R/MD REG MOD R/M; 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 操作數(shù)操作數(shù) 操作數(shù)中的操作數(shù)中的立即數(shù)立即數(shù)、內(nèi)存操作數(shù)中的位移量部分。、內(nèi)存操作數(shù)中的位移量部分。 對(duì)于實(shí)現(xiàn)對(duì)于實(shí)現(xiàn)“寄存器與寄存器,寄存器與存儲(chǔ)器之間寄存器與寄存器,寄存器與存儲(chǔ)器之間”的上述操作的指的上述操作的指 令而言,令而言, 上述上述80868086指令編碼格式可細(xì)化為以下圖所示的格式。指令編碼格式可細(xì)化為以下圖所示的格式。 中中 6 6位位

42、 OPCODEOPCODE可表示可表示6464個(gè)不同的操作個(gè)不同的操作 ; D D 位表示數(shù)據(jù)傳送的方向:位表示數(shù)據(jù)傳送的方向:D=0D=0,寄存器為,寄存器為源操作數(shù)源操作數(shù),D=1D=1,寄存器,寄存器 為為目的操作數(shù)目的操作數(shù) ; W W 位表示操作數(shù)是字還是字節(jié):位表示操作數(shù)是字還是字節(jié):W=1W=1,為,為字操作字操作,W=0W=0,為,為字節(jié)操作字節(jié)操作 中中3 3位位 REG REG 字段的編碼如表字段的編碼如表 : 南京理工大學(xué)機(jī)械工程學(xué)院 自動(dòng)機(jī)實(shí)驗(yàn)室 兩個(gè)操作數(shù)中有兩個(gè)操作數(shù)中有一個(gè)是寄存器一個(gè)是寄存器,其編碼由上表所示;,其編碼由上表所示;另一個(gè)是寄存另一個(gè)是寄存 器或是存儲(chǔ)器器或是存儲(chǔ)器,其指令代碼由第二個(gè)字節(jié)中的,其指令代碼由第二個(gè)字節(jié)中的MODMOD字段字段和和R/MR/M字段決字段決 定定, 如下表所示。如下表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論