匯編語言程序設(shè)計(jì)第2章IBMPC系統(tǒng)結(jié)構(gòu)匯編_第1頁
匯編語言程序設(shè)計(jì)第2章IBMPC系統(tǒng)結(jié)構(gòu)匯編_第2頁
匯編語言程序設(shè)計(jì)第2章IBMPC系統(tǒng)結(jié)構(gòu)匯編_第3頁
匯編語言程序設(shè)計(jì)第2章IBMPC系統(tǒng)結(jié)構(gòu)匯編_第4頁
匯編語言程序設(shè)計(jì)第2章IBMPC系統(tǒng)結(jié)構(gòu)匯編_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、8086/8088和ARM核匯編語言(hu bin y yn)程序設(shè)計(jì)第2章 IBM-PC系統(tǒng)結(jié)構(gòu) 第三(d sn)講7/28/20221第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁教學(xué)(jio xu)重點(diǎn) 中央處理機(jī)(CPU中寄存器的分類和作用(zuyng) 存儲(chǔ)器(物理地址和邏輯地址) 7/28/20222第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.1 微型計(jì)算機(jī)發(fā)展(fzhn)概述 2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 第2章 IBM-PC系統(tǒng)結(jié)構(gòu) 2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu) 7/28/20223第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁

2、1946年,世界上出現(xiàn)第一臺(tái)數(shù)字式電子計(jì)算機(jī)ENIAC(電子數(shù)據(jù)和計(jì)算器)發(fā)展到以大規(guī)模集成電路為主要部件的第四代,產(chǎn)生了微型計(jì)算機(jī)1971年,Intel公司(n s)設(shè)計(jì)了世界上第一個(gè)微處理器芯片Intel4004,開創(chuàng)了一個(gè)全新的計(jì)算機(jī)時(shí)代以大規(guī)模、超大規(guī)模集成電路(jchng-dinl)為主要部件,以集成了計(jì)算機(jī)主要部件控制器和運(yùn)算器的微處理器為核心所構(gòu)造出的計(jì)算機(jī)系統(tǒng)2.1 微型計(jì)算機(jī)發(fā)展概述 7/28/20224第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁第1代(19711972):4位和低檔8位微機(jī)400440408008第2代(19731977) :中高檔8位微機(jī)Z80、I8085、

3、M6800,Apple-II微機(jī)第3代(19781984) :16位微機(jī)8086808880286,IBM PC系列機(jī)第4代(19851991) :32位微機(jī)8038680486PentiumPentium II / III / 432位PC機(jī)、Macintosh機(jī)、PS/2機(jī)第5代(2000) :64位微機(jī)Itanium、64位RISC微處理器芯片(xn pin)微機(jī)服務(wù)器、工程工作站、圖形工作站7/28/20225第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁8038680486奔騰(bntng)奔騰(bntng)2代奔騰4代802868086奔騰3代40047/28/20226第2章 IMB

4、PC系統(tǒng)結(jié)構(gòu) 共七十六頁型號(hào)發(fā)布年份字長(zhǎng)(位)晶體管數(shù)(萬個(gè))主頻(MHz)數(shù)據(jù)總線寬度(位)外部總線寬度(位)地址總線寬度(位)尋址空間(B)高速緩存80861978162.94.771616201M無80881979162.94.77168201M無8028619821613.46-2016162416M無8038619863227.512.5-333232324G有80486198932120-16025-1003232324G8KBPentium(586)199332310-33060-1666464324G8KB數(shù)據(jù)8KB指令Pentium(P6)199532550150-20064

5、643664G8KB數(shù)據(jù)8KB指令Pentium 199732750233-33364643664G32KB512KB二級(jí)高速緩存,有獨(dú)立封裝和獨(dú)立總線7/28/20227第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.1 微型(wixng)計(jì)算機(jī)發(fā)展概述 2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 第2章 IBM-PC系統(tǒng)結(jié)構(gòu) 2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu) 7/28/20228第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁 2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.2.1 硬件(yn jin) 硬件:三個(gè)主要組成部分,用系統(tǒng)總線連接。 中央處理機(jī) CPU

6、總線控制 邏輯接 口接 口內(nèi)存儲(chǔ)器大容量存儲(chǔ)器I/O設(shè)備I/O子系統(tǒng)系統(tǒng)總線.7/28/20229第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 典型的微型(wixng)計(jì)算機(jī)硬件主要由微處理器、存儲(chǔ)器、系統(tǒng)總線、I/O接口電路和I/O設(shè)備組成。 微處理器也稱中央處理器(CPU),是微型計(jì)算機(jī)的核心部件,芯片內(nèi)集成了運(yùn)算器、控制器和寄存器組,用來執(zhí)行程序指令,完成所有的算術(shù)和邏輯運(yùn)算及全機(jī)的控制工作。1微處理器2.2.1 硬件 7/28/202210第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.2.1 硬件(yn jin) 存儲(chǔ)

7、器是微型計(jì)算機(jī)的重要組成部件,用來存放程序和數(shù)據(jù)。 微型計(jì)算機(jī)的存儲(chǔ)器分為“主存”和“輔存”兩類。主存也稱內(nèi)存,CPU可以通過總線直接存取,微型計(jì)算機(jī)的主存儲(chǔ)器主要都是采用半導(dǎo)體存儲(chǔ)器,按照讀寫方式的不同,分為只讀存儲(chǔ)器ROM(Read Only Memory)和隨機(jī)存取存儲(chǔ)器RAM(Random Access Memory)兩種類型;輔存也稱外存,如磁盤、磁帶、光盤等,CPU通過I/O接口對(duì)其進(jìn)行存取,它的容量比內(nèi)存大很多,但存取信息的速度要比內(nèi)存慢得多。一般程序(包括數(shù)據(jù))是存放在外存中的,只有當(dāng)運(yùn)行時(shí),才把它從外存?zhèn)魉偷絻?nèi)存的某個(gè)區(qū)域,再由CPU控制執(zhí)行。2存儲(chǔ)器7/28/202211第

