ASM02IBMPC計算機組織課件_第1頁
ASM02IBMPC計算機組織課件_第2頁
ASM02IBMPC計算機組織課件_第3頁
ASM02IBMPC計算機組織課件_第4頁
ASM02IBMPC計算機組織課件_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

匯編語言程序設(shè)計第2章IBMPC計算機組織AssemblyLanguageProgramming匯編語言程序設(shè)計第2章IBMPC計算機組織Assem第2章IBMPC計算機組織2.180X86微處理器概述2.2基于微處理器的計算機系統(tǒng)組成2.3微處理器

2.3.1微處理器的結(jié)構(gòu)

2.3.280X86寄存器組2.4存儲器

2.4.1存儲單元的地址和內(nèi)容

2.4.2實模式存儲器尋址

2.4.3保護(hù)模式存儲器尋址第2章IBMPC計算機組織2.180X86微處理32.1 80X86微處理器將運算器和控制器集成在一個芯片上就構(gòu)成了微處理器(CPU),控制整個計算機的運作并進(jìn)行運算。8086/8088802868038680486Pentium字長1616323232數(shù)據(jù)總線DB16/816323264地址總線AB2024323232最大尋址1MB16MB4GB4GB4GB時鐘范圍(MHz)4.776~1616~4033~12066~166執(zhí)行速度(MIPS)0.050.4~0.83~420~75112~28080X86微處理器主要特征:32.1 80X86微處理器將運算2.2基于微處理器的計算機系統(tǒng)構(gòu)成計算機系統(tǒng)包括硬件和軟件兩大部分硬件:指計算機的物理實體(如CPU,顯卡等),它分為微處理器,存儲器,接口電路,外部設(shè)備

和系統(tǒng)總線

等。中央處理機CPU總線控制邏輯接口接口存儲器大容量存儲器I/O子系統(tǒng)系統(tǒng)總線I/O設(shè)備42.2基于微處理器的計算機系統(tǒng)構(gòu)成計算機系統(tǒng)包括硬件和軟件5軟件:指使用和發(fā)揮計算機效能的各種程序的總稱,通常我們將它分為兩大類:系統(tǒng)軟件:系統(tǒng)軟件主要用來對計算機系統(tǒng)實際運行進(jìn)行控制,管理和服務(wù)的。應(yīng)用軟件:指的是用戶自己編的各類應(yīng)用程序.系統(tǒng)軟件軟件數(shù)據(jù)庫管理系統(tǒng)工具軟件語言處理程序操作系統(tǒng)應(yīng)用軟件軟件包用戶程序5軟件:指使用和發(fā)揮計算機效能的各種程序的總稱,通常我們將它2.3中央微處理器2.3.1中央微處理器的組成及其編程結(jié)構(gòu)任務(wù):執(zhí)行存放在存儲器里的指令序列。組成:算術(shù)邏輯部件

進(jìn)行算術(shù)和邏輯運算。控制邏輯

負(fù)責(zé)對全機的控制工作。工作寄存器

存放計算過程中的各種信息。編程結(jié)構(gòu):CPU對匯編語言程序員來說,編程結(jié)構(gòu)主要由一組可見寄存器組成。6操作數(shù)地址、操作數(shù)、運算的中間結(jié)果2.3中央微處理器2.3.1中央微處理器的組成及其編程結(jié)構(gòu)7782.3.28086的寄存器組兩大類:程序不可見寄存器和程序可見寄存器。程序不可見寄存器——一般應(yīng)用程序中不使用而由系統(tǒng)使用的寄存器。程序可見寄存器——可以由指令使用的寄存器。包括三類:通用寄存器(8個)專用寄存器(2個)段寄存器(4個)82.3.28086的寄存器組兩大類:程序不可見寄存器80X86程序可見寄存器組EAXALAH累加器EBXBLBH基址變址ECXCLCH計數(shù)器EDXDLDH數(shù)據(jù)ESPSP

堆棧指針EBPBP

基址指針ESISI源變址EDIDI目的變址EIPIP指令指針EFLAGSFLAGS標(biāo)志CS

代碼段DS

數(shù)據(jù)段ES

附加段SS

