版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理與接口技術(shù)第2章 微處理器結(jié)構(gòu)微機(jī)原理與接口技術(shù)主要內(nèi)容2.1 微處理器功能結(jié)構(gòu) 2.2 寄存器2.3 存儲(chǔ)器組織2.4 匯編語(yǔ)言基礎(chǔ)2.5 數(shù)據(jù)尋址方式 3標(biāo)志寄存器累加器內(nèi)部數(shù)據(jù)總線暫存器通用寄存器組專用寄存器組指令寄存指令譯碼時(shí)序和控制邏輯控制總線地址總線數(shù)據(jù)總線地址總線控制數(shù)據(jù)總線控制ALU2.1.1 處理器基本結(jié)構(gòu)算術(shù)邏輯單元寄存器指令處理單元2.1 微處理器功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 4計(jì)算機(jī)的運(yùn)算器,負(fù)責(zé)處理器所能進(jìn)行的各種運(yùn)算,主要就是算術(shù)運(yùn)算和邏輯運(yùn)算累加器結(jié)構(gòu)的處理器累加器(Accumulator)提供一個(gè)操作數(shù)保存運(yùn)算結(jié)果標(biāo)志(Flag)寄存器反映運(yùn)算結(jié)果的輔助信
2、息例如:有無(wú)進(jìn)借位、是否為零、是否為負(fù)等也稱為程序狀態(tài)字(PSW)1. 算術(shù)邏輯單元ALU2.1 微處理器功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 52. 寄存器(Register)處理器內(nèi)部需要高速存儲(chǔ)單元,用于暫時(shí)存放程序執(zhí)行過(guò)程中的代碼和數(shù)據(jù)透明寄存器對(duì)應(yīng)用人員不可見(jiàn)、不能直接控制的寄存器可編程(Programmable)寄存器具有引用名稱、供編程使用通用寄存器數(shù)量較多、使用頻度較高,具有多種用途專用寄存器只用于特定目的2.1 微處理器功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 63. 指令處理單元處理器的控制單元,它控制指令的執(zhí)行和信息的傳輸指令執(zhí)行的過(guò)程取指:指令處理單元將指令從主存取出,并通過(guò)總線傳輸?shù)教幚砥鲀?nèi)
3、部的指令寄存器譯碼:指令處理單元通過(guò)指令譯碼電路獲得該指令的功能執(zhí)行:指令處理單元的時(shí)序和控制邏輯按一定的時(shí)間順序發(fā)出和接收相應(yīng)信號(hào),完成指令所要求的操作取指譯碼執(zhí)行2.1 微處理器功能結(jié)構(gòu)16微機(jī)原理與接口技術(shù) 72.1.2 8086的功能結(jié)構(gòu)2.1 微處理器功能結(jié)構(gòu)執(zhí)行單元 (EU)總線接口單元 (BIU) 8總線接口單元負(fù)責(zé)管理與系統(tǒng)總線的接口,負(fù)責(zé)對(duì)存儲(chǔ)器和外設(shè)訪問(wèn)包括指令隊(duì)列、指令指針、段寄存器、地址加法器和總線控制邏輯執(zhí)行單元包括ALU、通用寄存器、標(biāo)志寄存器和控制電路負(fù)責(zé)指令譯碼、數(shù)據(jù)運(yùn)算和指令執(zhí)行指令執(zhí)行的兩個(gè)主要階段:取指和執(zhí)行取指:從主存取出指令代碼進(jìn)入指令隊(duì)列執(zhí)行:譯碼指
4、令、并發(fā)出有關(guān)控制信號(hào)實(shí)現(xiàn)指令功能1.總線接口單元和執(zhí)行單元2.1 微處理器功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 92.指令預(yù)?。≒refetch)8086處理器的指令讀取,實(shí)際上是指令預(yù)取8086處理器維護(hù)著長(zhǎng)度為6個(gè)字節(jié)的指令隊(duì)列EU單元譯碼、執(zhí)行指令,同時(shí)BIU單元讀取后續(xù)指令BIU和EU兩個(gè)單元相互獨(dú)立,可以并行操作最簡(jiǎn)單的指令流水線技術(shù)節(jié)省許多取指時(shí)間,提高了工作效率2.1 微處理器功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 108088的指令執(zhí)行過(guò)程返回微機(jī)原理與接口技術(shù) 112.1 微處理器功能結(jié)構(gòu)2.1.3 80386的功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 12總線接口單元:為處理器提供同外部的接口指令預(yù)取單元:
5、先行讀取指令指令譯碼單元:從預(yù)取隊(duì)列中取來(lái)指令,譯碼 成微指令代碼執(zhí)行單元:ALU、乘法器、除法器和移位器等 分段單元:邏輯地址變換成線性地址分頁(yè)單元:將線性地址變換成物理地址各功能部件可以并行工作,進(jìn)行流水線處理2.1 微處理器功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 132.1 微處理器功能結(jié)構(gòu)2.1.4 Pentium的功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 14超標(biāo)量流水線:2條指令流水線分離Cache:指令Cache和數(shù)據(jù)Cache動(dòng)態(tài)分支預(yù)測(cè):預(yù)測(cè)程序執(zhí)行順序其他性能增強(qiáng)的浮點(diǎn)處理單元FPU常用指令固化改進(jìn)復(fù)雜指令的微代碼算法節(jié)能特性電源電壓:3.3V2.1 微處理器功能結(jié)構(gòu)微機(jī)原理與接口技術(shù) 152.1
6、微處理器功能結(jié)構(gòu) 2.2 寄存器2.3 存儲(chǔ)器組織2.4 匯編語(yǔ)言基礎(chǔ)2.5 數(shù)據(jù)尋址方式主要內(nèi)容2.2.1 通用寄存器最常用,保存整數(shù)數(shù)據(jù)、地址等 8個(gè)32位通用寄存器EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP8個(gè)16位通用寄存器AX,BX,CX,DX,SI,DI,BP,SP8個(gè)8位通用寄存器AH,AL,BH,BL,CH,CL,DH,DL存取16位寄存器,高16位不受影響存取8位寄存器,16/32位寄存器其他位不受影響2.2 寄存器通用寄存器的名稱EAX:累加器(Accumulator)EBX:基址寄存器(Base)ECX:計(jì)數(shù)器(Counter)EDX:數(shù)據(jù)寄存器(Da
7、ta)ESI:源變址寄存器(Source Index)EDI:目的變址寄存器(Destination Index)EBP:基址指針(Base Pointer)ESP:堆棧指針(Stack Pointer)ESP(SP)應(yīng)該作為專用寄存器對(duì)待2.2 寄存器2.2.2 標(biāo)志寄存器標(biāo)志(Flag)反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式用一個(gè)或多個(gè)二進(jìn)制位表示一種標(biāo)志0或1的不同組合表達(dá)標(biāo)志的不同狀態(tài)8086支持16位標(biāo)志寄存器FLAGSIA-32處理器形成32位EFLAGS標(biāo)志寄存器狀態(tài)標(biāo)志:記錄指令執(zhí)行結(jié)果的輔助信息控制標(biāo)志:方向標(biāo)志DF,僅用于串操作指令系統(tǒng)標(biāo)志:控制操作系統(tǒng)或核心管理程序的操作方式
8、2.2 寄存器標(biāo)志寄存器EFLAGS2.2 寄存器1. 狀態(tài)標(biāo)志記錄程序運(yùn)行結(jié)果的狀態(tài)信息OF11DF10IF9TF8SF7ZF605AF403PF211CF0最基本的標(biāo)志,有6個(gè)用來(lái)記錄指令執(zhí)行結(jié)果的輔助信息主要由加減運(yùn)算和邏輯運(yùn)算指令設(shè)置處理器主要使用其中5個(gè)構(gòu)成各種條件,分支指令判斷這些條件實(shí)現(xiàn)程序分支 2.2 寄存器進(jìn)位標(biāo)志CF(Carry Flag)當(dāng)加減運(yùn)算的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),CF1,否則CF02.2 寄存器例1:0011101001111100 最高位無(wú)進(jìn)位, CF0例2:1010101001111100 最高位有進(jìn)位,CF=110110110100100
9、110針對(duì)無(wú)符號(hào)整數(shù),判斷加減結(jié)果是否超出表達(dá)范圍N個(gè)二進(jìn)制位表達(dá)無(wú)符號(hào)整數(shù)的范圍:02N-1 8位:025516位:06553532位:023212.2 寄存器溢出標(biāo)志OF(Overflow Flag)有符號(hào)數(shù)加減結(jié)果有溢出則OF1,否則OF02.2 寄存器例1:0011101001111100 超出表達(dá)范圍,OF1例2:1010101001111100 未超出表達(dá)范圍,OF=010110110100100110針對(duì)有符號(hào)整數(shù),判斷加減結(jié)果是否超出表達(dá)范圍N個(gè)二進(jìn)制位表達(dá)有符號(hào)整數(shù)的范圍:-2N-12N-1-18位:12812716位:327683276732位:23123112.2 寄存器
10、進(jìn)位和溢出的區(qū)別CF反映無(wú)符號(hào)整數(shù)運(yùn)算結(jié)果是否超出范圍有進(jìn)位,加上進(jìn)位或借位后運(yùn)算結(jié)果仍然正確OF反映有符號(hào)整數(shù)運(yùn)算結(jié)果是否超出范圍有溢出,運(yùn)算結(jié)果已經(jīng)不正確處理器按照無(wú)符號(hào)整數(shù)求得結(jié)果設(shè)置進(jìn)位標(biāo)志CF設(shè)置溢出標(biāo)志OF程序員決定操作數(shù)是無(wú)符號(hào)數(shù),關(guān)心進(jìn)位操作數(shù)是有符號(hào)數(shù),注意溢出2.2 寄存器溢出標(biāo)志的判斷處理器硬件判斷規(guī)則最高位和次高位同時(shí)有進(jìn)位或同時(shí)無(wú)進(jìn)位,無(wú)溢出;最高位和次高位進(jìn)位狀態(tài)不同,有溢出人工判斷的簡(jiǎn)單規(guī)則只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加(含兩個(gè)不同符號(hào)數(shù)相減),而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反時(shí),產(chǎn)生溢出;其他情況下,不會(huì)產(chǎn)生溢出001110100111110010110110正數(shù)正數(shù)
11、負(fù)數(shù)最高位次高位2.2 寄存器零標(biāo)志ZF(Zero Flag) 運(yùn)算結(jié)果為0則ZF1,否則ZF02.2 寄存器例1:0011101001111100 結(jié)果不是0,ZF0例2:1000010001111100 結(jié)果是0,ZF=110110110100000000符號(hào)標(biāo)志SF(Sign Flag) 運(yùn)算結(jié)果最高位為1則SF1,否則SF02.2 寄存器例1:0011101001111100 最高位為1,SF1例2:1000010001111100 最高位為0,SF=010110110100000000進(jìn)位奇偶標(biāo)志PF(Parity Flag) 當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF1;否
12、則PF02.2 寄存器例1:0011101001111100 “1”的個(gè)數(shù)為5個(gè),PF0例2:1000010001111100 “1”的個(gè)數(shù)為0個(gè),PF=110110110100000000微機(jī)原理與接口技術(shù) 30 CFPFAFZFSFOF0000H8000H8000H+8000HC000HC000H+8010H4008H4008H+C808H0808HC000H+110101110010001011000010練習(xí):下列十六進(jìn)制數(shù)相加會(huì)如何影響標(biāo)志位?2.2 寄存器2. 控制標(biāo)志方向標(biāo)志 DF(Direction Flag)僅用于串操作指令,控制地址的變化方向設(shè)置DF0,每次串操作后的存儲(chǔ)器
13、地址就自動(dòng)增加,即從低地址向高地址處理數(shù)據(jù)串設(shè)置DF1,每次串操作后的存儲(chǔ)器地址就自動(dòng)減少,即從高地址向低地址處理數(shù)據(jù)串執(zhí)行CLD指令設(shè)置DF0執(zhí)行STD指令設(shè)置DF1 2.2 寄存器3. 系統(tǒng)標(biāo)志控制操作系統(tǒng)或核心管理程序的操作方式中斷允許標(biāo)志IF(Interrupt-enable Flag)陷阱標(biāo)志TF(Trap Flag),單步標(biāo)志I/O特權(quán)層標(biāo)志IOPL(I/O Privilege Level)任務(wù)嵌套標(biāo)志NT虛擬8086方式標(biāo)志VM恢復(fù)標(biāo)志RF對(duì)齊檢測(cè)標(biāo)志ACCPU識(shí)別標(biāo)志ID(Identification Flag)虛擬中斷標(biāo)志VIF虛擬中斷掛起標(biāo)志VIP2.2 寄存器2.2.3
14、專用寄存器專用寄存器往往只用于特定指令或場(chǎng)合1. 指令指針寄存器EIP保存將要執(zhí)行的指令在主存的地址不能由指令直接修改發(fā)生程序轉(zhuǎn)移、中斷、異常時(shí)由處理器自動(dòng)改變2. 段寄存器段是安排相關(guān)代碼或數(shù)據(jù)的主存區(qū)域段寄存器表明段在主存中的位置6個(gè)16位段寄存器:CS DS SS ES FS GS2.2 寄存器 3. 其他寄存器浮點(diǎn)寄存器、多媒體寄存器系統(tǒng)專用寄存器 2.2 寄存器微機(jī)原理與接口技術(shù) 352.1 微處理器功能結(jié)構(gòu) 2.2 寄存器2.3 存儲(chǔ)器組織2.4 匯編語(yǔ)言基礎(chǔ)2.5 數(shù)據(jù)尋址方式主要內(nèi)容物理存儲(chǔ)器以字節(jié)為基本存儲(chǔ)單位每個(gè)存儲(chǔ)單元被分配一個(gè)唯一的地址,即物理地址物理地址空間從0開(kāi)始順
15、序編排,直到處理器支持的最大存儲(chǔ)單元8086處理器支持1MB存儲(chǔ)器:IA-32處理器支持4GB存儲(chǔ)器:操作系統(tǒng)利用存儲(chǔ)管理單元進(jìn)行存儲(chǔ)管理,程序并不直接尋址物理存儲(chǔ)器IA-32處理器提供3種存儲(chǔ)模型,用于程序訪問(wèn)存儲(chǔ)器00000HFFFFFH00000000HFFFFFFFFH2.3 存儲(chǔ)器組織2.3.1 存儲(chǔ)模型1. 平展存儲(chǔ)模型(Flat memory model)存儲(chǔ)器是一個(gè)連續(xù)的地址空間線性地址空間IA-32處理器支持4GB容量線性地址空間2. 段式存儲(chǔ)模型(Segmented memory model)存儲(chǔ)器由一組獨(dú)立的地址空間段(Segment)每個(gè)段都可以達(dá)到4GB容量在處理器內(nèi)
16、部,所有的段都被映射到線性地址空間3. 實(shí)地址存儲(chǔ)模型(Real-address memory model)8086處理器的存儲(chǔ)模型段式存儲(chǔ)模型的特例線性地址空間最大為1MB容量,段最大為64KB2.3 存儲(chǔ)器組織2.3.2 工作方式1. 保護(hù)方式(Protected mode)IA-32處理器固有的工作狀態(tài)具有強(qiáng)大的段頁(yè)式存儲(chǔ)管理和特權(quán)與保護(hù)能力使用全部32條地址總線,可尋址4GB物理存儲(chǔ)器使用平展或段式存儲(chǔ)模型利用虛擬8086方式支持實(shí)地址8086軟件2. 實(shí)地址方式(Real-address mode)可以進(jìn)行32位處理的快速8086只能尋址1MB物理存儲(chǔ)器空間,每個(gè)段不超過(guò)64KB可以
17、使用32位寄存器、32位操作數(shù)和32位尋址方式只能支持實(shí)地址存儲(chǔ)模型3. 系統(tǒng)管理方式(System Management mode)實(shí)現(xiàn)節(jié)能和系統(tǒng)安全管理2.3 存儲(chǔ)器組織2.3.3 邏輯地址在處理器內(nèi)部、程序員編程時(shí)采用的地址邏輯地址段基地址偏移地址段基地址段在主存中的起始地址偏移地址距離段基地址的位移量某個(gè)存儲(chǔ)單元可以有多個(gè)邏輯地址,但只有一個(gè)唯一的物理地址邏輯地址線性地址物理地址編程使用處理器轉(zhuǎn)換地址總線輸出2.3 存儲(chǔ)器組織邏輯地址與物理地址108208308106206306107207307109209309110105104103102101210205204203202201
18、310305304303302301081828061626071727091929100504030201201514131211302524232221邏輯地址相對(duì)地址:205(2層05號(hào)房間)物理地址絕對(duì)地址:15(第15號(hào)房間)2.3 存儲(chǔ)器組織1. 基本段 編寫(xiě)應(yīng)用程序時(shí),涉及三類基本段:代碼段(Code Segment):存放指令代碼程序的指令代碼必須安排在代碼段數(shù)據(jù)段(Data Segment):存放數(shù)據(jù)程序的數(shù)據(jù)默認(rèn)存放在數(shù)據(jù)段數(shù)據(jù)也可放在其他段堆棧段(Stack Segment):堆棧區(qū)域程序使用的堆棧一定在堆棧段2.3 存儲(chǔ)器組織基本段的邏輯地址代碼段(Code Segme
19、nt)段基地址:代碼段寄存器CS指示偏移地址:指令指針寄存器EIP保存數(shù)據(jù)段(Data Segment)段基地址:數(shù)據(jù)段寄存器DS指示有時(shí)也用附加段寄存器ES,段寄存器FS和GS指示偏移地址:各種存儲(chǔ)器尋址方式計(jì)算出來(lái)堆棧段(Stack Segment)段基地址:堆棧段寄存器SS指示偏移地址:堆棧指針寄存器ESP保存2.3 存儲(chǔ)器組織2. 段選擇器16位段寄存器保存16位段選擇器段選擇器指向64位段描述符(Descriptor)段描述符包括段基地址平展存儲(chǔ)模型:指向地址0位置段式存儲(chǔ)模型:指向線性地址空間不同的段實(shí)地址存儲(chǔ)模型:保存段基地址的高16位段選擇器16位段寄存器64位段描述符主存儲(chǔ)器
20、空間段基地址數(shù)據(jù)或指令2.3 存儲(chǔ)器組織3. 保護(hù)方式的地址轉(zhuǎn)換平展存儲(chǔ)模型段基地址為0,偏移地址等于線性地址段式存儲(chǔ)管理段基地址和偏移地址都是32位段基地址加上偏移地址形成線性地址線性地址映射到物理地址不使用分頁(yè)機(jī)制:線性地址與物理地址對(duì)應(yīng)使用分頁(yè)機(jī)制:硬件支持下由操作系統(tǒng)或核心程序管理,構(gòu)成虛擬存儲(chǔ)器,轉(zhuǎn)換成物理地址2.3 存儲(chǔ)器組織4. 實(shí)地址方式的地址轉(zhuǎn)換主存空間1MB(220 B):00000HFFFFFH程序設(shè)計(jì)時(shí)分段管理,但有兩個(gè)限制:每個(gè)段最大為64KB(216 B)段只能開(kāi)始于低4位地址全為0的物理地址處邏輯地址段地址偏移地址16位段寄存器保存20位段起始地址的高16位偏移地
21、址也用16位數(shù)據(jù)表示物理地址段地址16偏移地址左移二進(jìn)制4位(十六進(jìn)制1位)2.3 存儲(chǔ)器組織微機(jī)原理與接口技術(shù) 460段基址偏移量0 1 0 06 4 2 0 06 4 1 0物理地址例:存儲(chǔ)單元位于起始地址為6410H的邏輯段 中,偏移量為0100H,則該存儲(chǔ)單元的邏 輯地址為6410H:0100H,物理地址為:段基址2.3 存儲(chǔ)器組織2.3 存儲(chǔ)器組織實(shí)地址存儲(chǔ)模型的邏輯地址和物理地址微機(jī)原理與接口技術(shù)48作 業(yè)2.1 簡(jiǎn)答題(16)2.2 判斷題(13、6、8、10)2.3 填空題(17)2.6 2.8 2.9微機(jī)原理與接口技術(shù) 492.1 微處理器功能結(jié)構(gòu) 2.2 寄存器2.3 存儲(chǔ)
22、器組織2.4 匯編語(yǔ)言基礎(chǔ)2.5 數(shù)據(jù)尋址方式主要內(nèi)容微機(jī)原理與接口技術(shù) 502.4.1 指令代碼格式MOV EAX , EBX例:指示計(jì)算機(jī)執(zhí)行什么操作操作數(shù)指明參加操作的數(shù)或者它所在的地址指 令操作碼將寄存器EBX的數(shù)據(jù)傳送到寄存器EAX微機(jī)原理與接口技術(shù) 51微機(jī)原理與接口技術(shù) 52微機(jī)原理與接口技術(shù) 532.4.2 語(yǔ)句格式執(zhí)行性語(yǔ)句(處理器指令、硬指令)例 even: shr ax, 1 ; ax2ax說(shuō)明性語(yǔ)句(匯編程序命令、偽指令)標(biāo)號(hào): 處理器指令助記符 操作數(shù),操作數(shù) ;注釋名字 偽指令助記符 參數(shù),參數(shù), ;注釋微機(jī)原理與接口技術(shù) 541. 標(biāo)號(hào)與名字標(biāo)號(hào):執(zhí)行性語(yǔ)句中冒號(hào)
23、分隔表示處理器指令在主存中的邏輯地址指示分支、循環(huán)等程序的目的地址名字:說(shuō)明性語(yǔ)句中空格或制表符分隔變量名、段名、子程序名等反映變量、段和子程序等的邏輯地址標(biāo)號(hào)和名字是用戶自定義的標(biāo)識(shí)符微機(jī)原理與接口技術(shù) 55標(biāo)識(shí)符最多由31個(gè)字母、數(shù)字及規(guī)定的特殊符號(hào)(如 _、$、?、)組成,不能以數(shù)字開(kāi)頭一個(gè)源程序中,用戶定義的每個(gè)標(biāo)識(shí)符必須唯一不能是匯編程序采用的保留字默認(rèn)不區(qū)分大小寫(xiě),除非用偽指令 OPTION CASEMAP:NONE 告知MASM 區(qū)別用戶定義標(biāo)識(shí)符的大小寫(xiě) 微機(jī)原理與接口技術(shù) 562. 助記符幫助記憶指令功能的符號(hào)硬指令助記符對(duì)應(yīng)處理器指令,表示一種處理器操作偽指令助記符表達(dá)一個(gè)
24、匯編命令例 硬指令助記符: MOV、CALL 偽指令助記符: BYTEmsg byte Hello, Assembly !,13,10,0微機(jī)原理與接口技術(shù) 573. 操作數(shù)和參數(shù)處理器指令的操作數(shù)表示參與操作的對(duì)象具體的常量保存在寄存器的數(shù)據(jù)保存在存儲(chǔ)器中的變量逗號(hào)前常是目的操作數(shù),逗號(hào)后常是源操作數(shù)偽指令的參數(shù)常量、變量名、表達(dá)式等可以有多個(gè),參數(shù)之間用逗號(hào)分隔mov eax,offset msgmsg byte Hello, Assembly !,13,10,0微機(jī)原理與接口技術(shù) 584. 注釋語(yǔ)句中分號(hào)后的內(nèi)容是注釋對(duì)指令或程序進(jìn)行說(shuō)明匯編程序不對(duì)它們做任何處理注釋利于閱讀,應(yīng)養(yǎng)成書(shū)寫(xiě)
25、注釋的好習(xí)慣語(yǔ)句的4個(gè)組成部分要用分隔符分開(kāi)標(biāo)號(hào)后的冒號(hào)注釋前的分號(hào)操作數(shù)間和參數(shù)間的逗號(hào)分隔其他部分采用一個(gè)或多個(gè)空格或制表符注釋使用英文或中文均可微機(jī)原理與接口技術(shù) 592.4.3 匯編源程序框架微機(jī)原理與接口技術(shù) 60將常用的常量定義、過(guò)程說(shuō)明、共享的子程序庫(kù)等內(nèi)容進(jìn)行聲明(相當(dāng)于C和C+語(yǔ)言中,包含頭文件的作用)IO32.INC是配合本書(shū)的包含文件,其中前3個(gè)語(yǔ)句:.686 ; 處理器選擇偽指令,采用80686處理器支持的指令.model flat, stdcall ; 選擇平展存儲(chǔ)模型,標(biāo)準(zhǔn)調(diào)用規(guī)范 option casemap: none;告知MASM區(qū)分用戶定義標(biāo)識(shí)符的大小寫(xiě)1.
26、 包含偽指令include微機(jī)原理與接口技術(shù) 612. 段的簡(jiǎn)化定義數(shù)據(jù)段定義偽指令.DATA創(chuàng)建一個(gè)數(shù)據(jù)段代碼段定義偽指令.CODE創(chuàng)建一個(gè)代碼段堆棧段由Windows維護(hù),用戶不必設(shè)置程序開(kāi)始執(zhí)行的位置應(yīng)用一個(gè)標(biāo)號(hào)(例如:START)匯編結(jié)束END指令的參數(shù)應(yīng)用程序執(zhí)行結(jié)束語(yǔ)句“EXIT 0”將控制權(quán)交還操作系統(tǒng)提供給操作系統(tǒng)一個(gè)返回代碼通常用0表示執(zhí)行正確源程序匯編結(jié)束END語(yǔ)句微機(jī)原理與接口技術(shù) 62例2-1:在屏幕上顯示“hello, assembly!”微機(jī)原理與接口技術(shù) 633. 輸入輸出子程序庫(kù)鍵盤(pán)輸入和顯示器輸出的I/O子程序含IO32.INC和IO32.LIB,需要包含文件
27、聲明源程序文件開(kāi)始使用包含命令聲明INCLUDE IO32.INC子程序調(diào)用方法MOV EAX,入口參數(shù)CALL 子程序名宏調(diào)用方法宏名 入口參數(shù)宏名WriteString子程序名DISPMSG入口參數(shù)EAX字符串地址功能說(shuō)明顯示字符串(以0結(jié)尾)微機(jī)原理與接口技術(shù) 64子程序名功能說(shuō)明DISPMSG顯示字符串(以0結(jié)尾)DISPC顯示一個(gè)字符DISPCRLF光標(biāo)回車換行,到下一行首個(gè)位置DISPRD顯示8個(gè)32位通用寄存器內(nèi)容DISPRF顯示6個(gè)狀態(tài)標(biāo)志的狀態(tài)DISPHD以十六進(jìn)制形式顯示8位數(shù)據(jù)DISPUID顯示無(wú)符號(hào)十進(jìn)制整數(shù)DISPSID顯示有符號(hào)十進(jìn)制整數(shù)常用輸出子程序微機(jī)原理與接口
28、技術(shù) 65常用輸入子程序子程序名功能說(shuō)明READMSG輸入一個(gè)字符串(回車結(jié)束)READC輸入一個(gè)字符(回顯)READHD輸入8位十六進(jìn)制數(shù)據(jù)READUID輸入無(wú)符號(hào)十進(jìn)制整數(shù)(2321)READSID輸入有符號(hào)十進(jìn)制整數(shù)(2312311)微機(jī)原理與接口技術(shù) 662.4.4 程序開(kāi)發(fā)過(guò)程源程序.asm目標(biāo)程序.obj可執(zhí)行程序.exe應(yīng)用程序MASM匯編LINK連接DEBUG調(diào)試EDIT編輯微機(jī)原理與接口技術(shù) 671. 開(kāi)發(fā)軟件 MASM6.15微機(jī)原理與接口技術(shù) 682. 源程序的編輯文件保存在MASM目錄微機(jī)原理與接口技術(shù) 693. 源程序的匯編MASM 6.x的匯編程序是ML.EXE匯編
29、后生成目標(biāo)模塊文件(.OBJ)匯編命令: ML /c /coff eg0201.asm參數(shù)“/c”(小寫(xiě))實(shí)現(xiàn)源程序的匯編參數(shù)“/coff ”(小寫(xiě))表示生成COFF格式的目標(biāo)模塊文件將源文件放在MASM目錄ML.EXE的參數(shù)區(qū)別大小寫(xiě)微機(jī)原理與接口技術(shù) 704. 目標(biāo)文件的連接32位連接程序被更名為L(zhǎng)INK32.EXE把一個(gè)或多個(gè)目標(biāo)文件和庫(kù)文件合成一個(gè)可執(zhí)行文件連接命令LINK32 /subsystem:console eg0201.obj“/subsystem:console”表示生成Windows控制臺(tái)環(huán)境的可執(zhí)行文件“/subsystem:windows”生成Windows圖形窗口的
30、可執(zhí)行文件匯編程序只指出語(yǔ)法錯(cuò)誤微機(jī)原理與接口技術(shù) 715. 可執(zhí)行文件的運(yùn)行進(jìn)入控制臺(tái)(或模擬DOS)環(huán)境在命令行提示符下輸入文件名(可以省略擴(kuò)展名)、按下回車鍵運(yùn)行 eg0201.exe運(yùn)行錯(cuò)誤,就需要靜態(tài)排錯(cuò):閱讀分析源程序動(dòng)態(tài)排錯(cuò):利用調(diào)試程序不要在Windows下雙擊運(yùn)行微機(jī)原理與接口技術(shù) 72源程序的編輯微機(jī)原理與接口技術(shù) 73源程序的匯編和目標(biāo)文件的連接可執(zhí)行文件的執(zhí)行上下方向鍵可以調(diào)出原來(lái)輸入的命令微機(jī)原理與接口技術(shù) 74微機(jī)原理與接口技術(shù) 756. 列表文件列表文件(.LST)含有源程序和目標(biāo)代碼ML /c /coff /Fl eg0201.asm“/Fl”創(chuàng)建列表文件(大寫(xiě)
31、F、小寫(xiě)l,不是數(shù)字1)列表文件有兩部分內(nèi)容第一部分:源程序及其代碼第二部分:各種標(biāo)識(shí)符錯(cuò)誤Error:比較嚴(yán)重的語(yǔ)法錯(cuò)誤警告Warning:不太關(guān)鍵的語(yǔ)法錯(cuò)誤微機(jī)原理與接口技術(shù) 76生成列表文件微機(jī)原理與接口技術(shù) 77匯編語(yǔ)言語(yǔ)句指令或數(shù)據(jù)的機(jī)器代碼相對(duì)偏移地址源程序及代碼微機(jī)原理與接口技術(shù) 78標(biāo)識(shí)符宏微機(jī)原理與接口技術(shù) 79標(biāo)識(shí)符段和組符號(hào)微機(jī)原理與接口技術(shù) 80標(biāo)識(shí)符錯(cuò)誤和警告微機(jī)原理與接口技術(shù) 812.1 微處理器功能結(jié)構(gòu) 2.2 寄存器2.3 存儲(chǔ)器組織2.4 匯編語(yǔ)言基礎(chǔ)2.5 數(shù)據(jù)尋址方式主要內(nèi)容微機(jī)原理與接口技術(shù) 82尋址要解決的問(wèn)題(1)去哪尋找指令?(2)去哪尋找參加操作
32、的數(shù)?按順序?qū)ぶ?,由IP+1IP完成跳躍式尋址,根據(jù)標(biāo)志位的變化跳躍操作數(shù)包含在指令中操作數(shù)在CPU的某個(gè)寄存器中操作數(shù)在存儲(chǔ)單元中微機(jī)原理與接口技術(shù) 83數(shù)據(jù)尋址方式(1)操作數(shù)包含在指令中立即數(shù)尋址(2)操作數(shù)在CPU的內(nèi)部寄存器中 寄存器尋址(3)操作數(shù)在存儲(chǔ)器中 存儲(chǔ)器尋址微機(jī)原理與接口技術(shù) 842.5.1 立即數(shù)尋址操作數(shù)緊跟操作碼,是機(jī)器代碼的一部分操作數(shù)從指令代碼中立即得到,即立即數(shù)(Immediate),用常量形式直接表達(dá)立即數(shù)尋址方式只用于源操作數(shù),常用來(lái)給寄存器和存儲(chǔ)單元賦值 例:MOV EAX, 33221100H機(jī)器代碼:B8 00 11 22 33操作碼:B8立即數(shù):
33、33221100微機(jī)原理與接口技術(shù) 85AHALEAX11H代碼段B8H00H高地址低地址 操作碼 立即數(shù)低字節(jié) 立即數(shù)高字節(jié)00H11HMOV EAX, 33221100H22H33H 立即數(shù)3322H 862.5.2 寄存器尋址操作數(shù)存放在處理器的內(nèi)部寄存器中用寄存器名表示它的內(nèi)容絕大多數(shù)指令采用通用寄存器尋址部分指令支持專用寄存器,例如段寄存器寄存器尋址方式簡(jiǎn)單快捷,最常使用 例:MOV EBX, EAXEBXEAXBHBLAHAL微機(jī)原理與接口技術(shù) 87例:設(shè)AX=0506H, BL=C2H MOV AH, BL AH= MOV DS, AX DS= MOV SI, AX SI= C2
34、HC206HC206H說(shuō)明: 立即數(shù)和寄存器尋址方式不需訪問(wèn)存儲(chǔ)器即可得到操作數(shù),速度快微機(jī)原理與接口技術(shù) 882.5.3 存儲(chǔ)器尋址操作數(shù)存放在CPU外部的存儲(chǔ)器中,用所在存儲(chǔ)單元的地址表示編程時(shí),存儲(chǔ)器地址使用包含段選擇器和偏移地址的邏輯地址段選擇器(段寄存器)指示段基地址偏移地址由各種尋址方式計(jì)算,常被稱為有效地址EA(Effective Address)一般情況下存儲(chǔ)器地址由有效地址表示,段寄存器不用顯式說(shuō)明,數(shù)據(jù)在默認(rèn)的段中。如果不使用默認(rèn)段寄存器,則要用段超越指令前綴加以說(shuō)明微機(jī)原理與接口技術(shù) 891. 段寄存器的默認(rèn)和超越微機(jī)原理與接口技術(shù) 902. 偏移地址的組成32位有效地址
35、 基址寄存器(變址寄存器比例)位移量基址寄存器:任何8個(gè)32位通用寄存器之一變址寄存器:除ESP之外的任何32位通用寄存器之一比例:1,2,4或8位移量:8或32位有符號(hào)值16位有效地址 基址寄存器變址寄存器位移量基址寄存器:BX或BP變址寄存器:SI或DI位移量:8或16位有符號(hào)值微機(jī)原理與接口技術(shù) 91 直接尋址 寄存器間接尋址 寄存器相對(duì)尋址 變址尋址 帶比例的變址尋址3. 存儲(chǔ)器尋址的5種方式微機(jī)原理與接口技術(shù) 92指令中直接包含了操作數(shù)的有效地址EA,在指令操作碼之后默認(rèn)的段地址在DS寄存器中,即操作數(shù)的實(shí)際地址是DS:EA常用于存取變量 直接尋址例:指令 MOV ECX,COUNT
36、機(jī)器代碼:8B 0D 00 50 40 00操作碼:8B 0D操作數(shù):有效地址 00405000H微機(jī)原理與接口技術(shù) 9300405000H高地址低地址DS00000000HCHCLECX操作碼+00405000H56H78H00405000H00000000H00H40H50H00H0DH8BH12H34H56H78H1234H操作數(shù)的有效地址EA數(shù)據(jù)段MOV ECX,405000H微機(jī)原理與接口技術(shù) 94操作數(shù)的有效地址EA存放在寄存器,寄存器內(nèi)容等于偏移地址MASM用中括號(hào)括起寄存器可以方便地對(duì)數(shù)組的元素或字符串的字符進(jìn)行操作寄存器間接尋址沒(méi)有說(shuō)明存儲(chǔ)單元類型 寄存器間接尋址例: MOV
37、 EDX,EBX MOV ESI,ECX 微機(jī)原理與接口技術(shù) 95例:指令 MOV AX,SI DS21000H21000HAHALAX數(shù)據(jù)段代碼段操作碼A0H50H SI 2000H1000H+2.2 8088/8086的尋址方式-寄存器間接尋址A0H50H物理地址20000H微機(jī)原理與接口技術(shù) 96有效地址是寄存器內(nèi)容與位移量之和也可以方便地對(duì)數(shù)組的元素或字符串的字符進(jìn)行操作 寄存器相對(duì)尋址例: mov esi, ebx+4;位移量:4 mov edi, ebp-08h;位移量:-08H mov esi, countebx;位移量:COUNT微機(jī)原理與接口技術(shù) 97例:指令 MOV AX,SI+06H DS21006H21006HAHALAX數(shù)據(jù)段代碼段操作碼45H38H06H SI 2000H10
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 脾胃虛弱動(dòng)畫(huà)冬病夏治
- 大叔爺爺課件教學(xué)課件
- 2024年分子篩項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 物聯(lián)網(wǎng)畢業(yè)設(shè)計(jì)論文
- 龍蝦的課件教學(xué)課件
- 牙體牙髓病常用藥物
- 2.1.2碳酸鈉和碳酸氫鈉 課件高一上學(xué)期化學(xué)人教版(2019)必修第一冊(cè)
- 糖尿病胰島素注射治療
- 新公司企業(yè)規(guī)劃
- 合唱團(tuán)說(shuō)課稿
- 手術(shù)切口感染PDCA案例
- 依托國(guó)家中小學(xué)智慧教育平臺(tái)開(kāi)展有效教學(xué)的研究課題申報(bào)評(píng)審書(shū)
- 小學(xué)大思政課實(shí)施方案設(shè)計(jì)
- 供應(yīng)室消防應(yīng)急預(yù)案演練
- 校運(yùn)會(huì)裁判員培訓(xùn)
- 潮濕相關(guān)性皮炎的護(hù)理
- 脊髓損傷課件
- 關(guān)于生殖健康知識(shí)講座
- 洪恩識(shí)字配套字庫(kù)完整版識(shí)字啟蒙200字-生字組詞句子完整版可打印-點(diǎn)讀指讀
- 幼兒園園長(zhǎng)的幼教教研與項(xiàng)目管理
- 兒童超重與肥胖培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論