計(jì)算機(jī)組成原理-指令系統(tǒng)與匯編語(yǔ)言 (2)_第1頁(yè)
計(jì)算機(jī)組成原理-指令系統(tǒng)與匯編語(yǔ)言 (2)_第2頁(yè)
計(jì)算機(jī)組成原理-指令系統(tǒng)與匯編語(yǔ)言 (2)_第3頁(yè)
計(jì)算機(jī)組成原理-指令系統(tǒng)與匯編語(yǔ)言 (2)_第4頁(yè)
計(jì)算機(jī)組成原理-指令系統(tǒng)與匯編語(yǔ)言 (2)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(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)介

1、College of computer science, SWPU Computer ScienceComputer Science 計(jì)算機(jī)組成原理計(jì)算機(jī)組成原理 College of Computer Science, SWPU 計(jì)算機(jī)組成原理計(jì)算機(jī)組成原理 College of Computer Science, SWPU 低級(jí)語(yǔ)言面向機(jī)器,執(zhí)行速度快,效率高;低級(jí)語(yǔ)言面向機(jī)器,執(zhí)行速度快,效率高; 高級(jí)語(yǔ)言面向問(wèn)題,易理解,易移植。高級(jí)語(yǔ)言面向問(wèn)題,易理解,易移植。 程序設(shè)計(jì)語(yǔ)言是由字、詞和語(yǔ)法規(guī)則構(gòu)成的一個(gè)系統(tǒng)。程序設(shè)計(jì)語(yǔ)言是由字、詞和語(yǔ)法規(guī)則構(gòu)成的一個(gè)系統(tǒng)。 機(jī)器語(yǔ)言機(jī)器語(yǔ)言 匯編語(yǔ)

2、言匯編語(yǔ)言 高級(jí)語(yǔ)言高級(jí)語(yǔ)言 機(jī)器語(yǔ)言:機(jī)器語(yǔ)言:用二進(jìn)制代碼直接表示的語(yǔ)言,用二進(jìn)制代碼直接表示的語(yǔ)言, 是計(jì)算機(jī)唯一能識(shí)別、執(zhí)行的語(yǔ)言是計(jì)算機(jī)唯一能識(shí)別、執(zhí)行的語(yǔ)言 匯編語(yǔ)言:匯編語(yǔ)言:符號(hào)化了的機(jī)器語(yǔ)言(用助記符來(lái)寫(xiě)程序,符號(hào)化了的機(jī)器語(yǔ)言(用助記符來(lái)寫(xiě)程序, 靠匯編程序翻譯成機(jī)器碼才能執(zhí)行)靠匯編程序翻譯成機(jī)器碼才能執(zhí)行) 高級(jí)語(yǔ)言:高級(jí)語(yǔ)言:接近自然英語(yǔ)和數(shù)學(xué)公式的語(yǔ)言(要通接近自然英語(yǔ)和數(shù)學(xué)公式的語(yǔ)言(要通 過(guò)編譯或解釋程序翻譯成機(jī)器碼)過(guò)編譯或解釋程序翻譯成機(jī)器碼) 計(jì)算機(jī)組成原理計(jì)算機(jī)組成原理 College of Computer Science, SWPU 異:異: 【匯編

3、程序匯編程序】:把:把匯編語(yǔ)言匯編語(yǔ)言書(shū)寫(xiě)的程序翻譯成與之等價(jià)的書(shū)寫(xiě)的程序翻譯成與之等價(jià)的 機(jī)器語(yǔ)言程序的翻譯程序。機(jī)器語(yǔ)言程序的翻譯程序。 【編譯程序編譯程序】:把用把用高級(jí)程序設(shè)計(jì)語(yǔ)言高級(jí)程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的源程序,翻書(shū)寫(xiě)的源程序,翻 譯成等價(jià)的機(jī)器語(yǔ)言目標(biāo)程序,然后再執(zhí)行。譯成等價(jià)的機(jī)器語(yǔ)言目標(biāo)程序,然后再執(zhí)行。 【解釋程序解釋程序】:把用把用高級(jí)程序設(shè)計(jì)語(yǔ)言高級(jí)程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的源程序一邊書(shū)寫(xiě)的源程序一邊 解釋成機(jī)器代碼,一邊執(zhí)行的高級(jí)語(yǔ)言程序。解釋成機(jī)器代碼,一邊執(zhí)行的高級(jí)語(yǔ)言程序。 同同: : 三者三者都是翻譯程序都是翻譯程序, ,把用某種語(yǔ)言編寫(xiě)的源程序翻譯把用某種語(yǔ)言編寫(xiě)的源程序