8、2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.2.1 硬件(yn jin) 總線是指?jìng)魉托畔⒌囊唤M公共導(dǎo)線,是計(jì)算機(jī)各功能部件之間進(jìn)行信息傳輸?shù)耐ǖ?。CPU、存儲(chǔ)器和I/O接口電路之間通過DB、AB和CB相連,這三組總線統(tǒng)稱為系統(tǒng)總線。 數(shù)據(jù)總線是用來傳送數(shù)據(jù)信息的。該總線是雙向總線。數(shù)據(jù)總線的位數(shù)(也稱寬度)決定了一次能夠傳送數(shù)據(jù)的位數(shù)。 地址總線是傳送地址信息的。該總線是單向總線,用來輸出CPU要訪問的的內(nèi)存單元或I/O端口的地址。地址總線位數(shù)決定了CPU可以直接尋址的內(nèi)存空間的大小,對(duì)于n條地址總線,可直接尋址的內(nèi)存范圍為2n。例如,8086的地址總線為

9、20位,可尋址的最大內(nèi)存空間為220B,即1MB。 控制總線是用來傳送控制信息的。這組信號(hào)線比較復(fù)雜,有的是微處理器送往存儲(chǔ)器和I/O接口的控制信號(hào),如讀寫控制信號(hào)、中斷響應(yīng)信號(hào)等;有的是將外界的請(qǐng)求或聯(lián)絡(luò)信號(hào)送往微處理器,如中斷請(qǐng)求信號(hào)、準(zhǔn)備就緒信號(hào)等。 采用標(biāo)準(zhǔn)的總線結(jié)構(gòu)是微型計(jì)算機(jī)系統(tǒng)的顯著特點(diǎn)之一。采用了總線結(jié)構(gòu)后,一個(gè)部件只要符合總線標(biāo)準(zhǔn),就可以連接到采用這種總線標(biāo)準(zhǔn)的系統(tǒng)中,使系統(tǒng)的功能可以很方便地得以擴(kuò)展。 3系統(tǒng)總線7/28/202212第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.2.1 硬件(yn jin) I/O設(shè)備是指微型計(jì)算機(jī)配備的

10、輸入輸出設(shè)備,也稱外圍設(shè)備(簡(jiǎn)稱外設(shè)),是微型計(jì)算機(jī)必不可少的組成部分。對(duì)外設(shè)的管理是匯編語言的重要應(yīng)用之一。 由于微機(jī)的外部設(shè)備種類繁多、工作原理各異,它們不能直接連到微機(jī)系統(tǒng)總線上實(shí)現(xiàn)與主機(jī)通信,必須經(jīng)過中間電路再與系統(tǒng)相連,通過該電路來完成數(shù)據(jù)緩沖、信號(hào)變換及與CPU聯(lián)絡(luò)等工作,這部分電路被稱為I/O接口電路。 I/O接口電路一般由三種寄存器組成:(1)數(shù)據(jù)寄存器:用來保存I/O設(shè)備和主機(jī)之間傳送的數(shù)據(jù)。(2)狀態(tài)寄存器:用來保存I/O設(shè)備或接口電路的狀態(tài)信息,以便CPU在需要時(shí)可從中讀取外設(shè)的狀態(tài),了解外設(shè)的工作情況。(3)控制寄存器:保存CPU給外設(shè)或接口電路的命令。CPU向控制寄存

11、器寫入命令,選擇接口電路的工作方式或控制外設(shè)進(jìn)行有關(guān)操作。 為便于主機(jī)訪問外設(shè),將I/O接口電路中每個(gè)寄存器統(tǒng)一編號(hào),稱為I/O端口地址或端口號(hào)。80 x86的I/O地址空間為64KB,可尋址65536個(gè)不同的I/O地址,端口地址的范圍是0000HFFFFH。 4I/O接口電路和I/O設(shè)備7/28/202213第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁 沒有配置軟件的計(jì)算機(jī),什么工作也不能做,軟件是計(jì)算機(jī)系統(tǒng)的重要組成部分。微型計(jì)算機(jī)的軟件分為系統(tǒng)軟件和應(yīng)用軟件兩大類。 系統(tǒng)軟件是面向所有用戶的一類軟件,通常包括:操作系統(tǒng)(DOS、Windows、Linux等)、語言翻譯程序、診斷調(diào)試程序、I/

12、O驅(qū)動(dòng)程序等。系統(tǒng)軟件的核心是操作系統(tǒng),所有應(yīng)用的程序都是在操作系統(tǒng)構(gòu)筑(guzh)的平臺(tái)上運(yùn)行的。應(yīng)用軟件主要是指用戶圍繞某項(xiàng)應(yīng)用編寫的各種程序。 2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.2.2 軟件 7/28/202214第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.2.2 軟件(run jin) 系統(tǒng)軟件核心為操作系統(tǒng),包括:I/O驅(qū)動(dòng)程序、文件管理程序、文本編輯程序等。應(yīng)用程序是建立在操作系統(tǒng)之上的,我們采用DOS(MS-DOS 6.22 或 Windows 9.x的MS-DOS環(huán)境),開發(fā)匯編語言程序涉及到文本編輯器匯編程序連接程序調(diào)試程序應(yīng)用軟

