![第2章 處理器結構_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/03e37715-cb4a-4c7f-a355-c813259da68f/03e37715-cb4a-4c7f-a355-c813259da68f1.gif)
![第2章 處理器結構_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/03e37715-cb4a-4c7f-a355-c813259da68f/03e37715-cb4a-4c7f-a355-c813259da68f2.gif)
![第2章 處理器結構_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/03e37715-cb4a-4c7f-a355-c813259da68f/03e37715-cb4a-4c7f-a355-c813259da68f3.gif)
![第2章 處理器結構_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/03e37715-cb4a-4c7f-a355-c813259da68f/03e37715-cb4a-4c7f-a355-c813259da68f4.gif)
![第2章 處理器結構_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/5/03e37715-cb4a-4c7f-a355-c813259da68f/03e37715-cb4a-4c7f-a355-c813259da68f5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第 2 2 章章處理器結構處理器結構2.1 2.1 處理器功能結構處理器功能結構2.2 2.2 寄存器寄存器2.3 2.3 存儲器組織存儲器組織2.4 2.4 匯編語言基礎匯編語言基礎2.5 2.5 數據尋址方式數據尋址方式2.1 2.1 處理器功能結構處理器功能結構從應用角度看到的處理器內部結構從應用角度看到的處理器內部結構Intel 803868位CPUIntel PentiumIntel 80862.1.1 2.1.1 處理器基本結構處理器基本結構算術邏輯單元算術邏輯單元寄存器寄存器指令處理單元指令處理單元內部數據總線內部數據總線控制總線控制總線數據總線數據總線地址總線地址總線暫存器暫
2、存器累加器累加器ALU標志寄存器標志寄存器指指令令寄寄存存指指令令譯譯碼碼時序時序和和控制控制邏輯邏輯通通 用用寄存器組寄存器組地地 址址寄存器組寄存器組地址地址總線總線控制控制數據數據總線總線控制控制1. 1. 算術邏輯單元算術邏輯單元ALUALU計算機的運算器,負責處理器所能進行的各計算機的運算器,負責處理器所能進行的各種運算,主要就是算術運算和邏輯運算種運算,主要就是算術運算和邏輯運算累加器結構的處理器累加器結構的處理器累加器(累加器(AccumulatorAccumulator)提供一個操作數提供一個操作數保存運算結果保存運算結果標志(標志(FlagFlag)寄存器)寄存器反映運算結果
3、的輔助信息反映運算結果的輔助信息例如例如: :有無進借位、是否為零、是否為負等有無進借位、是否為零、是否為負等也稱為程序狀態(tài)字(也稱為程序狀態(tài)字(PSWPSW)2. 2. 寄存器(寄存器(RegisterRegister)處理器內部需要高速存儲單元,用于暫時存處理器內部需要高速存儲單元,用于暫時存放程序執(zhí)行過程中的代碼和數據放程序執(zhí)行過程中的代碼和數據透明寄存器透明寄存器對應用人員不可見、不能直接控制的寄存器對應用人員不可見、不能直接控制的寄存器可編程(可編程(ProgrammableProgrammable)寄存器)寄存器具有引用名稱、供編程使用具有引用名稱、供編程使用通用寄存器通用寄存器數
4、量較多、使用頻度較高,具有多種用途數量較多、使用頻度較高,具有多種用途專用寄存器專用寄存器只用于特定目的只用于特定目的3. 3. 指令處理單元指令處理單元處理器的控制單元,它控制指令的執(zhí)行和信處理器的控制單元,它控制指令的執(zhí)行和信息的傳輸息的傳輸指令執(zhí)行的過程指令執(zhí)行的過程取指:指令處理單元將指令從主存取出,并通取指:指令處理單元將指令從主存取出,并通過總線傳輸到處理器內部的指令寄存器過總線傳輸到處理器內部的指令寄存器譯碼:指令處理單元通過指令譯碼電路獲得該譯碼:指令處理單元通過指令譯碼電路獲得該指令的功能指令的功能執(zhí)行:指令處理單元的時序和控制邏輯按一定執(zhí)行:指令處理單元的時序和控制邏輯按一
5、定的時間順序發(fā)出和接收相應信號,完成指令所的時間順序發(fā)出和接收相應信號,完成指令所要求的操作要求的操作2.1.2 80862.1.2 8086的功能結構的功能結構1 2 3 4 5 6內部寄存器內部寄存器 IP ES SS DS CS輸入輸入/輸出輸出控制電路控制電路外部總線外部總線執(zhí)行部分執(zhí)行部分控制電路控制電路ALU標志寄存器標志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令隊列指令隊列執(zhí)行單元執(zhí)行單元 (EU)總線接口單元總線接口單元 (BIU)16位位20位位16位位1. 1. 總線接口單元和執(zhí)行單元總線接口單元
6、和執(zhí)行單元總線接口單元總線接口單元指令隊列、指令指針、段寄存器、地址加法器和總線控指令隊列、指令指針、段寄存器、地址加法器和總線控制邏輯制邏輯管理與系統(tǒng)總線的接口,負責對存儲器和外設訪問管理與系統(tǒng)總線的接口,負責對存儲器和外設訪問執(zhí)行單元執(zhí)行單元ALUALU、通用寄存器、標志寄存器和控制電路、通用寄存器、標志寄存器和控制電路負責指令譯碼、數據運算和指令執(zhí)行負責指令譯碼、數據運算和指令執(zhí)行指令執(zhí)行的兩個主要階段:取指和執(zhí)行指令執(zhí)行的兩個主要階段:取指和執(zhí)行取指:從主存取出指令代碼進入指令隊列取指:從主存取出指令代碼進入指令隊列執(zhí)行:譯碼指令、并發(fā)出有關控制信號實現(xiàn)指執(zhí)行:譯碼指令、并發(fā)出有關控制
7、信號實現(xiàn)指令功能令功能指令演示指令演示返回返回80888088指令執(zhí)行過程示意指令執(zhí)行過程示意2. 2. 指令預取(指令預?。≒refetchPrefetch)80868086處理器的指令讀取,實際上是指令預取處理器的指令讀取,實際上是指令預取80868086處理器維護著長度為處理器維護著長度為6 6個字節(jié)的指令隊列個字節(jié)的指令隊列EUEU單元譯碼單元譯碼、執(zhí)行指令,同時、執(zhí)行指令,同時BIUBIU單元讀取后續(xù)單元讀取后續(xù)指令指令BIUBIU和和EUEU兩個單元相互獨立,可以并行操作兩個單元相互獨立,可以并行操作最簡單的指令流水線技術最簡單的指令流水線技術節(jié)省許多取指時間,提高了工作效率節(jié)省許
8、多取指時間,提高了工作效率程序轉移將使預取指令作廢,降低了效率程序轉移將使預取指令作廢,降低了效率2.1.3 803862.1.3 80386的功能結構的功能結構總線接口單元:總線接口單元:為處理器提供同外部的接口為處理器提供同外部的接口指令預取單元:指令預取單元:先行讀取指令先行讀取指令指令譯碼單元:指令譯碼單元:從預取隊列中取來指令,譯碼從預取隊列中取來指令,譯碼成微指令代碼成微指令代碼執(zhí)行單元:執(zhí)行單元:ALUALU、乘法器、除法器和移位器等、乘法器、除法器和移位器等 分段單元:分段單元:邏輯地址變換成線性地址邏輯地址變換成線性地址分頁單元:分頁單元:將線性地址變換成物理地址將線性地址變
9、換成物理地址示意圖示意圖8038680386的功能結構的功能結構返回返回2.1.4 Pentium2.1.4 Pentium的功能結構的功能結構1. 1. 超標量流水線:超標量流水線:2 2條指令流水線條指令流水線2. 2. 分離分離CacheCache:指令指令CacheCache和數據和數據CacheCache3. 3. 動態(tài)分支預測:動態(tài)分支預測:預測程序執(zhí)行順序預測程序執(zhí)行順序4. 4. 其他其他性能增強的浮點處理單元性能增強的浮點處理單元FPUFPU常用指令固化常用指令固化改進復雜指令的微代碼算法改進復雜指令的微代碼算法節(jié)能特性節(jié)能特性電源電壓:電源電壓:3.3V3.3V示意圖示意圖
10、PentiumPentium的功能結構的功能結構返回返回2.2 2.2 寄存器寄存器寄存器就是暫時存放數據的地方寄存器就是暫時存放數據的地方通過編寫程序、由處理器執(zhí)行指令控制通過編寫程序、由處理器執(zhí)行指令控制IA-32IA-32處理器基本執(zhí)行環(huán)境:處理器基本執(zhí)行環(huán)境:8 8個個3232位通用寄存器位通用寄存器6 6個個1616位段寄存器位段寄存器3232位標志寄存器位標志寄存器3232位指令指針位指令指針對應用人員(程序員)來說,對應用人員(程序員)來說,處理器被抽象為可編程寄存器處理器被抽象為可編程寄存器示意圖示意圖IA-32IA-32常用寄存器常用寄存器返回返回2.2.1 2.2.1 通用
11、寄存器通用寄存器處理器最常使用的整數通用寄存器處理器最常使用的整數通用寄存器可用于保存整數數據、地址等可用于保存整數數據、地址等 8 8個個3232位通用寄存器位通用寄存器EAXEAX,EBXEBX,ECXECX,EDXEDX,ESIESI,EDIEDI,EBPEBP,ESPESP8 8個個1616位通用寄存器位通用寄存器AXAX,BXBX,CXCX,DXDX,SISI,DIDI,BPBP,SPSP8 8個個8 8位通用寄存器位通用寄存器AHAH,ALAL,BHBH,BLBL,CHCH,CLCL,DHDH,DLDL存取存取16位寄存器,高位寄存器,高16位不受影響位不受影響存取存取8位寄存器,
12、位寄存器,16/32位寄存器其他位不受影響位寄存器其他位不受影響示意圖示意圖通用寄存器的名稱通用寄存器的名稱EAXEAX:累加器:累加器(Accumulator)(Accumulator)EBXEBX:基址寄存器:基址寄存器(Base)(Base)ECXECX:計數器:計數器(Counter)(Counter)EDXEDX:數據寄存器:數據寄存器(Data)(Data)ESIESI:源變址寄存器:源變址寄存器(Source Index)(Source Index)EDIEDI:目的變址寄存器:目的變址寄存器(Destination Index)(Destination Index)EBPEBP
13、:基址指針:基址指針(Base Pointer)(Base Pointer)ESPESP:堆棧指針:堆棧指針(Stack Pointer)(Stack Pointer)示意圖示意圖2.2.2 2.2.2 標志寄存器標志寄存器標志(標志(FlagFlag)反映指令執(zhí)行結果或控制指令執(zhí)行形式反映指令執(zhí)行結果或控制指令執(zhí)行形式用一個或多個二進制位表示一種標志用一個或多個二進制位表示一種標志0 0或或1 1的不同組合表達標志的不同狀態(tài)的不同組合表達標志的不同狀態(tài)80868086支持支持1616位標志寄存器位標志寄存器FLAGSFLAGSIA-32IA-32處理器形成處理器形成3232位位EFLAGSE
14、FLAGS標志寄存器標志寄存器狀態(tài)標志:記錄指令執(zhí)行結果的輔助信息狀態(tài)標志:記錄指令執(zhí)行結果的輔助信息控制標志:方向標志控制標志:方向標志DFDF,僅用于串操作指令,僅用于串操作指令系統(tǒng)標志:控制操作系統(tǒng)或核心管理程序的操系統(tǒng)標志:控制操作系統(tǒng)或核心管理程序的操作方式作方式示意圖示意圖標志寄存器標志寄存器EFLAGSEFLAGS返回返回1. 1. 狀態(tài)標志狀態(tài)標志最基本的標志,有最基本的標志,有6 6個個用來記錄指令執(zhí)行結果的輔助信息用來記錄指令執(zhí)行結果的輔助信息加減運算和邏輯運算指令是主要設置它們加減運算和邏輯運算指令是主要設置它們其他有些指令的執(zhí)行也會相應地設置它們其他有些指令的執(zhí)行也會相
15、應地設置它們處理器主要使用其中處理器主要使用其中5 5個構成各種條件,分個構成各種條件,分支指令判斷這些條件實現(xiàn)程序分支支指令判斷這些條件實現(xiàn)程序分支 OF11DF10IF9TF8SF7ZF605AF403PF211CF0進位標志進位標志CFCF(Carry FlagCarry Flag)當加減運算結果的最高有效位當加減運算結果的最高有效位有進位有進位(加法)(加法)或或借位借位(減法)時,進位標志置(減法)時,進位標志置1 1,即,即CFCF1 1;否則否則CFCF0 0針對無符號整數,判斷加減結果是否超出表針對無符號整數,判斷加減結果是否超出表達范圍達范圍N N個二進制位表達無符號整數的范
16、圍:個二進制位表達無符號整數的范圍:0 02 2N N-1-18 8位:位:0 02552551616位:位:0 065535655353232位:位:0 02 232321 1進位標志進位標志CFCF:舉例:舉例8 8位二進制數相加:位二進制數相加:001110100011101001111100011111001011011010110110十六進制表達:十六進制表達:3A3A7C7CB6B6轉換成十進制數:轉換成十進制數:5858124124182182沒有產生進位:沒有產生進位:CFCF0 08 8位二進制數相加:位二進制數相加:1010101010101010011111000111
17、1100 1 10010011000100110十六進制表達:十六進制表達:AAAA7C7C 1 1B6B6轉換成十進制數:轉換成十進制數:1701701241242942942562563838產生進位:產生進位:CFCF1 1溢出標志溢出標志OFOF(Overflow FlagOverflow Flag)有符號數有符號數加減結果加減結果有溢出有溢出,則,則OFOF1 1;否則;否則OFOF0 0針對有符號整數,判斷加減結果是否超出表針對有符號整數,判斷加減結果是否超出表達范圍達范圍N N個二進制位表達有符號整數的范圍:個二進制位表達有符號整數的范圍:2 2N N1 12 2N N1 1-1
18、-18 8位:位:1281281271271616位:位:327683276832767327673232位:位:2 231312 231311 1溢出標志溢出標志OFOF:舉例:舉例8 8位二進制數相加:位二進制數相加:001110100011101001111100011111001011011010110110十六進制表達:十六進制表達:3A3A7C7CB6B6轉換成十進制數:轉換成十進制數:5858124124182182超出范圍:超出范圍:OFOF1 18 8位二進制數相加:位二進制數相加:10101010101010100111110001111100 1 100100110001
19、00110十六進制表達:十六進制表達:AAAA7C7C 1 1B6B6轉換成十進制數:轉換成十進制數:-86-861241243838沒有超出范圍:沒有超出范圍:OFOF0 0進位和溢出的區(qū)別進位和溢出的區(qū)別進位標志反映無符號整數運算結果是否超出范圍進位標志反映無符號整數運算結果是否超出范圍有進位,加上進位或借位后運算結果仍然正確有進位,加上進位或借位后運算結果仍然正確溢出標志反映有符號整數運算結果是否超出范圍溢出標志反映有符號整數運算結果是否超出范圍有溢出,運算結果已經不正確有溢出,運算結果已經不正確處理器按照無符號整數求得結果處理器按照無符號整數求得結果設置進位標志設置進位標志CFCF設置
20、溢出標志設置溢出標志OFOF程序員決定程序員決定操作數是無符號數,關心進位操作數是無符號數,關心進位操作數是有符號數,注意溢出操作數是有符號數,注意溢出溢出標志的判斷溢出標志的判斷處理器硬件判斷規(guī)則處理器硬件判斷規(guī)則最高位和次高位同時有進位或同時無進位,無最高位和次高位同時有進位或同時無進位,無溢出;最高位和次高位進位狀態(tài)不同,有溢出溢出;最高位和次高位進位狀態(tài)不同,有溢出人工判斷的簡單規(guī)則人工判斷的簡單規(guī)則只有當兩個相同符號數相加(含兩個不同符號只有當兩個相同符號數相加(含兩個不同符號數相減),而運算結果的符號與原數據符號相數相減),而運算結果的符號與原數據符號相反時,產生溢出;其他情況下,
21、不會產生溢出反時,產生溢出;其他情況下,不會產生溢出正數正數正數正數負數負數最高位最高位次高位次高位零標志零標志ZFZF(Zero FlagZero Flag)運算運算結果為結果為0 0,則,則ZFZF1 1,否則,否則ZFZF0 0結果是結果是0,ZF標志不是標志不是0 !8 8位二進制數相加:位二進制數相加:001110100011101001111100011111001011011010110110結果不是結果不是0 0,ZFZF0 08 8位二進制數相加:位二進制數相加:10000100100001000111110001111100 1 10000000000000000結果是結果
22、是0 0,ZFZF1 1結果結果進位進位符號標志符號標志SFSF(Sign FlagSign Flag)運算運算結果最高位為結果最高位為1 1,則,則SFSF1 1;否則;否則SFSF0 08 8位二進制數相加:位二進制數相加:001110100011101001111100011111001 101101100110110最高位最高位1 1:SFSF1 18 8位二進制數相加:位二進制數相加:10000100100001000111110001111100 1 1 0 000000000000000最高位最高位0 0:SFSF0 0結果結果進位進位最高位符號位最高位符號位SF奇偶標志奇偶標志
23、PFPF(Parity FlagParity Flag)當運算結果最低字節(jié)中當運算結果最低字節(jié)中“1”1”的個數為零或的個數為零或偶數偶數時,時,PFPF1 1;否則;否則PFPF0 08 8位二進制數相加:位二進制數相加:001110100011101001111100011111001011011010110110“1”“1”的個數為的個數為5 5個:個:PFPF0 08 8位二進制數相加:位二進制數相加:10000100100001000111110001111100 1 10000000000000000“1”“1”的個數為的個數為0 0個:個:PFPF1 1結果結果進位進位僅最低僅最
24、低8位位“1”的個的個數數2. 2. 控制標志控制標志方向標志方向標志DFDF(Direction FlagDirection Flag)僅用于串操作指令,控制地址的變化方向僅用于串操作指令,控制地址的變化方向設置設置DFDF0 0,每次串操作后的存儲器地址就自動,每次串操作后的存儲器地址就自動增加,即從低地址向高地址處理數據串增加,即從低地址向高地址處理數據串設置設置DFDF1 1,每次串操作后的存儲器地址就自動,每次串操作后的存儲器地址就自動減少,即從高地址向低地址處理數據串減少,即從高地址向低地址處理數據串執(zhí)行執(zhí)行CLDCLD指令設置指令設置DFDF0 0執(zhí)行執(zhí)行STDSTD指令設置指令
25、設置DFDF1 1 3. 3. 系統(tǒng)標志系統(tǒng)標志中斷允許標志中斷允許標志IFIF(Interrupt-enable FlagInterrupt-enable Flag)陷阱標志陷阱標志TFTF(Trap FlagTrap Flag),單步標志,單步標志I/OI/O特權層標志特權層標志IOPLIOPL(I/O Privilege LevelI/O Privilege Level)任務嵌套標志任務嵌套標志NTNT虛擬虛擬80868086方式標志方式標志VMVM恢復標志恢復標志RFRF對齊檢測標志對齊檢測標志ACACCPUCPU識別標志識別標志IDID(Identification FlagIden
26、tification Flag)虛擬中斷標志虛擬中斷標志VIFVIF虛擬中斷掛起標志虛擬中斷掛起標志VIPVIP2.2.3 2.2.3 專用寄存器專用寄存器專用寄存器往往只用于特定指令或場合專用寄存器往往只用于特定指令或場合1. 1. 指令指針寄存器指令指針寄存器EIPEIP保存將要執(zhí)行的指令在主存的地址保存將要執(zhí)行的指令在主存的地址2. 2. 段寄存器段寄存器段是安排相關代碼或數據的主存區(qū)域段是安排相關代碼或數據的主存區(qū)域段寄存器表明段在主存中的位置段寄存器表明段在主存中的位置6 6個個1616位段寄存器:位段寄存器:CS DS SS ES FS GSCS DS SS ES FS GS3.
27、3. 其他寄存器其他寄存器浮點寄存器、多媒體寄存器浮點寄存器、多媒體寄存器系統(tǒng)專用寄存器系統(tǒng)專用寄存器 2.3 2.3 存儲器組織存儲器組織物理存儲器以字節(jié)為基本存儲單位物理存儲器以字節(jié)為基本存儲單位每個存儲單元被分配一個唯一的地址每個存儲單元被分配一個唯一的地址這個地址就是物理地址這個地址就是物理地址物理地址空間從物理地址空間從0 0開始順序編排,直到處理器支持開始順序編排,直到處理器支持的最大存儲單元的最大存儲單元80868086處理器支持處理器支持1MB1MB存儲器:存儲器:00000H00000HFFFFFHFFFFFHIA-32IA-32處理器支持處理器支持4GB4GB存儲器:存儲器
28、:00000000H00000000HFFFFFFFFHFFFFFFFFH操作系統(tǒng)利用存儲管理單元進行存儲管理,程序操作系統(tǒng)利用存儲管理單元進行存儲管理,程序并不直接尋址物理存儲器并不直接尋址物理存儲器IA-32IA-32處理器提供處理器提供3 3種存儲模型,用于程序訪問存種存儲模型,用于程序訪問存儲器儲器2.3.1 2.3.1 存儲模型存儲模型1. 1. 平展存儲模型(平展存儲模型(Flat memory modelFlat memory model)存儲器是一個連續(xù)的地址空間線性地址空間存儲器是一個連續(xù)的地址空間線性地址空間IA-32IA-32處理器支持處理器支持4GB4GB容量線性地址空
29、間容量線性地址空間2. 2. 段式存儲模型段式存儲模型存儲器由一組獨立的地址空間段(存儲器由一組獨立的地址空間段(SegmentSegment)每個段都可以達到每個段都可以達到4GB4GB容量容量在處理器內部,所有的段都被映射到線性地址空間在處理器內部,所有的段都被映射到線性地址空間3. 3. 實地址存儲模型實地址存儲模型80868086處理器的存儲模型處理器的存儲模型段式存儲模型的特例段式存儲模型的特例線性地址空間最大為線性地址空間最大為1MB1MB容量,段最大為容量,段最大為64KB64KB2.3.2 2.3.2 工作方式工作方式1. 1. 保護方式(保護方式(Protected mode
30、Protected mode)IA-32IA-32處理器固有的工作狀態(tài)處理器固有的工作狀態(tài)具有強大的段頁式存儲管理和特權與保護能力具有強大的段頁式存儲管理和特權與保護能力使用全部使用全部3232條地址總線,可尋址條地址總線,可尋址4GB4GB物理存儲器物理存儲器使用平展或段式存儲模型使用平展或段式存儲模型利用虛擬利用虛擬80868086方式支持實地址方式支持實地址80868086軟件軟件2. 2. 實地址方式(實地址方式(Real-address modeReal-address mode)可以進行可以進行3232位處理的快速位處理的快速80868086只能尋址只能尋址1MB1MB物理存儲器空
31、間,每個段不超過物理存儲器空間,每個段不超過64KB64KB可以使用可以使用3232位寄存器、位寄存器、3232位操作數和位操作數和3232位尋址方式位尋址方式只能支持實地址存儲模型只能支持實地址存儲模型3. 3. 系統(tǒng)管理方式系統(tǒng)管理方式實現(xiàn)供節(jié)能和系統(tǒng)安全管理實現(xiàn)供節(jié)能和系統(tǒng)安全管理2.3.3 2.3.3 邏輯地址(邏輯地址(Logical AddressLogical Address)在處理器內部、程序員編程時采用的地址在處理器內部、程序員編程時采用的地址邏輯地址邏輯地址段基地址段基地址偏移地址偏移地址段基地址段基地址在主存中的起始地址在主存中的起始地址偏移地址偏移地址距離段基地址的位移
32、量距離段基地址的位移量某個存儲單元可以有多個邏輯地址,但只有某個存儲單元可以有多個邏輯地址,但只有一個唯一的物理地址一個唯一的物理地址示意圖示意圖編程使用編程使用處理器轉換處理器轉換地址總線輸出地址總線輸出邏輯地址與物理地址邏輯地址與物理地址返回返回1081082082083083081061062062063063061071072072073073071091092092093093091101101051051041041031031021021011012102102052052042042032032022022012013103103053053043043033033023023
33、01301080818182828060616162626070717172727090919192929101005050404030302020101202015151414131312121111303025252424232322222121邏輯地址相對地址:邏輯地址相對地址:205(2層層05號房間)號房間)物理地址絕對地址:物理地址絕對地址:15(第(第15號房間)號房間)1. 1. 基本段基本段編寫應用程序時,涉及三類基本段:編寫應用程序時,涉及三類基本段:代碼段代碼段(Code SegmentCode Segment):存放指令代碼):存放指令代碼程序的指令代碼必須安排在代碼段
34、程序的指令代碼必須安排在代碼段數據段數據段(Data SegmentData Segment):存放數據):存放數據程序的數據默認存放在數據段程序的數據默認存放在數據段數據也可放在其他段數據也可放在其他段堆棧段堆棧段(Stack SegmentStack Segment):堆棧區(qū)域):堆棧區(qū)域程序使用的堆棧一定在堆棧段程序使用的堆棧一定在堆棧段基本段的邏輯地址基本段的邏輯地址代碼段代碼段(Code SegmentCode Segment)段基地址:代碼段寄存器段基地址:代碼段寄存器CSCS指示指示偏移地址:指令指針寄存器偏移地址:指令指針寄存器EIPEIP保存保存數據段數據段(Data Seg
35、mentData Segment)段基地址:數據段寄存器段基地址:數據段寄存器DSDS指示指示有時也用附加段寄存器有時也用附加段寄存器ESES,段寄存器段寄存器FSFS和和GSGS指示指示偏移地址:各種存儲器尋址方式計算出來偏移地址:各種存儲器尋址方式計算出來堆棧段堆棧段(Stack SegmentStack Segment)段基地址:堆棧段寄存器段基地址:堆棧段寄存器SSSS指示指示偏移地址:堆棧指針寄存器偏移地址:堆棧指針寄存器ESPESP保存保存2. 2. 段選擇器段選擇器1616位段寄存器保存位段寄存器保存1616位段選擇器位段選擇器段選擇器指向段選擇器指向6464位段描述符(位段描述
36、符(DescriptorDescriptor)段描述符包括段基地址段描述符包括段基地址平展存儲模型:指向地址平展存儲模型:指向地址0 0位置位置段式存儲模型:指向線性地址空間不同的段段式存儲模型:指向線性地址空間不同的段實地址存儲模型:保存段基地址的高實地址存儲模型:保存段基地址的高1616位位1616位段寄存器位段寄存器6464位段描述符位段描述符主存儲器空間主存儲器空間3. 3. 保護方式的地址轉換保護方式的地址轉換平展存儲模型平展存儲模型段基地址為段基地址為0 0,偏移地址等于線性地址,偏移地址等于線性地址段式存儲管理段式存儲管理段基地址和偏移地址都是段基地址和偏移地址都是3232位位段
37、基地址加上偏移地址形成線性地址段基地址加上偏移地址形成線性地址線性地址映射到物理地址線性地址映射到物理地址不使用分頁機制:線性地址與物理地址對應不使用分頁機制:線性地址與物理地址對應使用分頁機制:硬件支持下由操作系統(tǒng)或核心使用分頁機制:硬件支持下由操作系統(tǒng)或核心程序管理,構成虛擬存儲器,轉換成物理地址程序管理,構成虛擬存儲器,轉換成物理地址應用程序看到的都是線性地址空間應用程序看到的都是線性地址空間4. 4. 實地址方式的地址轉換實地址方式的地址轉換主存空間主存空間1MB1MB(2 22020 B B):):00000H00000HFFFFFHFFFFFH程序設計時分段管理,但有兩個限制:程序
38、設計時分段管理,但有兩個限制:每個段最大為每個段最大為64KB64KB段只能開始于低段只能開始于低4 4位地址全為位地址全為0 0的物理地址處的物理地址處邏輯地址段地址邏輯地址段地址偏移地址偏移地址1616位段寄存器保存位段寄存器保存2020位段起始地址的高位段起始地址的高1616位位偏移地址也用偏移地址也用1616位數據表示位數據表示物理地址物理地址段地址段地址1616偏移地址偏移地址左移二進制左移二進制4位(十六進制位(十六進制1位)位)示意圖示意圖實地址存儲模型的邏輯地址和物理地址實地址存儲模型的邏輯地址和物理地址返回返回2.4 2.4 匯編語言基礎匯編語言基礎匯編語言以助記符形式表示計
39、算機指令匯編語言以助記符形式表示計算機指令助記符(助記符(mnemonicmnemonic)是便于人們記憶、并能描)是便于人們記憶、并能描述指令功能和指令操作數的符號述指令功能和指令操作數的符號助記符是表明指令功能的英語單詞或其縮寫助記符是表明指令功能的英語單詞或其縮寫匯編格式指令以及使用它們編寫程序的規(guī)則匯編格式指令以及使用它們編寫程序的規(guī)則就形成匯編語言(就形成匯編語言(Assembly LanguageAssembly Language)匯編語言程序:用匯編語言書寫的程序匯編語言程序:用匯編語言書寫的程序匯編程序:將匯編語言程序匯編程序:將匯編語言程序“匯編匯編”成機器成機器代碼目標模塊
40、的程序代碼目標模塊的程序 匯編語言程序與匯編程序是兩個概念匯編語言程序與匯編程序是兩個概念2.4.1 2.4.1 指令代碼格式(指令代碼格式(Instruction formatInstruction format)IA-32IA-32處理器采用可變長度指令格式處理器采用可變長度指令格式操作碼操作碼可選的指令前綴(用于擴展指令功能)可選的指令前綴(用于擴展指令功能)1 13 3字節(jié)的主要操作碼字節(jié)的主要操作碼操作數操作數可選的尋址方式域(包括可選的尋址方式域(包括ModR/MModR/M和和SIBSIB字段)字段)可選的位移量可選的位移量可選的立即數可選的立即數指令代碼示例指令代碼示例數據傳送
41、指令數據傳送指令MOVMOV(取自(取自MoveMove)將數據從一個位置傳送到另一個位置將數據從一個位置傳送到另一個位置類似高級語言的賦值語句類似高級語言的賦值語句mov dest,srcmov dest,src; ;源操作數源操作數srcsrc:被傳送的數據或數據所在的位置:被傳送的數據或數據所在的位置; ;目的操作數目的操作數destdest:數據將要傳送到的位置:數據將要傳送到的位置mov eax,ebx; 機器代碼:機器代碼:8B C3mov eax,ebx; 機器代碼:機器代碼:8B 03mov eax,ebx+esi*4+80h; 機器代碼:機器代碼:8B 84 B3 80 00
42、 00 00指令功能指令功能傳送指令傳送指令MOVMOV的功能的功能返回返回源操作數源操作數 src目的操作數目的操作數 dest30H30H被傳送的數據被傳送的數據2.4.2 2.4.2 語句格式語句格式程序由語句組成程序由語句組成一個語句常占一行(一個語句常占一行(MASMMASM有續(xù)行符有續(xù)行符“”)一個語句不超過一個語句不超過132132個字符,個字符,4 4個部分個部分執(zhí)行性語句執(zhí)行性語句:表達處理器指令(硬指令):表達處理器指令(硬指令)標號標號: : 硬指令助記符硬指令助記符 操作數操作數, ,操作數操作數 ; ;注釋注釋說明性語句說明性語句:表達偽指令,控制匯編方式:表達偽指令
43、,控制匯編方式名字名字 偽指令助記符偽指令助記符 參數參數, ,參數參數, ;, ;注釋注釋這是這是MASM語法,但具有一般性語法,但具有一般性1. 1. 標號與名字標號與名字標號標號:執(zhí)行性語句中:執(zhí)行性語句中冒號分隔冒號分隔表示處理器指令在主存中的邏輯地址表示處理器指令在主存中的邏輯地址指示分支、循環(huán)等程序的目的地址指示分支、循環(huán)等程序的目的地址名字名字:說明性語句中:說明性語句中空格或制表符分隔空格或制表符分隔變量名、段名、子程序名等變量名、段名、子程序名等反映變量、段和子程序等的邏輯地址反映變量、段和子程序等的邏輯地址標號和名字是用戶自定義的標識符標號和名字是用戶自定義的標識符標識符(
44、標識符(IdentifierIdentifier)最多由最多由3131個字母、數字及規(guī)定的特殊符號(如個字母、數字及規(guī)定的特殊符號(如 _ _、$ $、? ?、 )組成,)組成,不能以數字開頭不能以數字開頭一個源程序中,用戶定義的每個標識符一個源程序中,用戶定義的每個標識符必須唯一必須唯一不能是不能是匯編程序采用的匯編程序采用的保留字保留字保留字(保留字(Reserved WordReserved Word)是編程語言本身需要使)是編程語言本身需要使用的各種具有特定含義的標識符、也稱為關鍵字用的各種具有特定含義的標識符、也稱為關鍵字硬指令助記符:硬指令助記符: MOVMOV偽指令助記符:偽指令
45、助記符: BYTEBYTE操作符:操作符: OFFSETOFFSET寄存器名:寄存器名: EAXEAX取名原則類似高級語言取名原則類似高級語言默認不區(qū)別大小寫字母默認不區(qū)別大小寫字母 “ OPTION CASEMAP:NONE ” 偽指令偽指令告知告知MASM 區(qū)別用戶定義標識符的大小寫區(qū)別用戶定義標識符的大小寫2. 2. 助記符助記符助記符:幫助記憶指令功能的符號助記符:幫助記憶指令功能的符號硬指令助記符對應處理器指令,表示一種處理硬指令助記符對應處理器指令,表示一種處理器操作器操作偽指令助記符表達一個匯編命令偽指令助記符表達一個匯編命令處理器指令示例:傳送指令處理器指令示例:傳送指令 MO
46、VMOV偽指令示例:字節(jié)變量定義偽指令示例:字節(jié)變量定義助記符:助記符:BYTEBYTE (或(或DBDB)功能:在主存中占用若干的存儲空間,用于保功能:在主存中占用若干的存儲空間,用于保存變量值,該變量以字節(jié)為單位存取存變量值,該變量以字節(jié)為單位存取3. 3. 操作數和參數操作數和參數處理器指令的操作數:表示參與操作的對象處理器指令的操作數:表示參與操作的對象具體的常量具體的常量保存在寄存器的數據保存在寄存器的數據保存在存儲器中的變量保存在存儲器中的變量逗號前常是目的操作數,逗號后常是源操作數逗號前常是目的操作數,逗號后常是源操作數偽指令的參數:偽指令的參數:常量、變量名、表達式等常量、變量
47、名、表達式等可以有多個,參數之間用逗號分隔可以有多個,參數之間用逗號分隔4. 4. 注釋注釋語句中分號后的內容是注釋語句中分號后的內容是注釋對指令或程序進行說明對指令或程序進行說明匯編程序不對它們做任何處理匯編程序不對它們做任何處理注釋利于閱讀,應養(yǎng)成書寫注釋的好習慣注釋利于閱讀,應養(yǎng)成書寫注釋的好習慣語句的語句的4 4個組成部分要用分隔符分開個組成部分要用分隔符分開標號后的標號后的冒號冒號注釋前的注釋前的分號分號操作數間和參數間的操作數間和參數間的逗號逗號分隔其他部分采用一個或多個分隔其他部分采用一個或多個空格空格或或制表符制表符注釋使用英文或中文均可注釋使用英文或中文均可分隔符都是英文標點
48、分隔符都是英文標點良好的語句格式有利于編程良好的語句格式有利于編程2.4.3 2.4.3 源程序框架源程序框架; eg0000.asm in Windows Console; eg0000.asm in Windows Consoleinclude io32.incinclude io32.inc ; ; 包含包含3232位輸入輸出文件位輸入輸出文件.data.data; ; 定義數據段定義數據段; ; 數據定義(數據待填)數據定義(數據待填).code.code; ; 定義代碼段定義代碼段start:start:; ; 程序執(zhí)行起始位置程序執(zhí)行起始位置; ; 主程序(指令待填)主程序(指令待
49、填)exit 0exit 0; ; 程序正常執(zhí)行結束程序正常執(zhí)行結束; ; 子程序(指令待填)子程序(指令待填)end startend start ; ; 匯編結束匯編結束1. 1. 包含偽指令包含偽指令INCLUDEINCLUDE將常用的常量定義、過程說明、共享的子程將常用的常量定義、過程說明、共享的子程序庫等內容進行聲明(相當于序庫等內容進行聲明(相當于C C和和C+C+語言中,語言中,包含頭文件的作用)包含頭文件的作用)IO32.INCIO32.INC是配合本書的包含文件是配合本書的包含文件前前3 3個語句:個語句:.686.686; 32; 32位指令位指令.model flat,s
50、tdcall.model flat,stdcall; ; 選擇平展模型,標準調用規(guī)范選擇平展模型,標準調用規(guī)范 option casemap:noneoption casemap:none; ;告知告知MASMMASM區(qū)分用戶定義標識符的大小寫區(qū)分用戶定義標識符的大小寫2. 2. 段的簡化定義段的簡化定義數據段定義偽指令數據段定義偽指令.DATA.DATA創(chuàng)建一個數據段創(chuàng)建一個數據段代碼段定義偽指令代碼段定義偽指令.CODE.CODE創(chuàng)建一個代碼段創(chuàng)建一個代碼段堆棧段由堆棧段由WindowsWindows維護,用戶不必設置維護,用戶不必設置程序開始執(zhí)行的位置程序開始執(zhí)行的位置應用一個標號(例如
51、:應用一個標號(例如:STARTSTART)匯編結束匯編結束ENDEND指令的參數指令的參數應用程序執(zhí)行結束應用程序執(zhí)行結束語句語句“EXIT 0”EXIT 0”將控制權交還操作系統(tǒng)將控制權交還操作系統(tǒng)提供給操作系統(tǒng)一個返回代碼提供給操作系統(tǒng)一個返回代碼通常用通常用0 0表示執(zhí)行正確表示執(zhí)行正確源程序匯編結束源程序匯編結束ENDEND語句語句執(zhí)行結束執(zhí)行結束匯編結束匯編結束例例2-12-1信息顯示程序信息顯示程序在數據段給出這個字符串形式的信息:在數據段給出這個字符串形式的信息:; ; 數據段數據段msgmsgbyte Hello, Assembly!,13,10,0byte Hello, A
52、ssembly!,13,10,0; ; 定義要顯示的字符串定義要顯示的字符串在代碼段編寫顯示字符串的程序:在代碼段編寫顯示字符串的程序:; ; 代碼段代碼段 mov eax,offset msgmov eax,offset msg; ; 指定字符串的偏移地址指定字符串的偏移地址call dispmsgcall dispmsg; ; 調用調用I/OI/O子程序顯示信息子程序顯示信息完整程序完整程序例例2-12-1源程序源程序; eg0201.asm; eg0201.asminclude io32.incinclude io32.inc.data.data; ; 數據段數據段msgmsgbyte
53、Hello, Assembly!,13,10,0byte Hello, Assembly!,13,10,0.code.code; ; 代碼段代碼段start:start:; ; 程序執(zhí)行起始位置程序執(zhí)行起始位置mov eax,offset msgmov eax,offset msgcall dispmsgcall dispmsgexit 0exit 0; ; 程序正常執(zhí)行結束程序正常執(zhí)行結束end startend start; ; 匯編結束匯編結束返回返回Hello, Assembly !運行結果對比對比C C語言源程序語言源程序#include #include int main()int
54、 main() printf(Hello, world !n);printf(Hello, world !n);exit(0);exit(0); 對比對比Hello, world !運行結果3. 3. 輸入輸出子程序庫輸入輸出子程序庫鍵盤輸入和顯示器輸出的鍵盤輸入和顯示器輸出的I/OI/O子程序子程序含含IO32.INCIO32.INC和和IO32.LIBIO32.LIB,需要包含文件聲明,需要包含文件聲明源程序文件開始使用包含命令聲明源程序文件開始使用包含命令聲明INCLUDE IO32.INCINCLUDE IO32.INC子程序調用方法子程序調用方法MOV EAX,MOV EAX,入口參
55、數入口參數CALL CALL 子程序名子程序名宏調用方法宏調用方法宏名宏名 入口參數入口參數宏名宏名WriteStringWriteString子程序名子程序名 DISPMSGDISPMSG入口參數入口參數 EAXEAX字符串地址字符串地址功能說明功能說明 顯示字符串(以顯示字符串(以0 0結尾)結尾)輸入子程序輸入子程序輸出子程序輸出子程序常用輸出子程序常用輸出子程序返回返回子程序名子程序名功能說明功能說明DISPMSG顯示字符串(以顯示字符串(以0結尾)結尾)DISPC顯示一個字符顯示一個字符DISPCRLF 光標回車換行,到下一行首個位置光標回車換行,到下一行首個位置DISPRD顯示顯示
56、8個個32位通用寄存器內容位通用寄存器內容DISPRF顯示顯示6個狀態(tài)標志的狀態(tài)個狀態(tài)標志的狀態(tài)DISPHD以十六進制形式顯示以十六進制形式顯示8位數據位數據DISPUID顯示無符號十進制整數顯示無符號十進制整數DISPSID顯示有符號十進制整數顯示有符號十進制整數常用輸入子程序常用輸入子程序返回返回子程序名子程序名功能說明功能說明READMSG輸入一個字符串(回車結束)輸入一個字符串(回車結束)READC輸入一個字符(回顯)輸入一個字符(回顯)READHD輸入輸入8位十六進制數據位十六進制數據READUID輸入無符號十進制整數(輸入無符號十進制整數(2321)READSID輸入有符號十進制整
57、數輸入有符號十進制整數(2312311)2.4.4 2.4.4 開發(fā)過程開發(fā)過程1. 1. 開發(fā)軟件開發(fā)軟件 抽取抽取MASM 6.11MASM 6.11和和Visual C+ 6.0Visual C+ 6.0集成開發(fā)環(huán)境中集成開發(fā)環(huán)境中有關文件構造基本開發(fā)軟件包有關文件構造基本開發(fā)軟件包BINBIN子目錄:進行匯編、連接及配套程序文件子目錄:進行匯編、連接及配套程序文件MASMMASM目錄:目錄:I/OI/O庫、包含文件及批處理文件庫、包含文件及批處理文件 默認安裝到默認安裝到D D分區(qū)的分區(qū)的MASMMASM目錄目錄 快速開發(fā)方法快速開發(fā)方法 進入進入MASMMASM目錄目錄雙擊快捷方式雙
58、擊快捷方式WIN32WIN32(或批處理文件(或批處理文件WIN32.BAT)WIN32.BAT) 生成可執(zhí)行文件生成可執(zhí)行文件MAKE32 eg0201MAKE32 eg0201操作演示操作演示MASM 6.15MASM 6.15開發(fā)軟件開發(fā)軟件快速開發(fā)方法快速開發(fā)方法END2. 2. 源程序的編輯源程序的編輯源程序文件是無格式文件、純文本類型源程序文件是無格式文件、純文本類型以以ASMASM為擴展名,使用任何文本編輯器為擴展名,使用任何文本編輯器WindowsWindows的記事本的記事本NotepadNotepadDOSDOS中的全屏幕文本編輯器中的全屏幕文本編輯器EDITEDIT其他程
59、序開發(fā)工具中的編輯環(huán)境其他程序開發(fā)工具中的編輯環(huán)境專用于源程序文件編寫的文本編輯軟件,例如專用于源程序文件編寫的文本編輯軟件,例如UltraEdit32UltraEdit32本書源程序文件的命名規(guī)則本書源程序文件的命名規(guī)則 EG例題,例題,EX習題習題 前前2位數字章號,位數字章號,后后2位數字位數字序號序號3. 3. 源程序的匯編源程序的匯編生成目標模塊文件(生成目標模塊文件(.OBJ.OBJ)MASM 6.xMASM 6.x的匯編程序是的匯編程序是ML.EXEML.EXEBINML /c /coff eg0201.asmBINML /c /coff eg0201.asm參數參數“/c”/c
60、”(小寫)實現(xiàn)源程序的匯編(小寫)實現(xiàn)源程序的匯編參數參數“/coff”/coff”(小寫字母小寫字母)表示生成表示生成COFFCOFF格式格式的目標模塊文件的目標模塊文件溫馨提示:溫馨提示:將源文件放在將源文件放在MASM目錄目錄溫馨提示:溫馨提示:ML.EXE的參數的參數區(qū)別區(qū)別大小寫大小寫4. 4. 目標文件的連接目標文件的連接能把一個或多個目標文件和庫文件合成一個能把一個或多個目標文件和庫文件合成一個可執(zhí)行文件可執(zhí)行文件3232位連接程序被更名為位連接程序被更名為LINK32.EXELINK32.EXEBINBINLINK32 /subsystem:console eg0201.obj
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國數控自定中心架行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年全鋼脈沖電子打火單灶項目投資價值分析報告
- 2025至2030年中國紙殼打包機數據監(jiān)測研究報告
- 2025至2030年中國棉粘色紗數據監(jiān)測研究報告
- 2025至2030年中國光盤承載器數據監(jiān)測研究報告
- 農業(yè)機械租賃設備保險規(guī)劃考核試卷
- 2025-2030年手拋彩球網企業(yè)制定與實施新質生產力戰(zhàn)略研究報告
- 2025-2030年咖啡香濃風味堅果行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年戶外探險休閑服裝系列行業(yè)深度調研及發(fā)展戰(zhàn)略咨詢報告
- 2025-2030年圖書館書籍分類機器人行業(yè)跨境出海戰(zhàn)略研究報告
- 數學-河南省三門峽市2024-2025學年高二上學期1月期末調研考試試題和答案
- 二零二五版電力設施維修保養(yǎng)合同協(xié)議3篇
- 最經典凈水廠施工組織設計
- VDA6.3過程審核報告
- 《心臟血管的解剖》課件
- 2024-2030年中國并購基金行業(yè)發(fā)展前景預測及投資策略研究報告
- 河道清淤安全培訓課件
- 2024年湖南商務職業(yè)技術學院單招職業(yè)適應性測試題庫帶答案
- 7.3.1印度(第1課時)七年級地理下冊(人教版)
- 骨科手術中常被忽略的操作課件
- 《湖南師范大學》課件
評論
0/150
提交評論