堆棧段FSGSAXBXCXDX80X86程序可見寄存器組EAXALAH累加器EBXBLB101.通用寄存器(1)數(shù)據(jù)寄存器AX(accumulator):累加器,在乘除、I/O指令中使用BX(base):通用,基地址寄存器CX(count):通用,計數(shù)器DX(data):通用,雙字運算及I/O操作中使用。8個字節(jié)寄存器:AH、AL、BH、BL、CH、CL、DH、DL(2)指針或變址寄存器

SP(stackpointer)

:堆棧指針寄存器,用來指示棧頂?shù)钠频刂?/p>

BP(basepointer):基址寄存器,與SS聯(lián)用SI(sourceindex):源變址寄存器DI(destinationindex):目的變址寄存器。101.通用寄存器(3)32位通用寄存器EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI,在80386及其后繼機型中,所有32位通用寄存器既可以存放數(shù)據(jù),也可以存放地址,每個寄存器的專用特性與8086/8088和80286的一一對應(yīng)2.專用寄存器(1)IP(instructionpointer)/EIP:指令指針寄存器存放代碼段中的偏移地址,在程序的運行中始終指向下一條指令的首地址,與CS一起確定一條指令的物理地址。(2)FLAGS(ProgramStatusWord)/EFLAG:標(biāo)志寄存器存放反映處理器和運行程序執(zhí)行結(jié)果狀態(tài)的。11(3)32位通用寄存器11123.段寄存器專用于存放段地址(1)CS

(CodeSegment):代碼段寄存器(2)DS

(DataSegment):數(shù)據(jù)段寄存器(3)SS

(StackSegment):堆棧段寄存器(4)ES

(ExtraSegment):附加段寄存器(5)FS附加段寄存器:

附加段寄存器(6)GS附加段寄存器:附加段寄存器

(5)和(6)無缺省組合,必須加段前綴說明123.段寄存器138086/8088標(biāo)志寄存器(FLAGS/PSW)條件碼標(biāo)志:控制標(biāo)志:ZF零標(biāo)志

DF方向標(biāo)志SF符號標(biāo)志

IF中斷標(biāo)志CF進(jìn)位標(biāo)志