4、翻譯 成目標(biāo)程序成目標(biāo)程序 計(jì)算機(jī)組成原理計(jì)算機(jī)組成原理 College of Computer Science, SWPU 1 指令的 格式 2 指令的 尋址方式 3 Intel8086 指令系統(tǒng) 簡(jiǎn)介 計(jì)算機(jī)組成原理計(jì)算機(jī)組成原理 College of Computer Science, SWPU 指令語(yǔ)句指令語(yǔ)句 偽指令語(yǔ)句偽指令語(yǔ)句 宏指令語(yǔ)句宏指令語(yǔ)句 指令語(yǔ)句格式指令語(yǔ)句格式 標(biāo)號(hào):標(biāo)號(hào): 指令助記符指令助記符 操作數(shù)操作數(shù)1,操作數(shù)操作數(shù)2;注釋?zhuān)蛔⑨?偽指令語(yǔ)句格式偽指令語(yǔ)句格式 名字名字 偽指令助記符偽指令助記符 操作數(shù)操作數(shù) ;注釋?zhuān)蛔⑨?8088/8086的寄存器結(jié)構(gòu)的寄

5、存器結(jié)構(gòu) 8088/8086的寄存器組有的寄存器組有 8個(gè)通用寄存器個(gè)通用寄存器 4個(gè)段寄存器個(gè)段寄存器 1個(gè)標(biāo)志寄存器個(gè)標(biāo)志寄存器 1個(gè)指令指針寄存器個(gè)指令指針寄存器 它們均為它們均為1616位位! ! 圖示圖示 匯編語(yǔ)言程序員看到的處理器,就是寄存器匯編語(yǔ)言程序員看到的處理器,就是寄存器 所以,一定要熟悉這些寄存器的名稱和作用所以,一定要熟悉這些寄存器的名稱和作用 1. 通用寄存器通用寄存器 8088有有8個(gè)通用的個(gè)通用的16位寄存器位寄存器 (1)數(shù)據(jù)寄存器)數(shù)據(jù)寄存器: AX BX CX DX (2)變址寄存器)變址寄存器: SI DI (3)指針寄存器)指針寄存器: BP SP 4個(gè)

6、數(shù)據(jù)寄存器還可以分成高個(gè)數(shù)據(jù)寄存器還可以分成高8位和低位和低8位兩個(gè)獨(dú)位兩個(gè)獨(dú) 立的寄存器,這樣又形成立的寄存器,這樣又形成8個(gè)通用的個(gè)通用的8位寄存器位寄存器 AX: AH ALBX: BH BL CX: CH CLDX: DH DL (1)數(shù)據(jù)寄存器)數(shù)據(jù)寄存器 AX稱為稱為累加器累加器(Accumulator) 使用頻度最高。用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信使用頻度最高。用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信 息等息等 BX稱為稱為基址寄存器基址寄存器(Base address Register) 常用做存放存儲(chǔ)器地址常用做存放存儲(chǔ)器地址 CX稱為稱為計(jì)數(shù)器計(jì)數(shù)器(Counter) 作為循

7、環(huán)和串操作等指令中的隱含計(jì)數(shù)器作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器 DX稱為稱為數(shù)據(jù)寄存器數(shù)據(jù)寄存器(Data register) 常用來(lái)存放雙字長(zhǎng)數(shù)據(jù)的高常用來(lái)存放雙字長(zhǎng)數(shù)據(jù)的高16位,或存放外設(shè)端口地址位,或存放外設(shè)端口地址 (2)變址寄存器)變址寄存器 16位變址寄存器位變址寄存器SI和和DI 常用于存儲(chǔ)器變址尋址方式時(shí)提供地址常用于存儲(chǔ)器變址尋址方式時(shí)提供地址 SI是源地址寄存器(是源地址寄存器(Source IndexSource Index) DI是目的地址寄存器(是目的地址寄存器(Destination IndexDestination Index) 在串操作類(lèi)指令中,在串操作類(lèi)

8、指令中,SI、DI還有較特殊的用法還有較特殊的用法 (3)指針寄存器)指針寄存器 指針寄存器用于尋址內(nèi)存指針寄存器用于尋址內(nèi)存堆棧堆棧內(nèi)的數(shù)據(jù)內(nèi)的數(shù)據(jù) SP為堆棧指針寄存器(為堆棧指針寄存器(Stack Pointer),指示堆棧段指示堆棧段 棧頂?shù)奈恢茫ㄆ频刂罚m數(shù)奈恢茫ㄆ频刂罚?BP為基址指針寄存器(為基址指針寄存器(Base Pointer),表示數(shù)據(jù)在),表示數(shù)據(jù)在 堆棧段中的基地址堆棧段中的基地址 SP和和BP寄存器與寄存器與SS段寄存器聯(lián)合使用以確定堆段寄存器聯(lián)合使用以確定堆 棧段中的存儲(chǔ)單元地址棧段中的存儲(chǔ)單元地址 堆棧堆棧(Stack)是主存中一個(gè)特殊的)是主存中一個(gè)特殊

