《結構微處理器》PPT課件.ppt
《《結構微處理器》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《結構微處理器》PPT課件.ppt(67頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第2章IA 32結構微處理器 2 1IA 32結構微處理器的概要歷史 略 2 2IA 32微處理器的功能結構 2 3IA 32結構微處理器的執(zhí)行環(huán)境 注 IA 32 即Intel架構32位及以下微處理器 只講16位微處理器部分 本章主要教學內(nèi)容 Intel8086 8088的功能結構Intel8086 8088的寄存器組存儲器組織與段寄存器 本章教學目的及要求 掌握Intel8086的功能結構及特點掌握Intel8086的寄存器組 包括分類 名稱 作用等 掌握標志寄存器各個標志位的含義和用途掌握存儲器的組織方式和段寄存器的作用 2 2IA 32微處理器的功能結構 微處理器是微機的硬件核心主要包含指令執(zhí)行的運算和控制部件 還有多種寄存器對程序員來說 微處理器抽象為以名稱存取的寄存器 我們只講16位微處理器Intel8086 8088 2 2 1Intel8086的功能結構 8086的內(nèi)部結構從功能分成兩個單元總線接口單元BIU BusInterfaceUnit 管理8086與系統(tǒng)總線的接口 負責CPU對存儲器和外設進行訪問執(zhí)行單元EU ExecutionUnit 負責指令的譯碼 執(zhí)行和數(shù)據(jù)的運算兩個單元相互獨立 分別完成各自操作兩個單元可以并行執(zhí)行 實現(xiàn)指令取指和執(zhí)行的流水線操作 2 3IA 32微處理器的執(zhí)行環(huán)境 對匯編語言程序員來說 IA 32微處理器的執(zhí)行環(huán)境包括內(nèi)存 主存儲器 和可編程的寄存器組 內(nèi)存 主存儲器 是通過地址空間 即存儲器的地址 來訪問的 可編程的寄存器組是通過各自的名字來訪問的 回憶 寄存器是CPU內(nèi)部用來存放數(shù)據(jù)和指令的一種基本邏輯部件 2 3 1Intel8086的寄存器組 Intel8086內(nèi)部包含下列寄存器 組 執(zhí)行單元EU8個通用寄存器AXBXCXDXSPBPSIDI1個指令指針寄存器IP1個標志寄存器FLAGS4個段寄存器CSDSSSES 1 8086的通用寄存器 8086的16位通用寄存器是 AXBXCXDXSIDIBPSP其中前4個數(shù)據(jù)寄存器都還可以分成高8位和低8位兩個獨立的寄存器8086的8位通用寄存器是 AHBHCHDHALBLCLDL對其中某8位的操作 并不影響另外對應8位的數(shù)據(jù) 數(shù)據(jù)寄存器 數(shù)據(jù)寄存器用來存放計算的結果和操作數(shù) 也可以存放地址每個寄存器又有它們各自的專用目的AX Accumulator 累加器 使用頻度最高 用于算術 邏輯運算以及與外設傳送信息等 BX Base 基址寄存器 常用來存放存儲器地址 CX Count 計數(shù)器 作為循環(huán)和串操作等指令中的隱含計數(shù)器 DX Data 數(shù)據(jù)寄存器 常用來存放雙字長數(shù)據(jù)的高16位 或存放外設端口地址 變址寄存器 變址寄存器常用于存儲器尋址時提供地址SI SourceIndex 是源變址寄存器DI DestnationIndex 是目的變址寄存器串操作類指令中 SI和DI具有特別的功能 指針寄存器 指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù) SP StackPointer 為堆棧指針寄存器 指示棧頂?shù)钠频刂稴P不能再用于其他目的 具有專用目的BP BasePointer 為基址指針寄存器 表示數(shù)據(jù)在堆棧段中的基地址SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲單元地址 堆棧 Stack 堆棧是內(nèi)存中一個特殊的區(qū)域 它采用先進后出FILO FirstInLastOut 或后進先出LIFO LastInFirstOut 的原則進行存取操作 而不是隨機存取操作方式 堆棧通常由處理器自動維持 在8086中 由堆棧段寄存器SS和堆棧指針寄存器SP共同指示 指令指針I(yè)P 指令指針寄存器IP InstructionPointer 指示代碼段中指令的偏移地址它與代碼段寄存器CS聯(lián)用 確定下一條指令的物理地址計算機通過CS IP寄存器來控制指令序列的執(zhí)行流程IP寄存器是一個專用寄存器 2 標志寄存器 標志 Flag 用于反映指令執(zhí)行結果或控制指令執(zhí)行形式8086處理器的各種標志形成了一個16位的標志寄存器FLAGS 程序狀態(tài)字PSW寄存器 程序設計需要利用標志的狀態(tài) 標志的分類 狀態(tài)標志 用來記錄程序運行結果的狀態(tài)信息 許多指令的執(zhí)行都將相應地設置它CFZFSFPFOFAF控制標志 可由程序根據(jù)需要用指令設置 用于控制處理器執(zhí)行指令的方式DFIFTF 進位標志CF CarryFlag 當運算結果的最高有效位有進位 加法 或借位 減法 時 進位標志置1 即CF 1 否則CF 0 3AH 7CH B6H 沒有進位 CF 0AAH 7CH 1 26H 有進位 CF 1 零標志ZF ZeroFlag 若運算結果為0 則ZF 1 否則ZF 0 3AH 7CH B6H 結果不是零 ZF 084H 7CH 1 00H 結果是零 ZF 1 注意 ZF為1表示的結果是0 符號標志SF SignFlag 運算結果最高位為1 則SF 1 否則SF 0 3AH 7CH B6H 最高位D7 1 SF 184H 7CH 1 00H 最高位D7 0 SF 0 有符號數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號所以 最高有效位就是符號標志的狀態(tài) 奇偶標志PF ParityFlag 當運算結果最低字節(jié)中 1 的個數(shù)為零或偶數(shù)時 PF 1 否則PF 0 3AH 7CH B6H 10110110B結果中有5個1 是奇數(shù) PF 0 PF標志僅反映最低8位中 1 的個數(shù)是偶或奇 即使是進行16位字操作 溢出標志OF OverflowFlag 若算術運算的結果有溢出 則OF 1 否則OF 0 3AH 7CH B6H 產(chǎn)生溢出 OF 1 正數(shù)加正數(shù)結果為負數(shù) 故已溢出 AAH 7CH 1 26H 沒有溢出 OF 0 有進位 但未溢出 溢出標志OF OverflowFlag 問題什么是溢出 溢出和進位有什么區(qū)別 處理器怎么處理 程序員如何運用 如何判斷是否溢出 什么是溢出 處理器內(nèi)部以補碼表示有符號數(shù)8位表達的整數(shù)范圍是 127 12816位表達的范圍是 32767 32768如果運算結果超出這個范圍 就產(chǎn)生了溢出有溢出 說明有符號數(shù)的運算結果不正確 3AH 7CH B6H 就是58 124 182 已經(jīng)超出 128 127范圍 產(chǎn)生溢出 故OF 1 另一方面 補碼B6H表達的真值是 74 顯然運算結果也不正確 溢出和進位 溢出標志OF和進位標志CF是兩個意義不同的標志進位標志表示無符號數(shù)運算結果是否超出范圍 運算結果仍然正確 溢出標志表示有符號數(shù)運算結果是否超出范圍 運算結果已經(jīng)不正確 請看例子 溢出和進位的對比 例1 3AH 7CH B6H無符號數(shù)運算 58 124 182范圍內(nèi) 無進位有符號數(shù)運算 58 124 182范圍外 有溢出 例2 AAH 7CH 1 26H無符號數(shù)運算 170 124 294范圍外 有進位有符號數(shù)運算 86 124 38范圍內(nèi) 無溢出 如何運用溢出和進位 處理器對兩個操作數(shù)進行運算時 按照無符號數(shù)求得結果 并相應設置進位標志CF 同時 根據(jù)是否超出有符號數(shù)的范圍設置溢出標志OF 應該利用哪個標志 則由程序員來決定 也就是說 如果將參加運算的操作數(shù)認為是無符號數(shù) 就應該關心進位 認為是有符號數(shù) 則要注意是否溢出 溢出的判斷 判斷運算結果是否溢出有一個簡單的規(guī)則 只有當兩個相同符號數(shù)相加 包括不同符號數(shù)相減 而運算結果的符號與原數(shù)據(jù)符號相反時 產(chǎn)生溢出 因為 此時的運算結果顯然不正確其他情況下 則不會產(chǎn)生溢出 輔助進位標志AF AuxiliaryCarryFlag 3AH 7CH B6H D3有進位 AF 1 運算時D3位 低半字節(jié) 有進位或借位時 AF 1 否則AF 0 這個標志主要由處理器內(nèi)部使用 用于十進制算術運算調(diào)整指令中 用戶一般不必關心 練習題 執(zhí)行下面的運算 確定FLAGS中的各個狀態(tài)標志值 1 5439H 456AH 練習題 執(zhí)行下面的運算 確定FLAGS中的各個狀態(tài)標志值 1 5439H 456AH 運算結果最高位為1 SF 1 運算結果本身 0 ZF 0 低8位中1的個數(shù)為偶數(shù)個 PF 1 最高位沒有進位 CF 0 D3位向D4位有進位 AF 1 兩個正數(shù)相加等于負數(shù) OF 1 練習題 執(zhí)行下面的運算 確定FLAGS中的各個狀態(tài)標志值 2 A195H 69CAH 減法用 直接法 練習題 執(zhí)行下面的運算 確定FLAGS中的各個狀態(tài)標志值 2 A195H 69CAH 減法用 直接法 運算結果最高位為0 SF 0 運算結果本身 0 ZF 0 低8位中1的個數(shù)為奇數(shù)個 PF 0 最高位沒有借位 CF 0 D3位向D4位有借位 AF 1 負數(shù)減正數(shù)等于正數(shù) OF 1 方向標志DF DirectionFlag 用于串操作指令中 控制地址的變化方向 設置DF 0 存儲器地址自動增加 設置DF 1 存儲器地址自動減少 CLD指令復位方向標志 DF 0STD指令置位方向標志 DF 1 中斷允許標志IF Interrupt enableFlag 用于控制外部可屏蔽中斷是否可以被處理器響應 設置IF 1 則允許中斷 設置IF 0 則禁止中斷 CLI指令復位中斷標志 IF 0STI指令置位中斷標志 IF 1 陷阱標志TF TrapFlag 用于控制處理器進入單步操作方式 設置TF 0 處理器正常工作 設置TF 1 處理器單步執(zhí)行指令 單步執(zhí)行指令 處理器在每條指令執(zhí)行結束時 便產(chǎn)生一個編號為1的內(nèi)部中斷這種內(nèi)部中斷稱為單步中斷所以TF也稱為單步標志利用單步中斷可對程序進行逐條指令的調(diào)試這種逐條指令調(diào)試程序的方法就是單步調(diào)試 2 3 2存儲器組織與段寄存器 寄存器是微處理器內(nèi)部暫存數(shù)據(jù)的存儲單元 以名稱表示存儲器則是微處理器外部存放程序及其數(shù)據(jù)的空間程序及其數(shù)據(jù)可以長久存放在外存 在程序需要時才進入內(nèi)存內(nèi)存需要利用地址進行區(qū)別 數(shù)據(jù)信息的表達單位 計算機中信息的單位二進制位Bit 存儲一位二進制數(shù) 0或1字節(jié)Byte 8個二進制位 D7 D0字Word 16位 2個字節(jié) D15 D0雙字DWord 32位 4個字節(jié) D31 D0最低有效位LSB 數(shù)據(jù)的最低位 D0位最高有效位MSB 數(shù)據(jù)的最高位 對應字節(jié) 字 雙字分別指D7 D15 D31位 圖示 1 數(shù)據(jù)的存儲格式 低地址 存儲單元地址及其存儲內(nèi)容 每個存儲單元都有一個編號 被稱為存儲器地址每個存儲單元存放一個字節(jié)的內(nèi)容 0002H單元存放有一個數(shù)據(jù)34H表達為 0002H 34H 圖示 圖中2號 字 單元的內(nèi)容為 0002H 1234H2號 雙字 單元的內(nèi)容為 0002H 78561234H 多字節(jié)數(shù)據(jù)存放方式 多字節(jié)數(shù)據(jù)在存儲器中占連續(xù)的多個存儲單元 存放時 低字節(jié)存入低地址 高字節(jié)存入高地址 表達時 用它的低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間 圖示 圖中2號 字 單元的內(nèi)容為 0002H 1234H2號 雙字 單元的內(nèi)容為 0002H 78561234H 多字節(jié)數(shù)據(jù)存放方式 多字節(jié)數(shù)據(jù)在存儲器中占連續(xù)的多個存儲單元 存放時 低字節(jié)存入低地址 高字節(jié)存入高地址 表達時 用它的低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間 80 x86處理器采用 低對低 高對高 的存儲形式 被稱為 小端方式LittleEndian 相對應還存在 大端方式BigEndian 圖示 數(shù)據(jù)的地址對齊 同一個存儲器地址可以是字節(jié)單元地址 字單元地址 雙字單元地址等等字單元安排在偶地址 xxx0B 雙字單元安排在模4地址 xx00B 等 被稱為 地址對齊 Align 對于不對齊地址的數(shù)據(jù) 處理器訪問時 需要額外的訪問存儲器時間應該將數(shù)據(jù)的地址對齊 以取得較高的存取速度 視具體情況來確定 2 存儲器的分段管理 8086CPU有20條地址線最大可尋址空間為220 1MB物理地址范圍從00000H FFFFFH8086CPU將1MB空間分成許多邏輯段 Segment 每個段最大限制為64kB 因為地址寄存器是16位的 段地址的低4位為0000B這樣 一個存儲單元除具有一個唯一的物理地址外 還具有多個邏輯地址 物理地址和邏輯地址 對應每個物理存儲單元都有一個唯一的20位編號 就是物理地址 從00000H FFFFFH 是存儲器的絕對地址 分段后在用戶編程時 采用邏輯地址 形式為段基地址 段內(nèi)偏移地址 分隔符 邏輯地址 段地址說明邏輯段在內(nèi)存中的起始位置8086規(guī)定段地址必須是模16地址 xxxx0H省略低4位0000B 段地址就可以用16位數(shù)據(jù)表示 就能用16位段寄存器表達段地址偏移地址說明內(nèi)存單元距離段起始位置的偏移量每段不超過64kB 偏移地址也可用16位數(shù)據(jù)表示 物理地址和邏輯地址的轉(zhuǎn)換 將邏輯地址中的段地址左移4位 加上偏移地址就得到20位物理地址一個物理地址可以有多個邏輯地址 邏輯地址1460 100 1380 F00物理地址14700H14700H 物理地址和邏輯地址的轉(zhuǎn)換 物理地址的形成邏輯地址與物理地址 3 段寄存器 8086有4個16位段寄存器CS 代碼段 指明代碼段的起始地址SS 堆棧段 指明堆棧段的起始地址DS 數(shù)據(jù)段 指明數(shù)據(jù)段的起始地址ES 附加段 指明附加段的起始地址每個段寄存器用來確定一個邏輯段的起始地址 每種邏輯段均有各自的用途 代碼段 CodeSegment 代碼段用來存放程序的指令序列代碼段寄存器CS存放代碼段的段地址指令指針寄存器IP指示下條指令的偏移地址處理器利用CS IP取得下一條要執(zhí)行的指令 堆棧段 StackSegment 堆棧段確定堆棧所在的主存區(qū)域堆棧段寄存器SS存放堆棧段的段地址堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂诽幚砥骼肧S SP操作堆棧頂?shù)臄?shù)據(jù) 數(shù)據(jù)段 DataSegment 數(shù)據(jù)段存放運行程序所用的數(shù)據(jù)數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址由各種存儲器尋址方式 有效地址EA 得到存儲器中操作數(shù)的偏移地址處理器利用DS EA存取數(shù)據(jù)段中的數(shù)據(jù) 附加段 ExtraSegment 附加段是附加的數(shù)據(jù)段 也用于數(shù)據(jù)的保存 附加段寄存器ES存放附加段的段地址由各種存儲器尋址方式 有效地址EA 得到存儲器中操作數(shù)的偏移地址處理器利用ES EA存取附加段中的數(shù)據(jù)串操作指令將附加段作為其目的操作數(shù)的存放區(qū)域 段寄存器和其他寄存器的組合指向 如何分配各個邏輯段 程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數(shù)據(jù)默認是安排在數(shù)據(jù)段 也經(jīng)常安排在附加段 尤其是串操作的目的區(qū)必須是附加段數(shù)據(jù)的存放比較靈活 實際上可以存放在任何一種邏輯段中 段超越前綴指令 沒有指明時 一般的數(shù)據(jù)訪問在DS段 使用BP訪問內(nèi)存 則在SS段默認的情況允許改變 需要使用段超越前綴指令 8086指令系統(tǒng)中有4個 CS 代碼段超越 使用代碼段的數(shù)據(jù)SS 堆棧段超越 使用堆棧段的數(shù)據(jù)DS 數(shù)據(jù)段超越 使用數(shù)據(jù)段的數(shù)據(jù)ES 附加段超越 使用附加段的數(shù)據(jù) 段超越的示例 沒有段超越的指令實例 MOVAX 2000H AX DS 2000H 從默認的DS數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實例 MOVAX ES 2000H AX ES 2000H 從指定的ES附加段取出數(shù)據(jù) 段寄存器的使用規(guī)定 存儲器的分段 8086對邏輯段要求 段地址低4位均為0每段最大不超過64kB8086對邏輯段并不要求 必須是64kB各段之間完全分開 即可以重疊 各段獨立 各段重疊 最多多少段 最少多少段 邏輯段分配 各個邏輯段獨立 各個邏輯段重疊 1MB空間的分段 1MB空間最多能分成多少個段 每隔16個存儲單元就可以開始一個段 所以1MB最多可以有 220 16 216 64k個段1MB空間最少能分成多少個段 每隔64k個存儲單元開始一個段 所以1MB最少可以有 220 216 16個段 邏輯段分配 本章要點回顧 8086的內(nèi)部結構從功能分成兩個單元即 總線接口單元BIU和執(zhí)行單元EU對匯編語言程序員來說 IA 32微處理器的執(zhí)行環(huán)境包括內(nèi)存 主存儲器 和可編程的寄存器組 內(nèi)存 主存儲器 是通過地址空間即存儲器的地址來訪問的 可編程的寄存器組是通過各自的名字來訪問的 本章要點回顧 8086有8個8位通用寄存器 8個16位通用寄存器8086有6個狀態(tài)標志和3個控制標志溢出和進位的相關概念堆棧的概念8086將1MB存儲空間分段管理 有4個段寄存器 對應4種邏輯段 CS DS SS ES 本章要點回顧 8086有4個段超越前綴指令 用于明確指定數(shù)據(jù)所在的邏輯段存儲器物理地址和邏輯地址的概念 物理地址是唯一的 邏輯地址包括段地址和段內(nèi)偏移地址 每一個物理地址對應著多個邏輯地址 由邏輯地址計算物理地址 物理地址 段地址 16 偏移地址 本章內(nèi)容到此結束 Thankyou 8086的內(nèi)部結構 123456 內(nèi)部暫存器 IP ES SS DS CS 輸入 輸出控制電路 外部總線 執(zhí)行部分控制電路 ALU 標志寄存器 AHAL BHBL CHCL DHDL SP BP SI DI 通用寄存器 地址加法器 指令隊列 執(zhí)行單元 EU 總線接口單元 BIU 16位 20位 8位 8位 返回 8088的指令執(zhí)行過程 返回- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 結構微處理器 結構 微處理器 PPT 課件
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.zhongcaozhi.com.cn/p-7291519.html