13、件微機(jī)中的應(yīng)用軟件豐富多彩. 軟件:系統(tǒng)軟件 應(yīng)用軟件7/28/202215第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.1 微型計(jì)算機(jī)發(fā)展(fzhn)概述 2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 第2章 IBM-PC系統(tǒng)結(jié)構(gòu) 2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu) 第四講7/28/202216第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.1 8086/8088CPU功能(gngnng)結(jié)構(gòu) 8086/8088微處理器是Intel公司(n s)推出的第三代CPU芯片,它們的內(nèi)部結(jié)構(gòu)基本相同,區(qū)別在于8088的

14、指令隊(duì)列為4個(gè)字節(jié),對(duì)外的數(shù)據(jù)總線是8位。8086CPU從功能上可分為兩部分,即總線接口部件BIU(Bus Interface Unit)和執(zhí)行部件EU(Execution Unit)。8086的內(nèi)部結(jié)構(gòu)如圖2.2所示。 7/28/202217第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁AH ALBH BLCH CLDH DLSPBPDISI通用寄存器運(yùn)算寄存器ALU標(biāo)志執(zhí)行部分控制電路1 2 3 4 5 6CSDS SS ES IP內(nèi)部寄存器I/O控制電路地址加法器20位16位8位指令隊(duì)列緩沖器外總線執(zhí)行部件總線接口部件8086CPU結(jié)構(gòu)圖2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.1

15、8086/8088CPU功能(gngnng)結(jié)構(gòu) 7/28/202218第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.1 8086/8088CPU功能(gngnng)結(jié)構(gòu) 總線接口(ji ku)部件由段寄存器、指令指針寄存器、地址加法器、指令隊(duì)列和輸入輸出控制電路等組成。BIU是8086與系統(tǒng)總線的接口(ji ku),負(fù)責(zé)CPU與存儲(chǔ)器、IO端口傳送數(shù)據(jù), (1)段寄存器包括4個(gè)16位的段寄存器:代碼段寄存器CS、數(shù)據(jù)段寄存器DS、附加段寄存器ES和堆棧段寄存器SS。(2)16位指令指針寄存器IP用來存放下一條要執(zhí)行指令在代碼段中的偏移地址。(3)

16、20位的地址加法器用來形成20位的物理地址。1總線接口部件BIU7/28/202219第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁(4)6字節(jié)的指令隊(duì)列 用于存放從內(nèi)存中取來的指令,按照先進(jìn)先出的方式工作,并按順序送到EU中執(zhí)行。其操作遵循下列原則: 1)每當(dāng)指令隊(duì)列緩沖器中存滿一條指令后,EU就立即開始執(zhí)行。 2)指令隊(duì)列緩沖器只要有2個(gè)空字節(jié)時(shí),BIU就會(huì)自動(dòng)把指令取到指令隊(duì)列中,直到填滿為止。 3)在執(zhí)行轉(zhuǎn)移、調(diào)用或返回(fnhu)指令時(shí),接下去要執(zhí)行的指令不再是程序中緊接著 排列的那條指令了,這樣,指令隊(duì)列中已經(jīng)裝入的指令就沒用了,則要清除指令隊(duì)列緩沖器,并要求BIU從新地址開始取指令填入

17、指令隊(duì)列緩沖器。(5)輸入輸出控制電路 將CPU的內(nèi)部總線與系統(tǒng)總線相連,是CPU與內(nèi)存單元或I/O端口交換數(shù)據(jù)的必經(jīng)之路。 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.1 8086/8088CPU功能(gngnng)結(jié)構(gòu) 7/28/202220第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁 執(zhí)行部件EU由算術(shù)邏輯部件(ALU)、通用寄存器、標(biāo)志寄存器和執(zhí)行部件控制電路等組成,它負(fù)責(zé)指令的執(zhí)行和數(shù)據(jù)的運(yùn)算。(1)通用寄存器包括4個(gè)16位的數(shù)據(jù)寄存器AX、BX、CX、DX和4個(gè)16位的指針與變址寄存器SI、DI與SP、BP。(2)標(biāo)志寄存器(FR)它是一個(gè)16位的寄存器,用來反映CPU運(yùn)算的狀

18、態(tài)特征和存放控制標(biāo)志。(3)算術(shù)邏輯部件(ALU)用來完成8位或16位二進(jìn)制算術(shù)和邏輯運(yùn)算。(4)執(zhí)行部件控制電路負(fù)責(zé)從總線接口部件的指令隊(duì)列緩沖器中取指令,并對(duì)指令進(jìn)行譯碼,根據(jù)指令要求向執(zhí)行部件內(nèi)部個(gè)部分發(fā)出控制命令以完成各條指令的功能。8086/8088CPU的總線接口部件和執(zhí)行部件并不是同步工作的,它們相互獨(dú)立,分別完成各自操作,在執(zhí)行部件執(zhí)行指令的同時(shí)(tngsh),總線接口部件可予取下面一條或幾條指令,總線接口部件和執(zhí)行部件這種并行操作的特點(diǎn),可以提高系統(tǒng)的運(yùn)行速度,從而提高了工作效率。 2執(zhí)行(zhxng)部件EU2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.1 8086/

19、8088CPU功能結(jié)構(gòu) 7/28/202221第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 寄存器是CPU內(nèi)部重要(zhngyo)的數(shù)據(jù)存儲(chǔ)資源,是匯編程序員能直接使用的硬件資源之一。由于寄存器的存取速度比內(nèi)存快,所以,在用匯編語言編寫程序時(shí),要盡可能充分利用寄存器的存儲(chǔ)功能。 寄存器一般用來保存程序的中間結(jié)果,為隨后的指令快速提供操作數(shù),從而避免把中間結(jié)果存入內(nèi)存,再讀取內(nèi)存的操作。在高級(jí)語言(如:C/C+語言)中,也有定義變量為寄存器類型的,這就是提高寄存器利用率的一種可行的方法。 另外,由于寄存器的個(gè)數(shù)和容量都有限,不可能把所有中間結(jié)果都存儲(chǔ)在寄