9、的 區(qū)域,采用區(qū)域,采用“先進(jìn)后出先進(jìn)后出”或或“后進(jìn)先出后進(jìn)先出” 存取操作方式、而不是隨機(jī)存取方式。存取操作方式、而不是隨機(jī)存取方式。 用用8088/80868088/8086形成的微機(jī)系統(tǒng)中,堆形成的微機(jī)系統(tǒng)中,堆 棧區(qū)域被稱為堆棧段棧區(qū)域被稱為堆棧段 2. 指令指針寄存器指令指針寄存器 IP(Instruction Pointer)為指令指針寄存器,)為指令指針寄存器, 指示主存儲(chǔ)器指令的位置指示主存儲(chǔ)器指令的位置 隨著指令的執(zhí)行,隨著指令的執(zhí)行,IP將自動(dòng)修改以指示下一條將自動(dòng)修改以指示下一條 指令所在的存儲(chǔ)器位置指令所在的存儲(chǔ)器位置 IP寄存器是一個(gè)寄存器是一個(gè)專(zhuān)用專(zhuān)用寄存器寄存器

10、 IP寄存器與寄存器與CS段寄存器聯(lián)合使用以確定下一條段寄存器聯(lián)合使用以確定下一條 指令的存儲(chǔ)單元地址指令的存儲(chǔ)單元地址 3. 標(biāo)志寄存器標(biāo)志寄存器 標(biāo)志標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果或控)用于反映指令執(zhí)行結(jié)果或控 制指令執(zhí)行形式制指令執(zhí)行形式 8088處理器的各種標(biāo)志形成了一個(gè)處理器的各種標(biāo)志形成了一個(gè)16位的位的 標(biāo)志寄存器標(biāo)志寄存器FLAGS(程序狀態(tài)字(程序狀態(tài)字PSW寄寄 存器存器) 程序設(shè)計(jì)需要利用標(biāo)志的狀態(tài)程序設(shè)計(jì)需要利用標(biāo)志的狀態(tài) 標(biāo)志寄存器標(biāo)志寄存器-分類(lèi)分類(lèi) 狀態(tài)標(biāo)志狀態(tài)標(biāo)志用來(lái)記錄程序運(yùn)行結(jié)果的狀態(tài)信息,用來(lái)記錄程序運(yùn)行結(jié)果的狀態(tài)信息, 許多指令的執(zhí)行都將相應(yīng)地設(shè)置

11、它許多指令的執(zhí)行都將相應(yīng)地設(shè)置它 CF ZF SF PF OF AF 控制標(biāo)志控制標(biāo)志可由程序根據(jù)需要用指令設(shè)置,用可由程序根據(jù)需要用指令設(shè)置,用 于控制處理器執(zhí)行指令的方式于控制處理器執(zhí)行指令的方式 DF IF TF OF 1115 12 DF 10 IF 9 TF 8 SF 7 ZF 65 AF 43 PF 21 CF 0 標(biāo)志寄存器標(biāo)志寄存器FLAGS 進(jìn)位標(biāo)志進(jìn)位標(biāo)志CF(Carry Flag) 當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借 位(減法)時(shí),進(jìn)位標(biāo)志置位(減法)時(shí),進(jìn)位標(biāo)志置1,即,即CF1; 否則否則CF0 3AH + 7CHB6H,

12、沒(méi)有進(jìn)位:,沒(méi)有進(jìn)位:CF = 0 AAH + 7CH(1)26H,有進(jìn)位:,有進(jìn)位:CF = 1 零標(biāo)志零標(biāo)志ZF(Zero Flag) 若運(yùn)算結(jié)果為若運(yùn)算結(jié)果為0,則,則Z F1; 否則否則Z F0 3AH7CHB6H,結(jié)果不是零:,結(jié)果不是零:Z F0 84H7CH(1)00H,結(jié)果是零:,結(jié)果是零:Z F1 注意:注意:ZF為為1表示的結(jié)果是表示的結(jié)果是0 符號(hào)標(biāo)志符號(hào)標(biāo)志SF(Sign Flag) 運(yùn)算結(jié)果最高位為運(yùn)算結(jié)果最高位為1,則,則SF1; 否則否則SF0 3AH7CHB6H,最高位,最高位D71:SF1 84H7CH(1)00H,最高位,最高位D70:SF0 有符號(hào)數(shù)據(jù)用最

13、高有效位表示數(shù)據(jù)的符號(hào)有符號(hào)數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號(hào) 所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài)所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài) 奇偶標(biāo)志奇偶標(biāo)志PF(Parity Flag) 當(dāng)運(yùn)算結(jié)果最低字節(jié)中當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或的個(gè)數(shù)為零或 偶數(shù)時(shí),偶數(shù)時(shí),PF1;否則;否則PF0 3AH7CHB6H10110110B 結(jié)果中有結(jié)果中有5個(gè)個(gè)“1”,是奇數(shù):是奇數(shù):PF0 PF標(biāo)志僅反映最低標(biāo)志僅反映最低8位中位中“1”的個(gè)數(shù)是的個(gè)數(shù)是 偶或奇,即使是進(jìn)行偶或奇,即使是進(jìn)行16位字操作位字操作 溢出標(biāo)志溢出標(biāo)志OF(Overflow Flag) 若算術(shù)運(yùn)算的結(jié)果有溢出,則若算術(shù)運(yùn)算的結(jié)

