日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】

發(fā)布時間:2023/12/3 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

IBM-PC微機組成原理(ppt48)-咨詢報告【PPT課件】

2020-09-24 08:52:06

【導讀】微型計算機中的中央處理器也叫微處理器。運算器和控制器。件完成指定功能的各項操作。主存儲器是用于存放程序和數(shù)據(jù)的部件。對每個存儲單元內(nèi)容的存和取是按照地址進。儲一個二進制數(shù)0或1。每8位組成一個字節(jié)。每一個基本單位稱為一個存儲單元。為了區(qū)分這些不同的存。個10位二進制數(shù)表示的地址,助存儲器,簡稱輔存。由于它的位置是在主機之外,因。統(tǒng)能識別的信息形式向外輸出。有的設備既具有輸入功能又具有輸出功能。系統(tǒng)總線將CPU、存儲器和I/O設備連接起來,用于傳送各大部件之間的信息。指令是構(gòu)成匯編語言程序的最基本單位。相應的控制信號,控制各部件完成指令規(guī)定的操作。到指令隊列中,等待EU取走并執(zhí)行。部總線周期,與存儲器或I/0進行數(shù)據(jù)的存取。EU和BIU是既分工又合作的兩個獨立部分。而大大加快了指令執(zhí)行速度。在多數(shù)情況下,使用這些寄存器時必須在。隱念使用了某寄存器,稱為隱含使用。例如,在循環(huán)指令LOOP中,CX被隱含指定作循環(huán)次數(shù)計數(shù)用。

  

【正文】

1

IBM-PC微機組成原理

IBM-PC微機基本結(jié)構(gòu)

一、微機的一般構(gòu)成

運算器、控制器、存儲器、輸入設備和輸出

設備。

一般計算機應包括五大部件:

由于微機的主要特點是其體積很小,因此在系

統(tǒng)設計上就有一些特殊考慮,它將運算器和控制器

兩大部件集成在一個集成電路芯片上,稱為微處理

器,也叫中央處理器,簡稱CPU

2

微處理器

CPU主存儲器

I/O接口

I/O設備

I/O接口

I/O設備

地址總線

數(shù)據(jù)總線

控制總線

統(tǒng)

微機硬件系統(tǒng)基本組成框圖

3

1、中央處理器CPU

微型計算機中的中央處理器也叫微處理器。它包括

運算器和控制器。

功能:從主存儲器中逐條取出構(gòu)成程序的指令序

列,分析各指令的功能,控制計算機各部

件完成指定功能的各項操作。

2、主存儲器

主存儲器是用于存放程序和數(shù)據(jù)的部件。它由若干

個存儲單元構(gòu)成。存儲單元的多少表示存儲器的容量。

每個存儲單元使用一個唯一的編號來標識,稱為存儲單

元的地址。對每個存儲單元內(nèi)容的存和取是按照地址進

行訪問的。

4

計算機存儲信息的基本單位是一個二進制位,一位可存

儲一個二進制數(shù)0或1。每8位組成一個字節(jié)(BYTE)。

76543210

在大多數(shù)計算機中,存儲器的組織都是以字節(jié)為基本

單位。每一個基本單位稱為一個存儲單元。

一個存儲器是由許多的存儲

單元構(gòu)成的,如某存儲器的

容量為32KB,1MB,128MB等

等。為了區(qū)分這些不同的存

儲單元,一般使用單元地址

來指示各個存儲單元。如一

個10位二進制數(shù)表示的地址,

可以用來區(qū)分210=1024=1K

個單元。

存儲器地址

0000000000

0000000001

0000000010

1111111111

……

……

5

習慣上將CPU與主存儲器合稱為主機

在計算機中,除了主存儲器之外,一般還配置有輔

助存儲器,簡稱輔存。由于它的位置是在主機之外,因

此也叫做外存。

3、輸入輸出設備及接口

輸入設備將外部信息(程序、數(shù)據(jù)和命令)送入

計算機。包括鍵盤、鼠標等。

輸出設備將計算機處理后的結(jié)果轉(zhuǎn)換為人或其它系

統(tǒng)能識別的信息形式向外輸出。如顯示器、打印機等。