20、存器中,所以,要對(duì)寄存器進(jìn)行適當(dāng)?shù)恼{(diào)度。根據(jù)指令的要求,如何安排適當(dāng)?shù)募拇嫫?,避免操作?shù)過多的傳送操作是一項(xiàng)細(xì)致而又周密的工作。 由于16位/32位CPU是微機(jī)CPU的兩個(gè)重要代表,所以,在此只介紹它們內(nèi)部寄存器的名稱及其主要功能2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 7/28/202222第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 80 x86的程序(chngx)可見寄存器組通用寄存器專用寄存器 段寄存器 AH AX AL BH BX BL CH CX CL DH DX DL SP BP SI DI

21、IP FLAGS CS DS SS ES8086 /8088 /80286 寄 存 器EAXEBXECXEDXESPEBPESIEDIEIP EFLAGS FSGS 31 16 15 8 7 07/28/202223第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 16位寄存器組16位CPU所含有的寄存器有4個(gè)數(shù)據(jù)寄存器(AX、BX、CX和DX)2個(gè)變址和指針寄存器(SI和DI)2個(gè)指針寄存器(SP和BP)4個(gè)段寄存器(ES、CS、SS和DS)1個(gè)指令指針寄存器(IP)1個(gè)標(biāo)志寄存器(Flags)7/28/202

22、224第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) (1)數(shù)據(jù)(shj)寄存器 數(shù)據(jù)寄存器共有4個(gè)寄存器AX、BX、CX、DX,用來保存操作數(shù)或運(yùn)算結(jié)果等信息。 AX(Accumulator)寄存器稱為累加器。使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等。 BX(Base Register)寄存器稱為基址(j zh)寄存器。常用于存放存儲(chǔ)器地址。 CX(Count Register)寄存器稱為計(jì)數(shù)器。一般作為循環(huán)或串操作等指令中的隱含計(jì)數(shù)器。在位操作中,當(dāng)移多位時(shí),要用CL來指明移位的位數(shù); DX(D

23、ata Register)寄存器稱為數(shù)據(jù)寄存器。常用來存放雙字?jǐn)?shù)據(jù)的高16位,在進(jìn)行乘、除運(yùn)算時(shí),它可作為默認(rèn)的操作數(shù)參與運(yùn)算,亦可存放外設(shè)端口地址。1. 通用寄存器組7/28/202225第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 在16位CPU中,AX、BX、CX和DX不能作為基址和變址寄存器來存放存儲(chǔ)單元(cn ch dn yun)的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不僅可傳送數(shù)據(jù)、暫存數(shù)據(jù)保存算術(shù)邏輯運(yùn)算結(jié)果,而且也可作為指針寄存器,所以,這些32位寄存器更具有通

24、用性。7/28/202226第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁(2) 變址寄存器 寄存器ESI、EDI、SI和DI稱為變址寄存器(Index Register),主要用于存放某個(gè)存儲(chǔ)單元的偏移地址(dzh)(例XX棟XX號(hào))。 SI是源變址寄存器,DI是目的變址寄存器,在字符串操作中,SI和DI都具有自動(dòng)增量或減量的功能。它們主要用于存放存儲(chǔ)單元段內(nèi)的偏移量,用它們可實(shí)現(xiàn)多種存儲(chǔ)器操作數(shù)的尋址方式(在第3章有詳細(xì)介紹),為以不同的地址形式訪問存儲(chǔ)單元提供方便。 變址寄存器不可分割成8位寄存器。作為通用寄存器,也可存儲(chǔ)算術(shù)邏輯運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。 2.3.2 8086/8088CPU的

25、寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 7/28/202227第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁(3)指針(zhzhn)寄存器 寄存器EBP、ESP、BP和SP稱為指針寄存器(Pointer Register),主要用于存放堆棧內(nèi)存儲(chǔ)單元的偏移量,用它們可實(shí)現(xiàn)(shxin)多種存儲(chǔ)器操作數(shù)的尋址方式(在第3章有詳細(xì)介紹),為以不同的地址形式訪問存儲(chǔ)單元提供方便。 SP(Stack Pointer)為堆棧指針寄存器,用于存放當(dāng)前堆棧段中棧頂?shù)钠频刂?;BP (Base Pointer)為基址指針寄存器,用于存放堆棧段中某一存儲(chǔ)單元的偏移地址。2.3.2 8086/8088CP

26、U的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 7/28/202228第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2. 專用(zhunyng)寄存器: IP、FLAGS(1)指令(zhlng)指針寄存器 IP( Instruction Pointer ) 指令指針寄存器:8086CPU中的指令指針I(yè)P,它總是保存下一次將要從主存中取出指令的偏移地址,偏移地址的值為該指令到所在段段首址的字節(jié)距離。在目標(biāo)程序運(yùn)行時(shí),IP的內(nèi)容由微處理器硬件自動(dòng)設(shè)置,程序不能直接訪問IP,但一些指令卻可改變IP的值,如

27、轉(zhuǎn)移指令、子程序調(diào)用指令等。 32位CPU把指令指針擴(kuò)展到32位,并記作EIP,EIP的低16位與先前CPU中的IP作用相同。 7/28/202229第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) (2)標(biāo)志(biozh)寄存器 ( FLAGS / PSW ) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0狀態(tài)(zhungti)標(biāo)志: 控制標(biāo)志:OF 溢出標(biāo)志 TF 陷阱標(biāo)志SF 符號(hào)標(biāo)志 DF 方向標(biāo)志 ZF 零標(biāo)志 IF 中斷標(biāo)志CF 進(jìn)位標(biāo)志AF 輔助進(jìn)位標(biāo)志PF 奇偶標(biāo)志 O