TF陷阱標(biāo)志OF溢出標(biāo)志AF輔助進(jìn)位標(biāo)志PF奇偶標(biāo)志1514131211109876543210CFPFAFZFSFTFIFDFOF138086/8088標(biāo)志寄存器(FLAGS/PS其它FLAGS標(biāo)志:(自學(xué))IOPL(I/OPrivilegeLevel)I/O特權(quán)級NT(NestedTask)嵌套任務(wù)標(biāo)志

;286增加RF(ResumeFlag)重新啟動標(biāo)志VM(Virtual8086Mode)虛擬8086模式位;386增加AC(AlignmentCheckMode)對準(zhǔn)檢查方式位;486增加VIF(VirtualInterruptFlag)虛擬中斷標(biāo)志VIP(VirtualInterruptPendingFlag)虛擬中斷未決標(biāo)志ID(IdentificationFlag)標(biāo)識標(biāo)志;Pentium增加其它FLAGS標(biāo)志:(自學(xué))15零標(biāo)志ZF(ZeroFlag)若運算結(jié)果為0,則ZF=1,否則ZF=0。例如:3AH+7CH=B6H, 結(jié)果非零:ZF=084H+7CH=(1)00H, 結(jié)果是零:ZF=1注意:ZF為1表示的結(jié)果是015零標(biāo)志ZF(ZeroFlag)若運算結(jié)果為0,則ZF16符號標(biāo)志SF(SignFlag)運算結(jié)果最高位為1,則SF=1;否則SF=0。例如:3AH+7CH=B6H,最高位D7=1:SF=184H+7CH=(1)00H,最高位D7=0:SF=0有符號數(shù)據(jù)利用最高有效位表示數(shù)據(jù)的符號。所以,最高有效位就是符號標(biāo)志的狀態(tài)。16符號標(biāo)志SF(SignFlag)運算結(jié)果最高位為1,則17進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運算結(jié)果的最高有效位有進(jìn)位(加法)或

借位(減法)時,進(jìn)位標(biāo)志置1,即CF=1;

否則CF=0。例如:3AH+7CH=B6H,即58+124=182

無進(jìn)位:CF=0AAH+7CH=(1)26H,即170+124=294有進(jìn)位:CF=117進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運算結(jié)果的最高有效18溢出標(biāo)志OF(OverflowFlag)若算術(shù)運算的結(jié)果有溢出,則OF=1;否則OF=0。溢出:有符號數(shù)運算結(jié)果超出了補碼表示范圍。處理器內(nèi)部以補碼表示有符號數(shù)

8位字長整數(shù)范圍:-128~+127

16位字長整數(shù)范圍:-32768~+32767例如:

3AH+7CH=B6H,即58+124=182

有溢出:OF=1AAH+7CH=(1)26H,即-86+124=28無溢出:OF=0什么是溢出?18溢出標(biāo)志OF(OverflowFlag)若算術(shù)運算的結(jié)19溢出和進(jìn)位進(jìn)位標(biāo)志CF

表示無符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果仍然正確(配合進(jìn)位)。溢出標(biāo)志OF

表示有符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果已經(jīng)不正確。處理器按照無符號數(shù)求得結(jié)果,并設(shè)置進(jìn)位標(biāo)志CF;同時,根據(jù)是否超出有符號數(shù)的范圍設(shè)置溢出標(biāo)志OF。程序員決定應(yīng)該利用哪個標(biāo)志。

認(rèn)為是無符號數(shù)運算,關(guān)心進(jìn)位標(biāo)志;

認(rèn)為是有符號數(shù)運算,注意溢出標(biāo)志。19溢出和進(jìn)位進(jìn)位標(biāo)志CF表示無符號數(shù)運算結(jié)果是否超出范20例:MOVAX,FFFFHMOVBX,1ADDAX,BX

指令執(zhí)行后,(AX)=0,OF=0,CF=1,ZF=1,SF=0例:MOVAX,1MOVBX,2ADDAX,BX

指令執(zhí)行后,(AX)=3,OF=0,CF=0,ZF=0,SF=020例:MOVAX,FFFFH例:MOVAX,212.3.380x86CPU的工作模式80x86CPU的3種工作模式1.實模式

與8086兼容的工作模式,只有低20位地址線起 作用,僅能尋址第一個1MB的內(nèi)存空間。

如:MSDOS運行在實模式下。2.保護(hù)模式 32位80x86CPU的主要工作模式,提供對程序

和數(shù)據(jù)進(jìn)行安全檢查的保護(hù)機制。

如:Windows9x/NT/2000運行在保護(hù)模式下。3.虛擬8086模式在Windows9x下,若打開一個MSDOS

窗口,運行一個DOS應(yīng)用程序,那么該程序就

運行在虛擬8086模式下。212.3.380x86CPU的工作模式80x86222.4存儲器2.4.1存儲單元的地址和內(nèi)容1.存儲信息的基本單位bit計算機中信息表示的最小單位,byte(8位)數(shù)據(jù)存取的最小單位2.地址:每一字節(jié)單元的編號,地址空間的范圍與地址

線數(shù)目有關(guān)。16位地址:0000H~FFFFH;20位地址:00000H~FFFFFH;3.內(nèi)容:存儲單元中存放的信息,如(0004)=78H4.匯編中的數(shù)據(jù)類型byte(8位)word(16位)

Dword(32位)

Fword(48位)……222.4存儲器存儲器結(jié)構(gòu)...存儲器0000H0001H0002H0003H0004H0005H0006HFFFEHFFFFH低字節(jié)高字節(jié)字單元字節(jié)單元低地址字節(jié)單元高地址字節(jié)單元563412存儲器結(jié)構(gòu)...242.4.1存儲單元的地址和內(nèi)容5.存儲形式:“低對低、高對高”的小端方式。6.數(shù)據(jù)的地址對齊

同一個存儲器地址可以是字節(jié)單元地址、字單元地址、雙字單元地址等。字單元安排在偶地址(xxx0B)、雙字單元安排在模4地址(xx00B)等被稱為“地址對齊(Align)”。

對于不對齊地址的數(shù)據(jù),處理器訪問時,需要額外的訪問存儲器時間。1)多字節(jié)數(shù)據(jù)需占連續(xù)的多個存儲單元,低字節(jié)存入低地址,高字節(jié)存入高地址。