有的設備既具有輸入功能又具有輸出功能。如磁

盤、磁帶、觸摸顯示屏等。

6

由于I/O設備的工作速度、工作原理以及所處理的

信息格式等與主機相差很大,因此I/O設備要通過I/O

接口才能與系統(tǒng)總線連接。

I/O接口是主機與I/O設備之間設置的邏輯控制部

件。通過它實現(xiàn)主機與I/O設備間的信息傳送。

4、系統(tǒng)總線

系統(tǒng)總線將CPU、存儲器和I/O設備連接起來,

用于傳送各大部件之間的信息。

系統(tǒng)總線包括地址總線、數(shù)據(jù)總線和控制總線三

組。它們分別用于傳送不同的信息。

7

二、Intel8086/8088CPU的功能結(jié)構(gòu)

指令是構(gòu)成匯編語言程序的最基本單位。就象高級語

言中的一個語句。

程序是由一系列的指令——指令序列構(gòu)成。

CPU執(zhí)行指令序列就是重復執(zhí)行以下兩個步驟:

從存儲器中取指令

執(zhí)行指令所規(guī)定的功能

8

這兩個步驟的執(zhí)行又可以分為兩種情況:

1.串行方式

取指執(zhí)行存數(shù)取指執(zhí)行取指取數(shù)執(zhí)行

忙閑忙忙閑忙忙閑

CPU

外部總線

特點:

(1)當CPU在執(zhí)行指令時,不需要占用外部總線,但此時

總線也不能作它用,因此外部總線的空閑時間比較多。

(2)在從存儲器取指令或數(shù)據(jù)時,總線處于忙狀態(tài),其所

占用的時間也較長。但CPU卻只需要使用很短的時間去處

理。因此大部分時間都是處于閑置狀態(tài)。

采用串行工作方式的計算機其運行速度較慢

時間

9

AHAL

BHBL

CHCL

DI

SP

BP

SI

地址加法器

IP

CS

DS

SS

ES

總線

控制

邏輯暫存器

標志寄存器

ALUEU控制器123456

控制信號

16

數(shù)

據(jù)

外部總線

16位CPU內(nèi)總

AX

BX

CX

20位地址總線

指令隊列

執(zhí)行單元(EU)總線接口單元(BIU)

10

(1)執(zhí)行單元EU

EU的主要任務是分析與執(zhí)行指令,它包括:

A、從指令隊列中取出指令代碼,由控制器譯碼后產(chǎn)生

相應的控制信號,控制各部件完成指令規(guī)定的操作。

B、對操作數(shù)執(zhí)行各種指定的算術(shù)或邏輯運算

C、向BIU發(fā)送訪問主存或I/0的命令,并提供相應的

地址和傳送的數(shù)據(jù)

11

(2)總線接口單元BIU

BIU負責CPU與存儲器、I/0的信息傳送。具體功能包括:

A、取指令——根據(jù)CS寄存器和指令指針I(yè)P形成20位的物

理地址,從該地址指定的存儲器單元中取出指令,并暫存

到指令隊列中,等待EU取走并執(zhí)行。

B、存取數(shù)據(jù)——在EU執(zhí)行指令的過程中,如果需要與存

儲器或I/O端口傳送數(shù)據(jù)時,根據(jù)EU提供的數(shù)據(jù)和地址,

并結(jié)合相應的段寄存器(DS、ES或SS)的內(nèi)容,進入外

部總線周期,與存儲器或I/0進行數(shù)據(jù)的存取。

EU和BIU是既分工又合作的兩個獨立部分。它們的操

作在一定程序上是并行工作的,分別完成不同的任務,因

而大大加快了指令執(zhí)行速度。

12

Intel8086/8088運行時執(zhí)行過程大致如下圖所示。

執(zhí)行執(zhí)行執(zhí)行執(zhí)行

存數(shù)取數(shù)取指取指取指取指

忙忙忙忙忙

EU

BIU

外部總線

時間

…...

…...

…...

等待

13

2.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其用途

一、通用寄存器

AHAL

BHBL

CHCL

DHDL

AX

BX

CX

DX

SP

BP

SI

DI

IP

FLAGS

DS

ES