28、F DF IF TF SF ZF AF PF CF 注:指令的執(zhí)行與標(biāo)志有很大關(guān)系。 狀態(tài)標(biāo)志 : 用來記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它。 控制標(biāo)志 : 可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式。7/28/202230第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁零標(biāo)志(biozh)ZF(Zero Flag)若運(yùn)算結(jié)果為0,則ZF = 1,否則(fuz)ZF = 0。例如:3AH + 7CHB6H, 結(jié)果不是零:ZF = 086H + 7CH(1)00H,結(jié)果是零:ZF = 1注意:ZF為1表示的結(jié)果是02.3.2 8086/8088CPU的寄存器組 2.3

29、 8086/8088CPU的內(nèi)部結(jié)構(gòu) 符號(hào)標(biāo)志SF(Sign Flag) 運(yùn)算結(jié)果最高位為1,則SF = 1;否則SF = 0。例如:3AH + 7CHB6H, 最高位D71:SF = 186H + 7CH(1)00H,最高位D70:SF = 0 有符號(hào)數(shù)據(jù)利用最高有效位表示數(shù)據(jù)的符號(hào)。所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài)。7/28/202231第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 奇偶(q u)標(biāo)志PF(Parity Flag) 當(dāng)運(yùn)算結(jié)果最低字節(jié)(z ji)中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF = 1;

30、否則PF = 0。例如: 3AH + 7CHB6H10110110B,結(jié)果中有5個(gè)1,是奇數(shù):PF = 0 注意:PF標(biāo)志僅反映最低8位中“1”的個(gè)數(shù)是偶或奇,即使是進(jìn)行16位字操作。溢出標(biāo)志OF(Overflow Flag) 若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;否則 OF0。例如: 3AH + 7CHB6H, 產(chǎn)生溢出:OF = 1 AAH + 7CH(1)26H,沒有溢出:OF = 0 ?7/28/202232第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 輔助(fzh)進(jìn)位標(biāo)志AF(Auxiliary C

31、arry Flag) 運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或借位時(shí),AF = 1;否則AF = 0。例如: 3AH + 7CHB6H,D3有進(jìn)位:AF = 1 這個(gè)標(biāo)志主要由處理器內(nèi)部使用,用于十進(jìn)制算術(shù)運(yùn)算指令中,用戶一般不必(bb)關(guān)心。方向標(biāo)志DF(Direction Flag) 用于串操作指令中,控制地址的變化方向:設(shè)置DF0,串操作的存儲(chǔ)器地址自動(dòng)增加;設(shè)置DF1,串操作的存儲(chǔ)器地址自動(dòng)減少。 CLD指令復(fù)位方向標(biāo)志:DF0 STD指令置位方向標(biāo)志:DF17/28/202233第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088

32、CPU的內(nèi)部結(jié)構(gòu) 中斷允許(ynx)標(biāo)志IF(Interrupt-enable Flag)用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置(shzh)IF1,則允許中斷;設(shè)置IF0,則禁止中斷。CLI指令復(fù)位中斷標(biāo)志:IF0STI指令置位中斷標(biāo)志:IF1陷阱標(biāo)志TF(Trap Flag)用于控制處理器是否進(jìn)入單步操作方式:設(shè)置TF0,處理器正常工作;設(shè)置TF1,處理器單步執(zhí)行指令。單步執(zhí)行指令處理器在每條指令執(zhí)行結(jié)束時(shí),便產(chǎn)生一個(gè)編號(hào)為1的內(nèi)部中斷。這種內(nèi)部中斷稱為單步中斷,所以TF也稱為單步標(biāo)志。利用單步中斷可對(duì)程序進(jìn)行逐條指令的調(diào)試。這種逐條指令調(diào)試程序的方法就是單步調(diào)試。7/28/202

33、234第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) OFDFIFTFSFZF AF PF CF 8086/8088OFDFIFTFSFZF AF PF CF IOPLNT 80286 RF OFDFIFTFSFZF AF PF CF IOPLNTVM 80386 RF OFDFIFTFSFZF AF PF CF IOPLNTVMAC 80486 RF OFDFIFTFSFZF AF PF CF IOPLNTVMACIDVIPVIF31 30 29 28 27 26 25 24 23 22 21 20 19 1

34、8 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Pentium80 x86的標(biāo)志(biozh)寄存器IOPL: I/O特權(quán)(tqun)級(jí) VIP:虛擬中斷未決標(biāo)志 NT: 嵌套任務(wù)標(biāo)志 VIF:虛擬中斷標(biāo)志 RF: 重新啟動(dòng)標(biāo)志 VM:虛擬8086模式位 AC: 對(duì)準(zhǔn)檢查方式位 ID: 標(biāo)識(shí)標(biāo)志 7/28/202235第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁3. 段寄存器 段寄存器:8086CPU的個(gè)16位的段寄存器分別稱為代碼段寄存器CS,數(shù)據(jù)段寄存器DS,堆棧段寄存器SS,附加數(shù)據(jù)段寄存器ES。段寄存器用來確定該段在內(nèi)存中的起始地址(例XX棟XX號(hào)

35、) 。段寄存器是根據(jù)內(nèi)存分段的管理模式而設(shè)置的。內(nèi)存單元的物理地址由段寄存器的值和一個(gè)偏移量組合而成的,這樣可用兩個(gè)(lin )較少位數(shù)的值組合成一個(gè)可訪問較大物理空間的內(nèi)存地址。2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 7/28/202236第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁CPU內(nèi)部的段寄存器:CS代碼段寄存器(Code Segment Register),其值為代碼段(例男生(nnshng)宿 舍)的段值;代碼段用來存放程序的指令序列。CS存放代碼段的段首址,指令 指針寄存器IP指示代碼段中指令的偏移地址。DS數(shù)據(jù)段寄存器(Data

36、 Segment Register),其值為數(shù)據(jù)段(例女生宿舍)的段值;ES附加段寄存器(Extra Segment Register),其值為附加數(shù)據(jù)段的段值;SS堆棧段寄存器(Stack Segment Register),其值為堆棧段的段值;2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 7/28/202237第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁 在16位CPU系統(tǒng)(xtng)中,它只有4個(gè)段寄存器,所以,程序在任何時(shí)刻至多有4個(gè)正在使用的段可直接訪問;在32位微機(jī)系統(tǒng)中,它有6個(gè)段寄存器,所以,在此環(huán)境下開發(fā)的程序最多可同時(shí)訪問6個(gè)段。