2)多字節(jié)數(shù)據(jù)占據(jù)的地址空間用它的低地址表示。242.4.1存儲單元的地址和內(nèi)容1)多字節(jié)數(shù)據(jù)需占連續(xù)的2576543210100111110000H001001100001H000111100002H110101110003H存儲器1514131211109876543210字高位字節(jié)低位字節(jié)1001111100100110(0000H)=269FH(0002H)=D71EH(0001H)=1E26H

訪問兩次存儲器(0000H)=9FH(0001H)=26H(0002H)=1EH(0003H)=D7H25765432262.4.2實模式存儲器尋址8086/8088只能在實模式下。1.存儲器地址的分段

問題:16位結(jié)構(gòu)cpu如何解決20位地址的問題?解決:將存儲器分段(邏輯上),每段最大不超過64KB,段內(nèi)單元地址可用16位表示,稱為偏移地址,每段的起始地址稱為段地址(或段基址)。

規(guī)定:1)段地址必須取為小段首址。 2)從0地址單元開始,每16個單元為一小段。小段首地址為:00000H,00010H,00020H,…,FFFF0H。在一個1M的存儲器里,共有64K個小段。16位結(jié)構(gòu)CPU的特征:1)16位字長;2)16位寄存器(最大寬度);3)16位數(shù)據(jù)線。導(dǎo)致:cpu只能傳送16位的地址,尋址能力只有64K8086的內(nèi)存空間:1)內(nèi)存是一維的線性空間。2)每一個內(nèi)存單元在這個空間中都有唯一的物理地址;

3)有20位地址總線,可傳送20

位地址,尋址能力為1M。262.4.2實模式存儲器尋址8086/8088只能272.4.2實模式存儲器尋址8086/8088只能在實模式下。2.物理地址的計算方法邏輯地址

由段地址和偏移地址組成。物理地址=16D×

段地址+偏移地址

16位段地址015

16位偏移地址015+0

20位物理地址190000顯然,一個物理地址可以有多個邏輯地址地址加法器的工作過程8086CPU給出物理地址的方法272.4.2實模式存儲器尋址8086/8088只能存儲器分段管理的地址概念圖示:段內(nèi)偏移量偏移地址=段起始地址64K段內(nèi)地址0000H0001H……0FFFH…….FFFFH64K段內(nèi)地址0000H0001H……FFFFH30000H段內(nèi)偏移量偏移地址=段起始地址40000H30000H+0FFFH=30FFFH物理地址......存儲器0FFFH存儲器分段管理的地址概念圖示:段內(nèi)偏移量偏移地址=段起始地址29思考:1)1MB空間最多能分成多少個段?2)1MB空間最少能分成多少個段?3)小段有什么特征?每隔16個存儲單元就可以開始一個段,所以1MB最多可以有:220÷16=216=64K個段每隔64K個存儲單元開始一個段,所以1MB最少可以有:220÷216=16

個段29思考:1)1MB空間最多能分成多少個段?每隔16個303.段寄存器8086CPU有4個段寄存器:CS、DS、SS、ES,用來存放段地址。一般情況下,各段在存儲器中的分配是由操作系統(tǒng)負(fù)責(zé)的。(也可以在編程時指定)各段可以獨立每個段都占用64K存儲區(qū),也可以重疊每個段按實際大小分配存儲區(qū),

不一定占有64K的最大段空間。memory303.段寄存器memory314.段寄存器的使用規(guī)定訪問存儲器的方式默認(rèn)的段寄存器可超越的段寄存器偏移地址取指令 CS無IP堆棧操作 SS無SP一般數(shù)據(jù)訪問 DSCS、ES、SS有效地址EA(下列除外)串操作的源操作數(shù)DSCS、ES、SSSI串操作的目的操作數(shù)ES無 DIBP基址的尋址方式 SSCS、DS、ES有效地址EA314.段寄存器的使用規(guī)定322.4.3保護(hù)模式存儲器尋址

80286起,就引出了保護(hù)模式.(1)目的擴大尋址空間(超出1M),段長可從64K擴大到4GB或更多。支持多任務(wù)處理。支持虛擬存儲器特性。(2)保護(hù)模式存儲器尋址中的地址變換