SS

CS

累加器

基址寄存器

計數(shù)寄存器

數(shù)據(jù)寄存器

堆棧寄存器

基址寄存器

源變址寄存器

目的變址寄存器

指令指針

標志寄存器

堆棧段寄存器

代碼段寄存器

數(shù)據(jù)段寄存器

附加段寄存器

通用寄存器8個

控制寄存器2個

段寄存器4個

14

Intel8086/8088有8個16位通用寄存器,它們一般不只

用作某個特定的功能,而是具有良好的通用性,可以由程

序設計人員進行編程訪問。

1.數(shù)據(jù)寄存器

它包括AX、BX、CX和DX四個寄存器。它們中的每一

個既可以是16位寄存器,也可以分成兩個8位寄存器使用。

即可以當作8個獨立的8位寄存器使用。

數(shù)據(jù)寄存器既可以用來存放參加運算的操作數(shù),也可以

存放運算的結(jié)果。在多數(shù)情況下,使用這些寄存器時必須在

指令中指明。

例:MOVAX,BX;將BX的內(nèi)容送到AX中

ADDCH,DH;將DH和CH的內(nèi)容相加,結(jié)果送到CH

15

在有些指令中,不需要明確指出使用的寄存器名,即

隱念使用了某寄存器,稱為隱含使用。

例如,在循環(huán)指令LOOP中,CX被隱含指定作循環(huán)次數(shù)計數(shù)用。

另外,個別指令對寄存器有特定的使用,并且又必須在

指令中指明它的名字,這類寄存器的使用稱為特定使用。

例如,在移位指令(SHLAX,CL)中,CL被固定用作移位次數(shù)。

2.指針寄存器

指針寄存器有堆棧指針SP和基址指針BP

它們一般被用作16位地址指針,在形成20位的物理地

址時常被作為偏移量使用。

來自

16

SP指針——在進行堆棧操作時,被隱含使用,指向堆棧頂

部單元。

BP指針——被用來指向堆棧段內(nèi)某一存儲單元。BP除用

作地址指針外也可以象數(shù)據(jù)寄存器一樣,存放參加運算的

操作數(shù)和運算的結(jié)果。

3.變址寄存器

有兩個16位的變址寄存器SI和DI,一般被用來作地址指針。

SI——源變址寄存器DI——目的變址寄存器

同BP寄存器一樣,SI和DI也可以用作通用數(shù)據(jù)寄存

器存放操作數(shù)和運算結(jié)果。

17

二、段寄存器

8086/8088CPU在使用存儲器時,將它劃分成若干個

段。每個段用來存放不同目的內(nèi)容,如程序代碼、數(shù)據(jù)等

等。每個存儲段用一個段寄存器來指明該段的起始位置

(也叫段基址)。

代碼段

數(shù)據(jù)段

堆棧段

附加段

ES

CS

DS

SS

段基址

段基址

段基址

段基址

18

CPU在訪問存儲器時必須指明兩個內(nèi)容:

(1)所訪問的存儲單元屬于哪個段,即指明使用的段

寄存器。

(2)該存儲單元與段起始地址(段基址)的偏移大小,

即偏移量。

在程序設計中,一個程序?qū)⒋鎯ζ鲃澐殖啥嗌賯€存

儲段是任意的。但在程序運行的任何時刻最多只能有用

CS、DS、ES和SS分別指定的4個當前段。

19

三、指令指針I(yè)P

CPU在運行程序時,以IP的內(nèi)容作為將要執(zhí)行指令

在內(nèi)存中的存放地址的偏移量,以段寄存器CS作為代碼

段的基址指針,即以CS和IP的內(nèi)容共同構(gòu)成了一條指令

的存放地址。

CPU根據(jù)CS和IP寄存器的內(nèi)容到內(nèi)存中去取指令,

當取出一條指令后,IP內(nèi)容自動修改為指向下一條指令。

...

...

...

CS

IP偏移量

代碼段基址

CPU

下一條指令

正在執(zhí)行的指令

20

子程序調(diào)用指令CALL,將IP原有內(nèi)容自動壓入堆棧,而將

子程序的入口地址偏移量自動送入IP,而返回指令RET,