14、果有溢出,則OF1; 否則否則 OF0 3AH + 7CHB6H,產(chǎn)生溢出:,產(chǎn)生溢出:OF1 AAH + 7CH(1)26H,沒(méi)有溢出:,沒(méi)有溢出:OF0 什么是溢出什么是溢出? 處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù) 8位表達(dá)的整數(shù)范圍是:位表達(dá)的整數(shù)范圍是:127 128 16位表達(dá)的范圍是:位表達(dá)的范圍是:32767 32768 如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出 有溢出,說(shuō)明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確有溢出,說(shuō)明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確 3AH7CHB6H,就是,就是58124182,已經(jīng)超出,已經(jīng)超出 128127范圍,產(chǎn)生

15、溢出,故范圍,產(chǎn)生溢出,故OF1;補(bǔ)碼;補(bǔ)碼B6H 表達(dá)真值是表達(dá)真值是74,顯然運(yùn)算結(jié)果也不正確,顯然運(yùn)算結(jié)果也不正確 B6H10110110B,最高位為,最高位為1, 作為有符號(hào)數(shù)是負(fù)數(shù)作為有符號(hào)數(shù)是負(fù)數(shù) 對(duì)對(duì)B6H求反加求反加1等于:等于: 01001001B101001010B4AH74 所以,所以,B6H表達(dá)有符號(hào)數(shù)的真值為表達(dá)有符號(hào)數(shù)的真值為74 溢出和進(jìn)位的區(qū)別溢出和進(jìn)位的區(qū)別 溢出標(biāo)志溢出標(biāo)志OF和進(jìn)位標(biāo)志和進(jìn)位標(biāo)志CF是兩個(gè)意義不是兩個(gè)意義不 同的標(biāo)志同的標(biāo)志 進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出 范圍,運(yùn)算結(jié)果仍然正確范圍,運(yùn)算結(jié)果仍然正

16、確 溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出 范圍,運(yùn)算結(jié)果已經(jīng)不正確范圍,運(yùn)算結(jié)果已經(jīng)不正確 溢出和進(jìn)位的對(duì)比溢出和進(jìn)位的對(duì)比 例例1:3AH7CHB6H 無(wú)符號(hào)數(shù)運(yùn)算:無(wú)符號(hào)數(shù)運(yùn)算:58124182 范圍內(nèi),無(wú)進(jìn)位范圍內(nèi),無(wú)進(jìn)位 有符號(hào)數(shù)運(yùn)算:有符號(hào)數(shù)運(yùn)算: 58124182 范圍外,有溢出范圍外,有溢出 例例2:AAH7CH(1)26H 無(wú)符號(hào)數(shù)運(yùn)算:無(wú)符號(hào)數(shù)運(yùn)算:170124294 范圍外,有進(jìn)位范圍外,有進(jìn)位 有符號(hào)數(shù)運(yùn)算:有符號(hào)數(shù)運(yùn)算:8612428 范圍內(nèi),無(wú)溢出范圍內(nèi),無(wú)溢出 溢出和進(jìn)位的應(yīng)用場(chǎng)合溢出和進(jìn)位的應(yīng)用場(chǎng)合 處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí)

17、,按照無(wú)符號(hào)處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無(wú)符號(hào) 數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時(shí),;同時(shí), 根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志OF 應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來(lái)決定。也就應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來(lái)決定。也就 是說(shuō),如果將參加運(yùn)算的操作數(shù)認(rèn)為是無(wú)符號(hào)是說(shuō),如果將參加運(yùn)算的操作數(shù)認(rèn)為是無(wú)符號(hào) 數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要 注意是否溢出注意是否溢出 溢出的判斷溢出的判斷 判斷運(yùn)算結(jié)果是否溢出有一個(gè)簡(jiǎn)單的規(guī)則:判斷運(yùn)算結(jié)果是否溢出有一個(gè)簡(jiǎn)單的規(guī)則: 只有當(dāng)兩個(gè)