邏輯地址由選擇器和偏移地址構(gòu)成。322.4.3保護(hù)模式存儲器尋址(2)保護(hù)模式存儲器尋址中33選擇器150偏移地址310地址轉(zhuǎn)換+存儲器段基地址段基地址所選段最大4GB所選存儲單元段寄存器保護(hù)模式存儲器尋址33選擇器150偏移地址3134(3)描述符描述符描述段的大小、段在存儲器中的位置及其控制和狀態(tài)信息。描述符的內(nèi)容由系統(tǒng)設(shè)置,有8個字節(jié)

基地址指定段的起始地址;

界限存放著該段的段長度;

訪問權(quán)該段在系統(tǒng)中的功能,并給出訪問該段的一些控制信息;

附加字段在386及其后繼機型,表示該段的一些屬性。系統(tǒng)按選擇器描述符基地址和界限值偏移地址相應(yīng)的存儲單元34(3)描述符35寄存器與存儲器的比較

寄存器存儲器在CPU內(nèi)部在CPU外部訪問速度快訪問速度慢容量小,成本高容量大,成本低用名字表示用地址表示沒有地址地址可用各種方式形成35寄存器與存儲器的比較寄存器362.5外部設(shè)備外部設(shè)備:I/O設(shè)備和大容量存儲器,通過接口電路與微機系統(tǒng)連接:外設(shè)接口

CPU。每個接口包含一組寄存器:數(shù)據(jù)寄存器:存放要在外設(shè)和主機之間傳送的數(shù)據(jù)狀態(tài)寄存器:保存外設(shè)或接口的狀態(tài)信息。命令寄存器:CPU發(fā)出的控制命令通過此寄存器送給外設(shè)或接口。每個寄存器有一個唯一的端口地址,組成了獨立于內(nèi)存儲器的I/O地址空間(0000h~ffffh,64KB).匯編語言程序員看到的,是端口(I/O地址)362.5外部設(shè)備外部設(shè)備:I/O設(shè)備和大容量存儲器37作業(yè)Page332.12.32.42.52.637作業(yè)Page332.1匯編語言程序設(shè)計第2章IBMPC計算機組織AssemblyLanguageProgramming匯編語言程序設(shè)計第2章IBMPC計算機組織Assem第2章IBMPC計算機組織2.180X86微處理器概述2.2基于微處理器的計算機系統(tǒng)組成2.3微處理器

2.3.1微處理器的結(jié)構(gòu)

2.3.280X86寄存器組2.4存儲器

2.4.1存儲單元的地址和內(nèi)容

2.4.2實模式存儲器尋址

2.4.3保護(hù)模式存儲器尋址第2章IBMPC計算機組織2.180X86微處理402.1 80X86微處理器將運算器和控制器集成在一個芯片上就構(gòu)成了微處理器(CPU),控制整個計算機的運作并進(jìn)行運算。8086/8088802868038680486Pentium字長1616323232數(shù)據(jù)總線DB16/816323264地址總線AB2024323232最大尋址1MB16MB4GB4GB4GB時鐘范圍(MHz)4.776~1616~4033~12066~166執(zhí)行速度(MIPS)0.050.4~0.83~420~75112~28080X86微處理器主要特征:32.1 80X86微處理器將運算2.2基于微處理器的計算機系統(tǒng)構(gòu)成計算機系統(tǒng)包括硬件和軟件兩大部分硬件:指計算機的物理實體(如CPU,顯卡等),它分為微處理器,存儲器,接口電路,外部設(shè)備

和系統(tǒng)總線

等。中央處理機CPU總線控制邏輯接口接口存儲器大容量存儲器I/O子系統(tǒng)系統(tǒng)總線I/O設(shè)備412.2基于微處理器的計算機系統(tǒng)構(gòu)成計算機系統(tǒng)包括硬件和軟件42軟件:指使用和發(fā)揮計算機效能的各種程序的總稱,通常我們將它分為兩大類:系統(tǒng)軟件:系統(tǒng)軟件主要用來對計算機系統(tǒng)實際運行進(jìn)行控制,管理和服務(wù)的。應(yīng)用軟件:指的是用戶自己編的各類應(yīng)用程序.系統(tǒng)軟件軟件數(shù)據(jù)庫管理系統(tǒng)工具軟件語言處理程序操作系統(tǒng)應(yīng)用軟件軟件包用戶程序5軟件:指使用和發(fā)揮計算機效能的各種程序的總稱,通常我們將它2.3中央微處理器2.3.1中央微處理器的組成及其編程結(jié)構(gòu)任務(wù):執(zhí)行存放在存儲器里的指令序列。組成:算術(shù)邏輯部件