又自動從堆棧中彈回原有IP的內(nèi)容。

轉(zhuǎn)移指令將指令中的目的地址的偏移量送入IP

例如,下面兩種指令就可以自動改變IP寄存器的內(nèi)容。

注意:IP的內(nèi)容不能被直接進行訪問,即不能用指令去

讀IP的值,也不能用指令給它賦值。但是可以通過某些指

令的執(zhí)行而自動修改IP的內(nèi)容。

21

四、標志寄存器

標志寄存器是用來反映CPU在程序運行時的某些狀態(tài),

如是否有進位、奇偶性、結(jié)果的符號、結(jié)果是否為零等等。

8086/8088CPU中標志寄存器的長度為16位,但其中只

有9位才有意義。

1514131211109876543210

OFDFIFTFSFZFAFPFCF

22

1.進位位CF

在進行算術(shù)運算時,若最高位(對字操作是第15位,字節(jié)

操作是第7位)產(chǎn)生進位或借位時CF被自動置“1”,否則置

“0”。

在移位類指令中,CF也被用來存放從最高位(左移時)

或最低位(右移時)移出的數(shù)值(0或1)。

2.奇偶位PF

當指令操作結(jié)果的低8位中含有1的個數(shù)為偶數(shù)時,則PF

被置1,否則PF被置0。

注意:PF只反映操作結(jié)果的低8位的奇偶性,與指令操

作數(shù)的長度無關(guān)。

23

3.輔助進位位AF

在進行算術(shù)運算時,若低字節(jié)的低四位向高4位產(chǎn)

生進位或借位,即第3位產(chǎn)生進位或借位時,AF位被置1,

否則置0。AF標志位用于十進制運算的調(diào)整。

注意:AF只反映運算結(jié)果低八位,與操作數(shù)長度無關(guān)。

4.零值位ZF

若運算結(jié)果各位全為0,則ZF被置1,否則置0。

5.符號位SF

將運算結(jié)果視為帶符號數(shù),當運算結(jié)果為負數(shù)時SF被

置1,為正數(shù)時,則置0。

24

由于第7位是字節(jié)操作數(shù)的符號位,而第15位是字

操作數(shù)的符號位,因此,SF位與運算結(jié)果的最高位

(第7位或第15位)相一致。

OF

當運算結(jié)果超過機器用補碼所能表示數(shù)的范圍時,

則OF置1,否則置0.

字節(jié)數(shù)據(jù),機器用補碼所能表示的數(shù)范圍為-128—+127。

字數(shù)據(jù)的表示范圍為:-32768—+32767

注意:溢出與進位是兩個完全不同的概念,不能相互混淆。

25

例如:計算-85D+(-1D)=-86D

10101011B

+)11111111B

10101010B1-86D

計算100D+100D=200D

01100100B

+)01100100B

11001000B-56D

CF=0,OF=1,結(jié)果發(fā)生溢出,即結(jié)果出錯。

進位被

丟棄

CF=1,OF=0,結(jié)果正確。

26

計算-85D+-117D=-202D

10101011B

+)10001011B

00110110B54D1

CF=1,OF=1,結(jié)果發(fā)生溢出,即結(jié)果出錯。

7.單步標志位TF(TraceFlag)

單步標志也叫跟蹤位,該標志為控制標志位,當

TF位被設置為1時,每執(zhí)行一條指令后,CPU暫停運行,

即產(chǎn)生單步中斷。單步標志位供調(diào)試程序使用。

27

8.中斷允許位IF

該標志位為控制標志位。當IF被設置為1時,CPU可以

響應可屏蔽中斷,否則不允許響應可屏蔽中斷。

9.方向位DF

DF也是控制標志位。它被用來規(guī)定串操作指令的增減

方向。當DF=0時,串操作指令自動使變址寄存器(SI和DI)

的內(nèi)容遞增。當DF=1時,串操作指令自動使變址寄存器的

內(nèi)容遞減。

28

存儲器

一、存儲器的組成

1.存儲器是由若干個存儲單元構(gòu)成

存儲單元的多少就表示了存儲器的容量。

2.每個存儲單元存放相同長度的二進制數(shù)