18、相同符號(hào)數(shù)相加(包括不同符號(hào)數(shù)只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加(包括不同符號(hào)數(shù) 相減),而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反相減),而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反 時(shí),產(chǎn)生溢出;因?yàn)?,此時(shí)的運(yùn)算結(jié)果顯然不時(shí),產(chǎn)生溢出;因?yàn)?,此時(shí)的運(yùn)算結(jié)果顯然不 正確正確 其他情況下,則不會(huì)產(chǎn)生溢出其他情況下,則不會(huì)產(chǎn)生溢出 例例1:3AH7CHB6H溢出溢出 例例2:AAH7CH無(wú)溢出無(wú)溢出 例例3:3AH7CH無(wú)溢出無(wú)溢出 例例4:AAH7CH2DH溢出溢出 輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志AF(Auxiliary Carry Flag) 3AH7CHB6H,D3有進(jìn)位:有進(jìn)位:AF1 這個(gè)標(biāo)志主要由處理器內(nèi)部使用,這個(gè)標(biāo)志

19、主要由處理器內(nèi)部使用, 用于十進(jìn)制算術(shù)運(yùn)算調(diào)整指令中,用于十進(jìn)制算術(shù)運(yùn)算調(diào)整指令中, 用戶一般不必關(guān)心用戶一般不必關(guān)心 運(yùn)算時(shí)運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或借位時(shí),位(低半字節(jié))有進(jìn)位或借位時(shí), AF1;否則;否則AF 0 方向標(biāo)志方向標(biāo)志DF(Direction Flag) 用于串操作指令中,控制地址的變化方向:用于串操作指令中,控制地址的變化方向: 設(shè)置設(shè)置DF0 0,存儲(chǔ)器地址自動(dòng)增加;,存儲(chǔ)器地址自動(dòng)增加; 設(shè)置設(shè)置DF1 1,存儲(chǔ)器地址自動(dòng)減少,存儲(chǔ)器地址自動(dòng)減少 CLD 指令復(fù)位方向標(biāo)志:指令復(fù)位方向標(biāo)志:DF0 STD 指令置位方向標(biāo)志:指令置位方向標(biāo)志:DF1 中斷允許標(biāo)志中

20、斷允許標(biāo)志IF(Interrupt-enable Flag) 控制可屏蔽中斷是否可以被處理器響應(yīng):控制可屏蔽中斷是否可以被處理器響應(yīng): 設(shè)置設(shè)置IF1,則允許中斷;,則允許中斷; 設(shè)置設(shè)置IF0,則禁止中斷,則禁止中斷 CLI 指令復(fù)位中斷標(biāo)志:指令復(fù)位中斷標(biāo)志:IF0 STI 指令置位中斷標(biāo)志:指令置位中斷標(biāo)志:IF1 該標(biāo)志在后面中斷學(xué)習(xí)過(guò)程很重要!該標(biāo)志在后面中斷學(xué)習(xí)過(guò)程很重要! 陷阱標(biāo)志陷阱標(biāo)志TF(Trap Flag) 用于控制處理器進(jìn)入單步操作方式:用于控制處理器進(jìn)入單步操作方式: 設(shè)置設(shè)置TF0,處理器正常工作;,處理器正常工作; 設(shè)置設(shè)置TF1,處理器單步執(zhí)行指令,處理器單步執(zhí)

21、行指令 單步執(zhí)行指令單步執(zhí)行指令處理器在處理器在每條指令執(zhí)行結(jié)每條指令執(zhí)行結(jié) 束束時(shí),便產(chǎn)生一個(gè)編號(hào)為時(shí),便產(chǎn)生一個(gè)編號(hào)為1的內(nèi)部中斷的內(nèi)部中斷 這種內(nèi)部中斷稱為這種內(nèi)部中斷稱為單步中斷單步中斷 所以所以TF也稱為也稱為單步標(biāo)志單步標(biāo)志 利用單步中斷可對(duì)程序進(jìn)行逐條指令的調(diào)試?yán)脝尾街袛嗫蓪?duì)程序進(jìn)行逐條指令的調(diào)試 這種逐條指令調(diào)試程序的方法就是這種逐條指令調(diào)試程序的方法就是單步調(diào)試單步調(diào)試 8088/8086的存儲(chǔ)器結(jié)構(gòu)的存儲(chǔ)器結(jié)構(gòu) 存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)存儲(chǔ)信息的地方。掌握數(shù)據(jù)是計(jì)算機(jī)存儲(chǔ)信息的地方。掌握數(shù)據(jù)存儲(chǔ)存儲(chǔ) 格式格式,以及存儲(chǔ)器的,以及存儲(chǔ)器的分段管理分段管理對(duì)以后的匯編程序?qū)σ院蟮?/p>