進(jìn)行算術(shù)和邏輯運算。控制邏輯

負(fù)責(zé)對全機的控制工作。工作寄存器

存放計算過程中的各種信息。編程結(jié)構(gòu):CPU對匯編語言程序員來說,編程結(jié)構(gòu)主要由一組可見寄存器組成。43操作數(shù)地址、操作數(shù)、運算的中間結(jié)果2.3中央微處理器2.3.1中央微處理器的組成及其編程結(jié)構(gòu)447452.3.28086的寄存器組兩大類:程序不可見寄存器和程序可見寄存器。程序不可見寄存器——一般應(yīng)用程序中不使用而由系統(tǒng)使用的寄存器。程序可見寄存器——可以由指令使用的寄存器。包括三類:通用寄存器(8個)專用寄存器(2個)段寄存器(4個)82.3.28086的寄存器組兩大類:程序不可見寄存器80X86程序可見寄存器組EAXALAH累加器EBXBLBH基址變址ECXCLCH計數(shù)器EDXDLDH數(shù)據(jù)ESPSP

堆棧指針EBPBP

基址指針ESISI源變址EDIDI目的變址EIPIP指令指針EFLAGSFLAGS標(biāo)志CS

代碼段DS

數(shù)據(jù)段ES

附加段SS

堆棧段FSGSAXBXCXDX80X86程序可見寄存器組EAXALAH累加器EBXBLB471.通用寄存器(1)數(shù)據(jù)寄存器AX(accumulator):累加器,在乘除、I/O指令中使用BX(base):通用,基地址寄存器CX(count):通用,計數(shù)器DX(data):通用,雙字運算及I/O操作中使用。8個字節(jié)寄存器:AH、AL、BH、BL、CH、CL、DH、DL(2)指針或變址寄存器

SP(stackpointer)

:堆棧指針寄存器,用來指示棧頂?shù)钠频刂?/p>

BP(basepointer):基址寄存器,與SS聯(lián)用SI(sourceindex):源變址寄存器DI(destinationindex):目的變址寄存器。101.通用寄存器(3)32位通用寄存器EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI,在80386及其后繼機型中,所有32位通用寄存器既可以存放數(shù)據(jù),也可以存放地址,每個寄存器的專用特性與8086/8088和80286的一一對應(yīng)2.專用寄存器(1)IP(instructionpointer)/EIP:指令指針寄存器存放代碼段中的偏移地址,在程序的運行中始終指向下一條指令的首地址,與CS一起確定一條指令的物理地址。(2)FLAGS(ProgramStatusWord)/EFLAG:標(biāo)志寄存器存放反映處理器和運行程序執(zhí)行結(jié)果狀態(tài)的。48(3)32位通用寄存器11493.段寄存器專用于存放段地址(1)CS

(CodeSegment):代碼段寄存器(2)DS

(DataSegment):數(shù)據(jù)段寄存器(3)SS

(StackSegment):堆棧段寄存器(4)ES

(ExtraSegment):附加段寄存器(5)FS附加段寄存器:

附加段寄存器(6)GS附加段寄存器:附加段寄存器

(5)和(6)無缺省組合,必須加段前綴說明123.段寄存器508086/8088標(biāo)志寄存器(FLAGS/PSW)條件碼標(biāo)志:控制標(biāo)志:ZF零標(biāo)志

DF方向標(biāo)志SF符號標(biāo)志

IF中斷標(biāo)志CF進(jìn)位標(biāo)志