一個存儲單元的長度一般為8位二進制數(shù),稱為一個字節(jié)(BYTE)。

3.每個存儲單元有一個唯一的地址編碼——地址

8086/8088CPU具有20根地址線,即它可以產(chǎn)生20位

的地址碼,它的存儲器尋址能力為220,即1兆字節(jié)空間。

29

這一兆字節(jié)存儲單元的地址范圍為:00…...0~11…...1。如圖所示。

20位20位

…...

07

存儲單元(字節(jié))二進制數(shù)地址

00000000000000000000

00000000000000000001

00000000000000000010…...

11111111111111111110

11111111111111111111

十六進制數(shù)地址

00000H

00001H

00002H

FFFFEH

FFFFFH

…...

為了方便書寫,在源程序中常用5位十六進制數(shù)或一個符

號來表示一個存儲單元的地址。

30

4.任何兩個相鄰字節(jié)單元就構(gòu)成一個字單元

一個字存儲單元(WORD)的長度為16位二進

制數(shù),即兩個字節(jié)。字單元的地址為兩個字節(jié)單元中

較小地址字節(jié)單元的地址。

16位長數(shù)據(jù)的存放規(guī)則是低8位放在較低地址字

節(jié)單元中,高8位放在較高地址字節(jié)單元中。

例如,將數(shù)據(jù)3456H放在地址為09235H

的存儲單元中的存儲分配如圖所示。

...

...

地址存儲單元

09235H

09236H

56

34

31

5、在定義一個地址時必須指出是字節(jié)或字類型屬性

由于存儲單元可分為字單元和字節(jié)單元,因此

8086/8088CPU訪問內(nèi)存的指令中,分為字節(jié)訪問和字訪

問兩種指令。

二、存儲器的段結(jié)構(gòu)

8086/8088系統(tǒng)的存儲器段結(jié)構(gòu)具有以下幾個特點:

1.8086/8088CPU將1MB的存儲空間劃分成若干個段,每

個段最大長度為64K(65536)個字節(jié)單元組成。

在8086/8088的匯編程序中,用戶可以根據(jù)自己需要來

設定段的個數(shù)、各個段長度和每個段的用途。并且代碼或

數(shù)據(jù)可以存放在段內(nèi)任意單元中。

32

2.每個段的基址必須是一個小節(jié)的首址。

段基址——一個段的起始地址。

在存儲器中規(guī)定從0地址開始,每16個字節(jié)單元稱為一個小

節(jié)(Paragraph)。因此,1MB內(nèi)存就可劃分為64K個小節(jié)。

第1小節(jié):00000H,00001H,00002H……0000FH

第2小節(jié):00010H,00011H,00012H……0011FH

第65535小節(jié):FFFE0HFFFE1HFFFE2H……FFFEFH

第65536小節(jié):FFFF0HFFFF1HFFFF2H……FFFFFH

…..

…..

…..

…..

…..

可以看出,每個小節(jié)的首地址最低位必為0(16進制數(shù)表

示)。因此段基址只能是上述64K個小節(jié)首址之一。

33

3.邏輯段在物理存儲器中可以是鄰接的、間隔的、

部分重疊的和完全重疊的等4種情況。

邏輯段是指在匯編語言源程序中設置的段。

內(nèi)存中的一個物理存儲單元可以映象到一個或多個邏輯段中。

物理存儲器

00000H

10000H

DA_BYTE

1

2段

3段4

5

鄰接

部分重疊

完全重疊

間隔

邏輯段

0FFFFFH

DA_BYTE物理單元

可以映象到邏輯段2、

段3和段4中。

34

4、在任一時刻,一個程序只能訪問4個段中的內(nèi)容。

4個段分別是代碼段、數(shù)據(jù)段、堆棧段和附加段,

稱為當前段。4個段寄存器CS、DS、SS和ES分別保

存了它們段基址的高16位地址,稱為段基值。段基址

的最低4位為0。(小節(jié)首址的低4位為全0)。

三、邏輯地址與物理地址及相互關(guān)系

1.物理地址

在1MB的存儲空間中,每個存儲單元的物理地址是唯

一的,它就是該存儲單元的20位地址。