37、32位CPU有兩個(gè)不同的工作方式:實(shí)方式和保護(hù)方式。在每種方式下,段寄存器的作用是不同的。有關(guān)規(guī)定簡(jiǎn)單描述如下: 實(shí)方式: 前4個(gè)段寄存器CS、DS、ES和SS與先前CPU中的所對(duì)應(yīng)的段寄存器的含義完全一致,內(nèi)存單元的邏輯地址仍為“段值:偏移量”的形式。為訪問某內(nèi)存段內(nèi)的數(shù)據(jù),必須使用該段寄存器和存儲(chǔ)單元的偏移量。保護(hù)方式: 在此方式下,情況要復(fù)雜得多,裝入段寄存器的不再是段值,而是稱為“選擇子”(Selector)的某個(gè)值。段寄存器的具體(jt)作用在此不作進(jìn)一步介紹了,有興趣的讀者可參閱其它科技資料。2.3.2 8086/8088CPU的寄存器組 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu)

38、 7/28/202238第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁代碼段寄存器CS(Code Segment)代碼段用來存放程序的指令序列代碼段寄存器CS存放(cnfng)代碼段的段地址指令指針寄存器IP指示下條指令的偏移地址處理器利用CS:IP取得下一條要執(zhí)行的指令2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202239第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁堆棧(duzhn)段寄存器SS(Stack Segment)堆棧(duzhn)段確定堆棧(duzhn)所在的主存區(qū)域堆棧段寄存器SS存放堆棧段的段地址堆棧指針寄存器SP指示堆棧棧頂

39、的偏移地址處理器利用SS:SP操作堆棧頂?shù)臄?shù)據(jù)2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202240第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁數(shù)據(jù)(shj)段寄存器DS(Data Segment)數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù)數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移(pin y)地址處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202241第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁附加(fji)段寄

40、存器ES(Extra Segment)附加段是附加的數(shù)據(jù)段,也保存數(shù)據(jù):附加段寄存器ES存放附加段的段地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址處理器利用ES:EA存取附加段中的數(shù)據(jù)串操作(cozu)指令將附加段作為其目的操作(cozu)數(shù)的存放區(qū)域2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202242第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁如何分配各個(gè)(gg)邏輯段?程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段數(shù)據(jù)的

41、存放比較靈活,實(shí)際上可以存放在任何(rnh)一種邏輯段中演示2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202243第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁段超越(choyu)前綴指令沒有指明時(shí),一般的數(shù)據(jù)訪問在DS段;使用BP訪問主存,則在SS段默認(rèn)的情況允許改變(gibin),需要使用段超越前綴指令;8088指令系統(tǒng)中有4個(gè):CS:;代碼段超越,使用代碼段的數(shù)據(jù)SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù)DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù)ES: ;附加段超越,使用附加段的數(shù)據(jù)示例2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2

42、8086/8088CPU的寄存器組 7/28/202244第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁段超越(choyu)的示例沒有段超越的指令實(shí)例:MOV AX,2000H;AXDS:2000H;從默認(rèn)的DS數(shù)據(jù)(shj)段取出數(shù)據(jù)(shj)采用段超越前綴的指令實(shí)例:MOV AX,ES:2000H;AXES:2000H;從指定的ES附加段取出數(shù)據(jù)總結(jié)2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202245第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁段寄存器的使用(shyng)規(guī)定訪問存儲(chǔ)器的方式默認(rèn)可超越偏移地址取指令CS無IP堆棧操作SS無

43、SP一般數(shù)據(jù)訪問DSCS ES SS有效地址EABP基址的尋址方式SSCS ES DS有效地址EA串操作的源操作數(shù)DSCS ES SSSI串操作的目的操作數(shù)ES無DI2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202246第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁寄存器的總結(jié)(zngji)8088有8個(gè)8位通用寄存器、8個(gè)16位通用寄存器8088有6個(gè)狀態(tài)標(biāo)志和3個(gè)控制標(biāo)志8088將1MB存儲(chǔ)空間分段管理,有4個(gè)段寄存器,對(duì)應(yīng)(duyng)4種邏輯段8088有4個(gè)段超越前綴指令,用于明確指定數(shù)據(jù)所在的邏輯段 熟悉上述內(nèi)容后,就可以進(jìn)入下節(jié)