TF陷阱標(biāo)志OF溢出標(biāo)志AF輔助進(jìn)位標(biāo)志PF奇偶標(biāo)志1514131211109876543210CFPFAFZFSFTFIFDFOF138086/8088標(biāo)志寄存器(FLAGS/PS其它FLAGS標(biāo)志:(自學(xué))IOPL(I/OPrivilegeLevel)I/O特權(quán)級NT(NestedTask)嵌套任務(wù)標(biāo)志

;286增加RF(ResumeFlag)重新啟動標(biāo)志VM(Virtual8086Mode)虛擬8086模式位;386增加AC(AlignmentCheckMode)對準(zhǔn)檢查方式位;486增加VIF(VirtualInterruptFlag)虛擬中斷標(biāo)志VIP(VirtualInterruptPendingFlag)虛擬中斷未決標(biāo)志ID(IdentificationFlag)標(biāo)識標(biāo)志;Pentium增加其它FLAGS標(biāo)志:(自學(xué))52零標(biāo)志ZF(ZeroFlag)若運算結(jié)果為0,則ZF=1,否則ZF=0。例如:3AH+7CH=B6H, 結(jié)果非零:ZF=084H+7CH=(1)00H, 結(jié)果是零:ZF=1注意:ZF為1表示的結(jié)果是015零標(biāo)志ZF(ZeroFlag)若運算結(jié)果為0,則ZF53符號標(biāo)志SF(SignFlag)運算結(jié)果最高位為1,則SF=1;否則SF=0。例如:3AH+7CH=B6H,最高位D7=1:SF=184H+7CH=(1)00H,最高位D7=0:SF=0有符號數(shù)據(jù)利用最高有效位表示數(shù)據(jù)的符號。所以,最高有效位就是符號標(biāo)志的狀態(tài)。16符號標(biāo)志SF(SignFlag)運算結(jié)果最高位為1,則54進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運算結(jié)果的最高有效位有進(jìn)位(加法)或

借位(減法)時,進(jìn)位標(biāo)志置1,即CF=1;

否則CF=0。例如:3AH+7CH=B6H,即58+124=182

無進(jìn)位:CF=0AAH+7CH=(1)26H,即170+124=294有進(jìn)位:CF=117進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運算結(jié)果的最高有效55溢出標(biāo)志OF(OverflowFlag)若算術(shù)運算的結(jié)果有溢出,則OF=1;否則OF=0。溢出:有符號數(shù)運算結(jié)果超出了補碼表示范圍。處理器內(nèi)部以補碼表示有符號數(shù)

8位字長整數(shù)范圍:-128~+127

16位字長整數(shù)范圍:-32768~+32767例如:

3AH+7CH=B6H,即58+124=182

有溢出:OF=1AAH+7CH=(1)26H,即-86+124=28無溢出:OF=0什么是溢出?18溢出標(biāo)志OF(OverflowFlag)若算術(shù)運算的結(jié)56溢出和進(jìn)位進(jìn)位標(biāo)志CF

表示無符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果仍然正確(配合進(jìn)位)。溢出標(biāo)志OF

表示有符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果已經(jīng)不正確。處理器按照無符號數(shù)求得結(jié)果,并設(shè)置進(jìn)位標(biāo)志CF;同時,根據(jù)是否超出有符號數(shù)的范圍設(shè)置溢出標(biāo)志OF。程序員決定應(yīng)該利用哪個標(biāo)志。

認(rèn)為是無符號數(shù)運算,關(guān)心進(jìn)位標(biāo)志;

認(rèn)為是有符號數(shù)運算,注意溢出標(biāo)志。19溢出和進(jìn)位進(jìn)位標(biāo)志CF表示無符號數(shù)運算結(jié)果是否超出范57例:MOVAX,FFFFHMOVBX,1ADDAX,BX

指令執(zhí)行后,(AX)=0,OF=0,CF=1,ZF=1,SF=0例:MOVAX,1MOVBX,2ADDAX,BX

指令執(zhí)行后,(AX)=3,OF=0,CF=0,ZF=0,SF=020例:MOVAX,FFFFH例:MOVAX,582.3.380x86CPU的工作模式80x86CPU的3種工作模式1.實模式

與8086兼容的工作模式,只有低20位地址線起 作用,僅能尋址第一個1MB的內(nèi)存空間。

如:MSDOS運行在實模式下。2.保護(hù)模式 32位80x86CPU的主要工作模式,提供對程序

和數(shù)據(jù)進(jìn)行安全檢查的保護(hù)機制。

如:Windows9x/NT/2000運行在保護(hù)模式下。3.虛擬8086模式在Windows9x下,若打開一個MSDOS

窗口,運行一個DOS應(yīng)用程序,那么該程序就

運行在虛擬8086模式下。212.3.380x86CPU的工作模式80x86592.4存儲器2.4.1存儲單元的地址和內(nèi)容1.存儲信息的基本單位bit計算機中信息表示的最小單位,byte(8位)數(shù)據(jù)存取的最小單位2.地址:每一字節(jié)單元的編號,地址空間的范圍與地址

線數(shù)目有關(guān)。16位地址:0000H~FFFFH;20位地址:00000H~FFFFFH;3.內(nèi)容:存儲單元中存放的信息,如(0004)=78H4.匯編中的數(shù)據(jù)類型byte(8位)word(16位)

Dword(32位)

Fword(48位)……222.4存儲器存儲器結(jié)構(gòu)...存儲器0000H0001H0002H0003H0004H0005H0006HFFFEHFFFFH低字節(jié)高字節(jié)字單元字節(jié)單元低地址字節(jié)單元高地址字節(jié)單元563412存儲器結(jié)構(gòu)...612.4.1存儲單元的地址和內(nèi)容5.存儲形式:“低對低、高對高”的小端方式。6.數(shù)據(jù)的地址對齊

同一個存儲器地址可以是字節(jié)單元地址、字單元地址、雙字單元地址等。字單元安排在偶地址(xxx0B)、雙字單元安排在模4地址(xx00B)等被稱為“地址對齊(Align)”。

對于不對齊地址的數(shù)據(jù),處理器訪問時,需要額外的訪問存儲器時間。1)多字節(jié)數(shù)據(jù)需占連續(xù)的多個存儲單元,低字節(jié)存入低地址,高字節(jié)存入高地址。