8086/8088的物理地址范圍:00000H~0FFFFFH

35

CPU與存儲器之間的任何信息交換都使用物理地址。

2.邏輯地址

在程序設計中,為了便于程序的開發(fā)和對存儲器進行動

態(tài)管理,使用了邏輯地址。

一個邏輯地址包括兩個部分:段基值和偏移量(OFFSET)

段基值:存放在某一個段寄存器中,是一個邏輯段的起始

單元地址(段基址)的高16位。

偏移量:表示某個存儲單元與它所在段的段基址之間的字

節(jié)距離。

當偏移量為0時,就是這個段的起始單元,而偏移量

為0FFFFFH時,就是這個段的最后一個字節(jié)單元。

36

邏輯地址的表示方法是段基值:偏移量

例:3267H:00A0H

它表示該邏輯單元位于段起始地址為32670H,段內(nèi)

偏移量為00A0H個字節(jié)。

當CPU要訪問存儲器時,需要由總線接口單元BIU將邏

輯地址轉(zhuǎn)換成物理地址。

轉(zhuǎn)換方法:將邏輯地址的段基值左移4位,形成20位的段基

址(低位為0)然后與16位的偏移量相加,結(jié)果即為20位的

物理地址。其轉(zhuǎn)換示例如圖所示。

37

段1:2B0H

段2:2C0H

002D3H

偏移量

23H偏移量

13H

0915H

003AH

09150H

003AH+)

0918AH

偏移量

段基值

物理地址

右圖表示同一個物理地址

002D3H被被兩個邏輯段中

的邏輯地址映射。

002B0H+00023H=002D3H

002C0H+00013H=002D3H

38

在程序的執(zhí)行過程中,CPU根據(jù)不同操作類型訪問存

儲器,其邏輯地址中段基值和偏移量的來源是不一樣的。

下表是各種操作類型所對應的邏輯地址的來源。

邏輯地址

隱含來源允許替代來源偏移量(OFFSET)

操作類型序號

1

2

3

4

5

6

取指令

堆棧操作

取源串

存目的串

以BP作基址

存取一般變量

DI

CS

SS

DS

ES

SS

DS

IP

SP

SI

有效地址EA

有效地址EA

CS,SS,ES

CS,DS,ES

CS,SS,ES

段基值

39

說明:

(1)允許替代來源也叫做段超越,它表示了段基值除使

用隱含的段寄存器外是否可以指定其它段寄存器來提供。

(2)有效地址EA,它表示根據(jù)指令所采用的尋址方式

(下一章介紹)計算出來的段內(nèi)偏移量。

40

堆棧及其操作方法

堆棧是一個特定的存儲區(qū),訪問該存儲區(qū)必須按照指

定的規(guī)則進行操作。

堆棧一般分為:和專用堆棧存儲器軟件堆棧

按堆棧的工作方式專門設計的存儲器專用堆棧存儲器

軟件堆棧由程序設計人員用軟件在內(nèi)存儲器中劃出的一塊

存儲區(qū)作為堆棧來使用。8086/8088就是這種方式。

堆棧的用途:主要用于暫存數(shù)據(jù)以及在過程調(diào)用或處理

中斷時保存斷點信息。

一、堆棧的構(gòu)造

41

堆棧

數(shù)

據(jù)

TOP

Bottom

...

...

主存

00000H堆棧的一端是固定的,

稱為棧底。棧底是堆棧存儲

區(qū)的最大地址單元。

另一端是浮動的,稱為

棧頂。在任何時刻,棧頂是

最后存入信息的存儲單元。

棧頂是隨著堆棧中存放信息

的多少而改變。

為了指示現(xiàn)在堆棧中存放數(shù)據(jù)位置,通常設置一個寄存

器來指示棧頂位置。其內(nèi)容就象一個指針一樣,因此被稱為

堆棧指針SP(StackPointer)。

SP的內(nèi)容始終指向棧頂單元

堆棧中數(shù)據(jù)進出都由SP來控制

42

在堆棧中存取數(shù)據(jù)的規(guī)則是:“先進后出FILO”

(First-InLost-Out)。即最先送入堆棧的數(shù)據(jù)要到最后