22、匯編程序 設(shè)計(jì)非常重要設(shè)計(jì)非常重要 你能區(qū)別你能區(qū)別寄存器寄存器、存儲(chǔ)器存儲(chǔ)器(主存主存)、外存外存(包括硬盤(pán)、包括硬盤(pán)、 光盤(pán)、磁帶等存儲(chǔ)介質(zhì)光盤(pán)、磁帶等存儲(chǔ)介質(zhì))嗎?嗎? 寄存器、存儲(chǔ)器和外存的區(qū)別寄存器、存儲(chǔ)器和外存的區(qū)別 寄存器寄存器是微處理器(是微處理器(CPU)內(nèi)部)內(nèi)部暫存數(shù)據(jù)暫存數(shù)據(jù)的存儲(chǔ)的存儲(chǔ) 單元,以名稱表示,例如:?jiǎn)卧?,以名稱表示,例如:AX,BX.等等 存儲(chǔ)器存儲(chǔ)器也就是平時(shí)所說(shuō)的也就是平時(shí)所說(shuō)的主存主存,也叫,也叫內(nèi)存內(nèi)存,可直,可直 接與接與CPU進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別 外存外存主要指用來(lái)長(zhǎng)久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì),主要指用來(lái)長(zhǎng)

23、久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì), 常見(jiàn)的有硬盤(pán)、光盤(pán)、磁帶、常見(jiàn)的有硬盤(pán)、光盤(pán)、磁帶、U盤(pán)等。外存的數(shù)據(jù)盤(pán)等。外存的數(shù)據(jù) 只能通過(guò)主存間接地與只能通過(guò)主存間接地與CPU交換數(shù)據(jù)交換數(shù)據(jù) 程序及其數(shù)據(jù)可以長(zhǎng)久存放在外存,在運(yùn)行需要程序及其數(shù)據(jù)可以長(zhǎng)久存放在外存,在運(yùn)行需要 時(shí)才進(jìn)入主存時(shí)才進(jìn)入主存 1. 數(shù)據(jù)的存儲(chǔ)格式數(shù)據(jù)的存儲(chǔ)格式 計(jì)算機(jī)中信息的單位計(jì)算機(jī)中信息的單位 二進(jìn)制位二進(jìn)制位Bit:存儲(chǔ)一位二進(jìn)制數(shù):存儲(chǔ)一位二進(jìn)制數(shù):0或或1 字節(jié)字節(jié)Byte:8個(gè)二進(jìn)制位個(gè)二進(jìn)制位,D7D0 字字Word:16位,位,2個(gè)字節(jié),個(gè)字節(jié),D15D0 雙字雙字DWord:32位,位,4個(gè)字節(jié)個(gè)字節(jié),D31D

24、0 最低有效位最低有效位LSB:數(shù)據(jù)的最低位,:數(shù)據(jù)的最低位,D0位位 最高有效位最高有效位MSB:數(shù)據(jù)的最高位,對(duì)應(yīng)字節(jié)、:數(shù)據(jù)的最高位,對(duì)應(yīng)字節(jié)、 字、雙字分別指字、雙字分別指D7、D15、D31位位 圖示圖示 存儲(chǔ)單元及其存儲(chǔ)內(nèi)容存儲(chǔ)單元及其存儲(chǔ)內(nèi)容 每個(gè)存儲(chǔ)單元都有一個(gè)編號(hào);被稱為每個(gè)存儲(chǔ)單元都有一個(gè)編號(hào);被稱為 存儲(chǔ)器地址存儲(chǔ)器地址 每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容 0002H單元存放有一個(gè)數(shù)據(jù)單元存放有一個(gè)數(shù)據(jù)34H 表達(dá)為表達(dá)為0002H34H 多字節(jié)數(shù)據(jù)存放方式多字節(jié)數(shù)據(jù)存放方式 多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)存儲(chǔ)單元:多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的