2)多字節(jié)數(shù)據(jù)占據(jù)的地址空間用它的低地址表示。242.4.1存儲單元的地址和內(nèi)容1)多字節(jié)數(shù)據(jù)需占連續(xù)的6276543210100111110000H001001100001H000111100002H110101110003H存儲器1514131211109876543210字高位字節(jié)低位字節(jié)1001111100100110(0000H)=269FH(0002H)=D71EH(0001H)=1E26H

訪問兩次存儲器(0000H)=9FH(0001H)=26H(0002H)=1EH(0003H)=D7H25765432632.4.2實模式存儲器尋址8086/8088只能在實模式下。1.存儲器地址的分段

問題:16位結(jié)構(gòu)cpu如何解決20位地址的問題?解決:將存儲器分段(邏輯上),每段最大不超過64KB,段內(nèi)單元地址可用16位表示,稱為偏移地址,每段的起始地址稱為段地址(或段基址)。

規(guī)定:1)段地址必須取為小段首址。 2)從0地址單元開始,每16個單元為一小段。小段首地址為:00000H,00010H,00020H,…,FFFF0H。在一個1M的存儲器里,共有64K個小段。16位結(jié)構(gòu)CPU的特征:1)16位字長;2)16位寄存器(最大寬度);3)16位數(shù)據(jù)線。導(dǎo)致:cpu只能傳送16位的地址,尋址能力只有64K8086的內(nèi)存空間:1)內(nèi)存是一維的線性空間。2)每一個內(nèi)存單元在這個空間中都有唯一的物理地址;

3)有20位地址總線,可傳送20

位地址,尋址能力為1M。262.4.2實模式存儲器尋址8086/8088只能642.4.2實模式存儲器尋址8086/8088只能在實模式下。2.物理地址的計算方法邏輯地址

由段地址和偏移地址組成。物理地址=16D×

段地址+偏移地址

16位段地址015

16位偏移地址015+0

20位物理地址190000顯然,一個物理地址可以有多個邏輯地址地址加法器的工作過程8086CPU給出物理地址的方法272.4.2實模式存儲器尋址8086/8088只能存儲器分段管理的地址概念圖示:段內(nèi)偏移量偏移地址=段起始地址64K段內(nèi)地址0000H0001H……0FFFH…….FFFFH64K段內(nèi)地址0000H0001H……FFFFH30000H段內(nèi)偏移量偏移地址=段起始地址40000H30000H+0FFFH=30FFFH物理地址......存儲器0FFFH存儲器分段管理的地址概念圖示:段內(nèi)偏移量偏移地址=段起始地址66思考:1)1MB空間最多能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論