44、2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 2.3.2 8086/8088CPU的寄存器組 7/28/202247第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁1、下列四個(gè)寄存器中,可作為八位寄存器的是( )。 A、AX B、CH C、BP D、IP 2、請(qǐng)將左邊的項(xiàng)與右邊的解釋聯(lián)系(linx)起來(把所選字母放在括號(hào)中)。(A)存儲(chǔ)器( )保存當(dāng)前棧頂?shù)刂返募拇嫫鳎˙)SP( )表示計(jì)算機(jī)執(zhí)行什么操作的符號(hào)(C)控制標(biāo)志( )控制操作的標(biāo)志,如DF、TF等。(D)段地址( )存放指令機(jī)器碼的存儲(chǔ)器段區(qū)(E)代碼段( )存儲(chǔ)程序、數(shù)據(jù)等信息的記憶裝置(F)標(biāo)號(hào)( )將匯編語言程序翻譯成機(jī)器碼程序的實(shí)

45、用程序(G)匯編程序( )是邏輯段的起始地址(H)助記符( )指出指令在程序中位置的符號(hào)地址第五(d w)講7/28/202248第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.1 微型計(jì)算機(jī)發(fā)展(fzhn)概述 2.2 微型(wixng)計(jì)算機(jī)系統(tǒng) 2.3 8086/8088CPU的內(nèi)部結(jié)構(gòu) 第2章 IBM-PC系統(tǒng)結(jié)構(gòu) 2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu) 7/28/202249第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 存儲(chǔ)單元地址 :8086系統(tǒng)中,為了標(biāo)識(shí)和存取每一個(gè)存儲(chǔ)單元,給每個(gè)存儲(chǔ)單元規(guī)定一個(gè)編號(hào),這就是存儲(chǔ)單元地址。 存儲(chǔ)單元的內(nèi)

46、容 :一個(gè)存儲(chǔ)單元中存放的信息稱為該存儲(chǔ)單元的內(nèi)容。 注意: 存儲(chǔ)器以字節(jié)(z ji)(8 bit)為編程單位 每個(gè)字節(jié)單元都有唯一的地址編碼 地址用無符號(hào)整數(shù)來表示(編程用十六進(jìn)制表示) 一個(gè)字要占用相繼的兩個(gè)字節(jié) 低位字節(jié)存入低地址,高位字節(jié)存入高地址 字單元地址用它的低地址來表示 機(jī)器以偶地址訪問(讀 / 寫)存儲(chǔ)器2.4.1 存儲(chǔ)單元的地址和內(nèi)容7/28/202250第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁你能區(qū)別寄存器、存儲(chǔ)器(主存)、外存(包括 硬盤、光盤(un pn)、磁帶等存儲(chǔ)介質(zhì))嗎?寄存器是微處理器(CPU)內(nèi)部暫存數(shù)據(jù)的存儲(chǔ)單元,以名稱表示(biosh),例如:AX,BX

47、.等存儲(chǔ)器也就是平時(shí)所說的主存,也叫內(nèi)存,可直接與CPU進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別外存主要指用來長(zhǎng)久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì),常見的有硬盤、光盤、磁帶、U盤等。外存的數(shù)據(jù)只能通過主存間接地與CPU交換數(shù)據(jù)程序及其數(shù)據(jù)可以長(zhǎng)久存放在外存,在運(yùn)行需要時(shí)才進(jìn)入主存7/28/202251第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.1 存儲(chǔ)單元的地址(dzh)和內(nèi)容7/28/202252第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁二進(jìn)制位:存儲(chǔ)一位二進(jìn)制數(shù):0或1。字節(jié):8個(gè)二進(jìn)制位,D7D0。字:16位,2個(gè)字節(jié),D15D0。雙字:32位,4個(gè)字節(jié)

48、,D31D0。最低有效位LSB(Least Significant Bit):指數(shù)據(jù)的最低位,即D0位;最高有效位MSB(Most Significant Bit):指數(shù)據(jù)的最高位,對(duì)應(yīng)(duyng)字節(jié)、字、雙字分別指D7、D15、D31位。2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.1 存儲(chǔ)單元的地址和內(nèi)容7/28/202253第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁 7 6 5 4 3 2 1 01 0 0 1 1 1 1 1 0000H (0000H)=9FH0 0 1 0 0 1 1 0 0001H (0001H)=26H0 0 0 1 1 1 1 0 0002H (

49、0002H)=1EH1 1 0 1 0 1 1 1 0003H (0003H)=D7H存儲(chǔ)器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0字 高位(o wi)字節(jié) 低位字節(jié)1 0 0 1 1 1 1 10 0 1 0 0 1 1 0(0000H)=269FH(0002H)=D71EH(0001H)=1E26H 訪問(fngwn)兩次存儲(chǔ)器字節(jié)2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu) 2.4.1 存儲(chǔ)單元的地址和內(nèi)容7/28/202254第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁 存儲(chǔ)單元中所存放的二進(jìn)制信息通常稱為該存儲(chǔ)單元的內(nèi)容或值,并且規(guī)定: 一個(gè)字節(jié)的內(nèi)容是該字

50、節(jié)單元內(nèi)存放的二進(jìn)制信息; 一個(gè)字的內(nèi)容是該字地址所指向的單元及其后繼一個(gè)單元的內(nèi)容拼接而成; 一個(gè)雙字的內(nèi)容是該字地址所指向的單元及其后繼三個(gè)單元的內(nèi)容拼接而成。 在拼接“字內(nèi)容”時(shí),我們按“高高低低”的原則來處理(chl),即:高存儲(chǔ)單元(地址大的存儲(chǔ)單元)的值是“字內(nèi)容”的高8位,低存儲(chǔ)單元(地址小的存儲(chǔ)單元)的值是“字內(nèi)容”的低8位。在拼接“雙字內(nèi)容”時(shí)也是如此。2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.1 存儲(chǔ)單元的地址和內(nèi)容7/28/202255第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁 字節(jié) 12340H、12341H的內(nèi)容(nirng)分別為:12H和34H等;