25、多個(gè)存儲(chǔ)單元: 存放時(shí),低字節(jié)存入低地址,高字節(jié)存入高地址;存放時(shí),低字節(jié)存入低地址,高字節(jié)存入高地址; 表達(dá)時(shí),用它的低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間。表達(dá)時(shí),用它的低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間。 圖圖2-5中中0002H“字字”單元的內(nèi)容為:?jiǎn)卧膬?nèi)容為: 0002H = 1234H 0002H號(hào)號(hào)“雙字雙字”單元的內(nèi)容為:?jiǎn)卧膬?nèi)容為: 0002H = 78561234H 80 x86處理器采用處理器采用“低對(duì)低、高對(duì)高低對(duì)低、高對(duì)高”的的 存 儲(chǔ) 形 式 , 被 稱 為存 儲(chǔ) 形 式 , 被 稱 為 “ 小 端 方 式小 端 方 式 L i ttl e Endian”。 相對(duì)應(yīng)

26、還存在相對(duì)應(yīng)還存在“大端方式大端方式Big Endian”。 數(shù)據(jù)的地址對(duì)齊數(shù)據(jù)的地址對(duì)齊 同一個(gè)存儲(chǔ)器地址可以是字節(jié)單元地址、字單元同一個(gè)存儲(chǔ)器地址可以是字節(jié)單元地址、字單元 地址、雙字單元地址等等(地址、雙字單元地址等等(視具體情況來(lái)確定視具體情況來(lái)確定) 字單元安排在字單元安排在偶地址偶地址(xxx0B)、雙字單元安排)、雙字單元安排 在在模模4地址地址(xx00B)等,被稱為)等,被稱為“地址對(duì)齊地址對(duì)齊 (Align)” 對(duì)于不對(duì)齊地址的數(shù)據(jù),處理器訪問(wèn)時(shí),需要額對(duì)于不對(duì)齊地址的數(shù)據(jù),處理器訪問(wèn)時(shí),需要額 外的訪問(wèn)存儲(chǔ)器時(shí)間外的訪問(wèn)存儲(chǔ)器時(shí)間 應(yīng)該將數(shù)據(jù)的地址對(duì)齊,以取得較高的存取速

27、度應(yīng)該將數(shù)據(jù)的地址對(duì)齊,以取得較高的存取速度 2. 存儲(chǔ)器的分段管理存儲(chǔ)器的分段管理 8088CPU8088CPU有有2020條地址線條地址線 最大可尋址空間為最大可尋址空間為2 220 20 1 1MB 物理地址范圍從物理地址范圍從0000000000HFFFFFH 存在的問(wèn)題存在的問(wèn)題 CPU字長(zhǎng)為字長(zhǎng)為16位,其位,其IP只能存放只能存放16位地址位地址 如何利用如何利用16位直接尋址能力來(lái)訪問(wèn)位直接尋址能力來(lái)訪問(wèn)20位地址空位地址空 間?間? 解決辦法解決辦法 8088CPU將將1MB空間分成許多空間分成許多邏輯段(邏輯段(Segment) 每個(gè)段最大限制為每個(gè)段最大限制為64KB 段

28、地址的低段地址的低4位為位為0000B 這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理地址外,這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理地址外, 還具有多個(gè)邏輯地址還具有多個(gè)邏輯地址 物理地址和邏輯地址物理地址和邏輯地址 8088CPU存儲(chǔ)系統(tǒng)中,對(duì)應(yīng)每個(gè)物理存儲(chǔ)單存儲(chǔ)系統(tǒng)中,對(duì)應(yīng)每個(gè)物理存儲(chǔ)單 元都有一個(gè)唯一的元都有一個(gè)唯一的20位編號(hào),就是物理地址,從位編號(hào),就是物理地址,從 00000H FFFFFH 分段后在用戶編程時(shí),采用邏輯地址,形式分段后在用戶編程時(shí),采用邏輯地址,形式 為為 段基地址段基地址 : : 段內(nèi)偏移地址段內(nèi)偏移地址 分隔符分隔符 物理地址物理地址 14700H 邏輯地址邏輯地址

29、1460H:100H 邏輯地址邏輯地址 段地址段地址說(shuō)明邏輯段在主存中的起始位置說(shuō)明邏輯段在主存中的起始位置 8088規(guī)定段地址必須是模規(guī)定段地址必須是模16地址:地址:xxxx0H 省略低省略低4位位0000B,段地址就可以用,段地址就可以用16位數(shù)據(jù)表位數(shù)據(jù)表 示,就能用示,就能用16位段寄存器位段寄存器表達(dá)段地址表達(dá)段地址 偏移地址偏移地址說(shuō)明主存單元距離段起始位置的偏移說(shuō)明主存單元距離段起始位置的偏移 量量 每段不超過(guò)每段不超過(guò)64KB,偏移地址也可用,偏移地址也可用16位位數(shù)據(jù)表數(shù)據(jù)表 示示 物理地址和邏輯地址的轉(zhuǎn)換物理地址和邏輯地址的轉(zhuǎn)換 將邏輯地址中的段地址左移將邏輯地址中的段地

30、址左移4位,加上偏位,加上偏 移地址就得到移地址就得到20位物理地址位物理地址 一個(gè)物理地址可以有多個(gè)邏輯地址一個(gè)物理地址可以有多個(gè)邏輯地址 邏輯地址邏輯地址1460:100,1380:F00 物理地址物理地址14700H 14700H 14600H 100H 14700H 13800H F00H 14700H 段地址左移段地址左移4位位 加上偏移地址加上偏移地址 得到物理地址得到物理地址 3. 段寄存器段寄存器 8088有有4個(gè)個(gè)16位段寄存器位段寄存器 CS(代碼段)指明(代碼段)指明代碼段代碼段的起始地址的起始地址 SS(堆棧段)指明堆棧段的起始地址(堆棧段)指明堆棧段的起始地址 DS(

31、數(shù)據(jù)段)指明數(shù)據(jù)段的起始地址(數(shù)據(jù)段)指明數(shù)據(jù)段的起始地址 ES(附加段)指明附加段的起始地址(附加段)指明附加段的起始地址 每個(gè)段寄存器用來(lái)確定一個(gè)邏輯段的起始地每個(gè)段寄存器用來(lái)確定一個(gè)邏輯段的起始地 址,每種邏輯段均有各自的用途址,每種邏輯段均有各自的用途 代碼段寄存器代碼段寄存器CS(Code Segment) 代碼段用來(lái)存放程序的指令序列代碼段用來(lái)存放程序的指令序列 代碼段寄存器代碼段寄存器CS存放代碼段的段地址存放代碼段的段地址 指令指針寄存器指令指針寄存器IP指示下條指令的偏移地址指示下條指令的偏移地址 處理器利用處理器利用CS:IP取得下一條要執(zhí)行的指令取得下一條要執(zhí)行的指令 堆

32、棧段寄存器堆棧段寄存器SS(Stack Segment) 堆棧段確定堆棧所在的主存區(qū)域堆棧段確定堆棧所在的主存區(qū)域 堆棧段寄存器堆棧段寄存器SS存放堆棧段的段地址存放堆棧段的段地址 堆棧指針寄存器堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂分甘径褩m數(shù)钠频刂?處理器利用處理器利用SS:SP操作堆棧頂?shù)臄?shù)據(jù)操作堆棧頂?shù)臄?shù)據(jù) 數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DS(Data Segment) 數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù)數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù) 數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址存放數(shù)據(jù)段的段地址 各種主存尋址方式(有效地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操)得到存儲(chǔ)器中操 作數(shù)