才能取出,而最后送入堆棧的數(shù)據(jù),最先取出。

二、8086/8088堆棧的組織

在8086/8088微機中堆棧是由堆棧段寄存器SS指定的一段存儲區(qū)。

SS

SP

堆棧

Bottom

Top

XX

XX

XX

XX

XX

XX

堆棧初始化時的SP

43

堆棧頂部由椎棧指針SP指示。SP中內(nèi)容始終表示堆

棧段基址與棧頂之間的距離(字節(jié)數(shù))。當SP內(nèi)容為最

大值時,表示堆棧為空。而當(SP)=0時,表示堆棧全

滿。

當SP被初始化時,指向棧底+2單元,其值就是個堆

棧的長度。由于SP是16位寄存器,因此堆棧最大64K字節(jié)

數(shù)據(jù)在堆棧中的存放格式是:以字為單位存放,數(shù)據(jù)

的低8位放在較低地址單元,高8位放在較高地址單元。

當用戶程序中要求的堆棧長度超過一個堆棧段的最

大長度64KB時,可以設置幾個堆棧段。通過改變堆棧段

寄存器SS的內(nèi)容,即可改變到另一個堆棧段,當改變了

堆棧段寄存器SS的內(nèi)容后,必須緊接著賦與SP新值。

44

三、堆棧操作

設置堆棧主要是對堆棧段寄存器SS和堆棧指針SP賦值。

例如:

STACK1SEGMEMTPARASTACK

DB100DUP(0)

STACK1ENDS

第一行中的PARASTACK就是用來說明本段為堆棧段。

當程序經(jīng)過匯編、連接并裝入內(nèi)存時,系統(tǒng)將自動為

其分配一個存儲區(qū)作為堆棧段,將這個段的段基址的高16

位送入SS中,而將程序指定的字節(jié)單元數(shù)100(64H)賦值

給SP,這樣堆棧就被設置好了。

45

PUSH

進棧就是把數(shù)據(jù)存入堆棧。由指令PUSH或者由機器自動

實現(xiàn),可以將通用寄存器、段寄存器或字存儲單元的內(nèi)容壓

入堆棧頂部。

例:PUSHAX;將寄存器AX的內(nèi)容壓入堆棧

PUSHDS;將段寄存器DS的內(nèi)容壓入堆棧

PUSHDATA-WORD;將字存儲單元DADA-WORD壓入

;堆棧

PUSHF;將標志寄存器內(nèi)容壓入堆棧。

進棧的執(zhí)行過程:

(1)首先將堆棧指針SP減2,即指向一個空的堆棧字單元

SP<=(SP)—2

46

(2)將要儲存的內(nèi)容(寄存器或存儲單元的內(nèi)容)送

入SP指向的字單元中。(SP)<=數(shù)據(jù)

例如,指令PUSHAX的執(zhí)行過程如下圖所示:

SS

ALAH

(AH)

(AL)現(xiàn)(SP)

原(SP)

...

...

...

SP

(SP)-2

(1)

(2)

00000H

47

POP

出棧操作由POP指令實現(xiàn),它從堆棧頂部彈出一個

字到通用寄存器、段寄存器或字存儲單元。

例如:POPAX;將棧頂字單元內(nèi)容彈出到AX

POPDS;將棧頂字單元內(nèi)容彈出到DS

POPDATA-WORD;將棧頂字單元內(nèi)容彈出到

;DATA-WORD存儲。

POPF;將棧頂字單元內(nèi)容送回標志寄存器F。

出棧的操作過程:

(1)將SP指向的字單元(即棧頂字單元)內(nèi)容送往指定

的寄存器或存儲器。即寄存器/存儲器<=(CSP)

48

(2)堆棧指針SP內(nèi)容加2,即SP<=(SP)+2

例如,指令POPAX的操作過程如下圖所示。

SP

(SP)+2

SS

ALAH

XX

XX

現(xiàn)(SP)

原(SP)

...

...

...

XX

XX

00000H(2)

(1)

黨政相關(guān)相關(guān)推薦

文庫吧 www.wenkub.com

鄂ICP備17016276號-1

總結(jié)

以上是生活随笔為你收集整理的FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。