51、 字 12340H、12341H的內(nèi)容分別為:3412H和5634H等; 雙字 12340H、12341H的內(nèi)容分別為:78563412H和90785634H等。內(nèi)存單元(dnyun)存放內(nèi)容示意圖 2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu) 2.4.1 存儲(chǔ)單元的地址和內(nèi)容7/28/202256第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.2 存儲(chǔ)器的分段(fn dun) 8086/8088CPU的地址線是20位的,它最大可尋址空間為220=1MB,而8086/8088的內(nèi)部寄存器是16位寄存器,16位寄存器只能尋址216=64KB,為了能用

52、16位寄存器來有效地訪問1MB的存儲(chǔ)空間,8086/8088CPU采用了內(nèi)存分段的管理模式。 8086/8088把1MB存儲(chǔ)空間分成若干個(gè)邏輯段,每個(gè)邏輯段最大為64KB,這樣段內(nèi)地址可以用16位表示,這樣,系統(tǒng)的整個(gè)存儲(chǔ)空間可分為16個(gè)互不重疊的邏輯段,如圖2.6所示。 7/28/202257第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁圖2.6 存儲(chǔ)器的邏輯(lu j)分段之一 2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.2 存儲(chǔ)器的分段 7/28/202258第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.2 存儲(chǔ)器的分段(f

53、n dun) 20 根地址線: 地址范圍 00000H FFFFFH (1MB)機(jī)器字長(zhǎng)16位:僅能表示地址范圍 0000H FFFFH(64KB)小段:每16個(gè)字節(jié)為一小段,共有64K個(gè)小段 小段的首地址 00000 H 0000F H 00010 H 0001F H 00020 H 0002F H FFFF0 H FFFFF H 段起始地址:小段首地址段的大小: 64K 范圍內(nèi)的任意字節(jié)7/28/202259第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.2 存儲(chǔ)器的分段(fn dun) 段不能起始于任意地址,必須從任一小段的首地址開始。

54、機(jī)器規(guī)定:從0地址開始,每16個(gè)字節(jié)為一小段。下面列出了存儲(chǔ)器的地址空間,每行為一小段。 00000H,00001H,00002H, ,0000EH,0000FH; 00010H,00011H, 00012H,0001EH,0001FH;00020H,00021H,00022H, ,0002EH,0002FH; FFFF0H,F(xiàn)FFF1H,F(xiàn)FFF2H, ,F(xiàn)FFFEH,F(xiàn)FFFFH; 其中,第一列是每個(gè)小段的首地址。其特征是:在十六進(jìn)制表示的地址中,最低位為0(即20位地址的低4位為0)。這樣,省略低位0,段起始地址也可以用16位數(shù)據(jù)表示,通常被保存在16位段寄存器中。7/28/202260

55、第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.2 存儲(chǔ)器的分段(fn dun) 每個(gè)邏輯段可以獨(dú)立占用64KB存儲(chǔ)區(qū),如圖2.6所示。實(shí)際上,可以根據(jù)實(shí)際需要來確定段的大小,它可以是1B、100B、1000B或在64KB范圍內(nèi)的任意字節(jié),各段也允許重疊,如圖2.7所示。當(dāng)然每個(gè)存儲(chǔ)單元的內(nèi)容是不允許發(fā)生沖突的,所謂重疊只是指每個(gè)段區(qū)的大小允許根據(jù)實(shí)際需要來分配,而不一定要占用64KB的空間。一般情況下,各段在存儲(chǔ)器中的分配是由操作系統(tǒng)完成的。但是,系統(tǒng)允許程序員在必要時(shí)指定所需占用的內(nèi)存區(qū)。 7/28/202261第2章 IMB PC系統(tǒng)結(jié)

56、構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.2 存儲(chǔ)器的分段(fn dun) CSDSSSES存儲(chǔ)器8KB代碼2KB數(shù)據(jù)256B堆棧03000H05800H05000H0500H0300H0580H圖2.7 存儲(chǔ)器的邏輯分段之二 7/28/202262第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.3 物理地址的形成(xngchng) 由于規(guī)定段地址必須是16的倍數(shù),所以,其值的一般形式為:XXXX0H,即:前16位二進(jìn)制位是變化的,后四位是固定為0。鑒于段地址的這種特性,我們可以僅保存其前16位二進(jìn)制來達(dá)到保存

57、整個(gè)段地址,其后四位可通過“左移補(bǔ)0”來獲得。 在確定了某個(gè)存儲(chǔ)單元所屬的內(nèi)存段后,我們也只知道其所處內(nèi)存位置的范圍,還不能確定其具體位置。要想確定內(nèi)存單元的具體位置,還必須知道該單元離該段地址有多遠(yuǎn)。我們通常把存儲(chǔ)單元的實(shí)際地址與其所在段的段地址之間的距離稱為段內(nèi)偏移,也可稱為有效地址(EAEffective Address)或偏移量(Offset)等。有了段地址和偏移量,就能唯一地確定某一內(nèi)存單元在存儲(chǔ)器內(nèi)的具體位置。7/28/202263第2章 IMB PC系統(tǒng)結(jié)構(gòu) 共七十六頁2.4 8086/8088的存儲(chǔ)器結(jié)構(gòu)(jigu) 2.4.3 物理地址的形成(xngchng) 由此可見,存儲(chǔ)單元的邏輯地址分為兩部分:段地址和偏移量。由邏輯地址得到其物理地址(PAPhysical Address)的計(jì)算方法如下: 物理地址PA=段地址16+ 偏移量 計(jì)算存儲(chǔ)單元物理地址的公式可

溫馨提示

  • 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. 人人文庫(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)論