33、的偏移地址作數(shù)的偏移地址 處理器利用處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)存取數(shù)據(jù)段中的數(shù)據(jù) 附加段寄存器附加段寄存器ES(Extra Segment) 附加段是附加的數(shù)據(jù)段,也保存數(shù)據(jù):附加段是附加的數(shù)據(jù)段,也保存數(shù)據(jù): 附加段寄存器附加段寄存器ESES存放附加段的段地址存放附加段的段地址 各種主存尋址方式(有效地址各種主存尋址方式(有效地址EAEA)得到存儲(chǔ)器中操)得到存儲(chǔ)器中操 作數(shù)的偏移地址作數(shù)的偏移地址 處理器利用處理器利用ES:EA存取附加段中的數(shù)據(jù)存取附加段中的數(shù)據(jù) 串操作指令將附加段作為其目的操作數(shù)的存放串操作指令將附加段作為其目的操作數(shù)的存放 區(qū)域區(qū)域 如何分配各個(gè)邏輯段如何

34、分配各個(gè)邏輯段 程序的程序的指令指令序列必須安排在代碼段序列必須安排在代碼段 程序使用的程序使用的堆棧堆棧一定在堆棧段一定在堆棧段 程序中的程序中的數(shù)據(jù)數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng) 常安排在附加段,尤其是串操作的目的區(qū)常安排在附加段,尤其是串操作的目的區(qū) 必須是附加段必須是附加段 數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在 任何一種邏輯段中任何一種邏輯段中 演示演示 段超越前綴指令段超越前綴指令 沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在DS段;使段;使 用用BP訪問(wèn)主存,則在訪問(wèn)主存,則在SS段段 默認(rèn)的情況允許改變,需要使用段超越前默認(rèn)的情況允許改變,需要使用段超越前 綴指令;綴指令;8088指令系統(tǒng)中有指令系統(tǒng)中有4個(gè):個(gè): CS:;代碼

溫馨提示

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