




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一.CPU引腳信號(hào)二.CPU的功能結(jié)構(gòu)與程序執(zhí)行8086/8內(nèi)部有兩個(gè)功能模塊,完成一條指令的取指和執(zhí)行功能模塊之一:總線接口單元BIU,主要負(fù)責(zé)讀取指令和操作數(shù)模塊之二:執(zhí)行單元EU,主要負(fù)責(zé)指令譯碼和執(zhí)行內(nèi)部結(jié)構(gòu)指令執(zhí)行8086/8088內(nèi)部結(jié)構(gòu)內(nèi)部暫存器
IP
ES
SSDSCS總線控制邏輯電路外部總線執(zhí)行部分控制電路123456∑ALU標(biāo)志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令隊(duì)列緩沖器(8088為4字節(jié))執(zhí)行部件(EU)總線接口部件(BIU)16位20位16位8088為8位8位總結(jié)程序到底是怎么執(zhí)行的?指令和數(shù)據(jù)都在內(nèi)存中BIU與EU是并行執(zhí)行的BIU負(fù)責(zé)取指令和存取操作數(shù)EU負(fù)責(zé)譯碼和指令的執(zhí)行分析C用變量(內(nèi)存單元),慢。匯編語言盡量用寄存器、立即數(shù),快。三.8086的寄存器組對(duì)匯編語言程序員來說,8086內(nèi)部結(jié)構(gòu)就是可編程的寄存器組執(zhí)行單元EU8個(gè)通用寄存器
1個(gè)指令指針寄存器
1個(gè)標(biāo)志寄存器
4個(gè)段寄存器1.8086的通用寄存器8086的16位通用寄存器是:
AX BX CX DX SI DI BP SP其中前4個(gè)數(shù)據(jù)寄存器都還可以分成高8位和低8位兩個(gè)獨(dú)立的寄存器8086的8位通用寄存器是:AH BH CH DHAL BL CL DL對(duì)其中某8位的操作,并不影響另外對(duì)應(yīng)8位的數(shù)據(jù)數(shù)據(jù)寄存器數(shù)據(jù)寄存器用來存放計(jì)算的結(jié)果和操作數(shù),也可以存放地址每個(gè)寄存器又有它們各自的專用目的AX--累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等;BX--基址寄存器,常用做存放存儲(chǔ)器地址;數(shù)組首地址。CX--計(jì)數(shù)器,作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器;DX--數(shù)據(jù)寄存器,常用來存放雙字長(zhǎng)數(shù)據(jù)的高16位,或存放外設(shè)端口地址。變址寄存器變址寄存器常用于存儲(chǔ)器尋址時(shí)提供地址SI是源變址寄存器DI是目的變址寄存器串操作類指令中,SI和DI具有特別的功能指針寄存器指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)SP為堆棧指針寄存器,指示棧頂?shù)钠频刂稴P不能再用于其他目的,具有專用目的BP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的基地址SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址堆棧(Stack)堆棧是主存中一個(gè)特殊的區(qū)域,用于保存程序調(diào)用時(shí)的返回地址,用于依序保存程序調(diào)用時(shí)的值參,還用于程序中動(dòng)態(tài)的申請(qǐng)或釋放內(nèi)存。它采用先進(jìn)后出FILO(FirstInLastOut)或后進(jìn)先出LIFO(LastInFirstOut)的原則進(jìn)行存取操作,而不是隨機(jī)存取操作方式。堆棧通常由處理器自動(dòng)維持。在8086中,由堆棧段寄存器SS和堆棧指針寄存器SP共同指示。SP指向棧頂,BP指向值參的首地址指令指針I(yè)P指令指針寄存器IP,指示代碼段中指令的偏移地址它與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址計(jì)算機(jī)通過CS:IP寄存器來控制指令序列的執(zhí)行流程IP寄存器是一個(gè)專用寄存器2.標(biāo)志寄存器標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式8086處理器的各種標(biāo)志形成了一個(gè)16位的標(biāo)志寄存器FLAGS(程序狀態(tài)字PSW寄存器)OF111512DF10IF9TF8SF7ZF65AF43PF21CF0
程序設(shè)計(jì)需要利用標(biāo)志的狀態(tài)標(biāo)志的分類狀態(tài)標(biāo)志--用來記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它CFZFSFPFOFAF控制標(biāo)志--可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式DFIFTF進(jìn)位標(biāo)志CF(CarryFlag)當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置1,即CF=1;否則CF=0。3AH+7CH=B6H,沒有進(jìn)位:CF=0AAH+7CH=(1)26H,有進(jìn)位:CF=1零標(biāo)志ZF(ZeroFlag)若運(yùn)算結(jié)果為0,則ZF=1;否則ZF=03AH+7CH=B6H,結(jié)果不是零:ZF=084H+7CH=(1)00H,結(jié)果是零:ZF=1
注意:ZF為1表示的結(jié)果是0符號(hào)標(biāo)志SF(SignFlag)運(yùn)算結(jié)果最高位為1,則SF=1;否則SF=03AH+7CH=B6H,最高位D7=1:SF=184H+7CH=(1)00H,最高位D7=0:SF=0
有符號(hào)數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號(hào)所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài)奇偶標(biāo)志PF(ParityFlag)當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF=1;否則PF=03AH+7CH=B6H=10110110B結(jié)果中有5個(gè)1,是奇數(shù):PF=0PF標(biāo)志僅反映最低8位中“1”的個(gè)數(shù)是
偶或奇,即使是進(jìn)行16位字操作溢出標(biāo)志OF(OverflowFlag)若算術(shù)運(yùn)算的結(jié)果有溢出,則OF=1;否則OF=03AH+7CH=B6H,產(chǎn)生溢出:OF=1AAH+7CH=(1)26H,沒有溢出:OF=0溢出標(biāo)志OF(OverflowFlag)問題什么是溢出?溢出和進(jìn)位有什么區(qū)別?處理器怎么處理,程序員如何運(yùn)用?如何判斷是否溢出?什么是溢出處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)8位表達(dá)的整數(shù)范圍是:+127~-12816位表達(dá)的范圍是:+32767~-32768如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出有溢出,說明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確3AH+7CH=B6H,就是58+124=182,已經(jīng)超出-128~+127范圍,產(chǎn)生溢出,故OF=1;另一方面,補(bǔ)碼B6H表達(dá)真值是-74,顯然運(yùn)算結(jié)果也不正確溢出和進(jìn)位溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志進(jìn)位標(biāo)志表示無符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果仍然正確;溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確。請(qǐng)看例子溢出和進(jìn)位的對(duì)比例1:3AH+7CH=B6H無符號(hào)數(shù)運(yùn)算: 58+124=182
范圍內(nèi),無進(jìn)位有符號(hào)數(shù)運(yùn)算: 58+124=182
范圍外,有溢出例2:AAH+7CH=(1)26H無符號(hào)數(shù)運(yùn)算: 170+124=294
范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算: -86+124=28
范圍內(nèi),無溢出如何運(yùn)用溢出和進(jìn)位處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無符號(hào)數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時(shí),根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志OF。應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來決定。也就是說,如果將參加運(yùn)算的操作數(shù)認(rèn)為是無符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出。溢出的判斷判斷運(yùn)算結(jié)果是否溢出有一個(gè)簡(jiǎn)單的規(guī)則:只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加(包括不同符號(hào)數(shù)相減),而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反時(shí),產(chǎn)生溢出;因?yàn)?,此時(shí)的運(yùn)算結(jié)果顯然不正確其他情況下,則不會(huì)產(chǎn)生溢出輔助進(jìn)位標(biāo)志AF(AuxiliaryCarryFlag)3AH+7CH=B6H,D3有進(jìn)位:AF=1運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或借位時(shí),AF=1;否則AF=0。
這個(gè)標(biāo)志主要由處理器內(nèi)部使用,用于十進(jìn)制算術(shù)運(yùn)算調(diào)整指令中,用戶一般不必關(guān)心方向標(biāo)志DF(DirectionFlag)用于串操作指令中,控制地址的變化方向:設(shè)置DF=0,存儲(chǔ)器地址自動(dòng)增加;設(shè)置DF=1,存儲(chǔ)器地址自動(dòng)減少。CLD指令復(fù)位方向標(biāo)志:DF=0STD指令置位方向標(biāo)志:DF=1中斷允許標(biāo)志IF(Interrupt-enableFlag)用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置IF=1,則允許中斷;設(shè)置IF=0,則禁止中斷。CLI指令復(fù)位中斷標(biāo)志:IF=0STI指令置位中斷標(biāo)志:IF=1陷阱標(biāo)志TF(TrapFlag)用于控制處理器進(jìn)入單步操作方式:設(shè)置TF=0,處理器正常工作;設(shè)置TF=1,處理器單步執(zhí)行指令。單步執(zhí)行指令——處理器在每條指令執(zhí)行結(jié)束時(shí),便產(chǎn)生一個(gè)編號(hào)為1的內(nèi)部中斷這種內(nèi)部中斷稱為單步中斷所以TF也稱為單步標(biāo)志利用單步中斷可對(duì)程序進(jìn)行逐條指令的調(diào)試這種逐條指令調(diào)試程序的方法就是單步調(diào)試四.存儲(chǔ)器組織與段寄存器寄存器是微處理器內(nèi)部暫存數(shù)據(jù)的存儲(chǔ)單元,以名稱表示存儲(chǔ)器則是微處理器外部存放程序及其數(shù)據(jù)的空間程序及其數(shù)據(jù)可以長(zhǎng)久存放在外存,在程序需要時(shí)才進(jìn)入主存主存需要利用地址區(qū)別數(shù)據(jù)信息的表達(dá)單位計(jì)算機(jī)中信息的單位二進(jìn)制位Bit:存儲(chǔ)一位二進(jìn)制數(shù):0或1字節(jié)Byte:8個(gè)二進(jìn)制位,D7~D0字Word:16位,2個(gè)字節(jié),D15~D0雙字DWord:32位,4個(gè)字節(jié),D31~D0最低有效位LSB:數(shù)據(jù)的最低位,D0位最高有效位MSB:數(shù)據(jù)的最高位,對(duì)應(yīng)字節(jié)、字、雙字分別指D7、D15、D31位圖示1.數(shù)據(jù)的存儲(chǔ)格式D7D0字節(jié)D15D0字D31D0雙字D7D000006H78H00005H56H00004H12H00003H34H00002H00001H00000H低地址存儲(chǔ)單元及其存儲(chǔ)內(nèi)容每個(gè)存儲(chǔ)單元都有一個(gè)編號(hào);被稱為存儲(chǔ)器地址每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容0002H單元存放有一個(gè)數(shù)據(jù)34H表達(dá)為 [0002H]=34H圖示多字節(jié)數(shù)據(jù)存放方式多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)存儲(chǔ)單元:存放時(shí),低字節(jié)存入低地址,高字節(jié)存入高地址;表達(dá)時(shí),用它的低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間。圖1.7中2號(hào)“字”單元的內(nèi)容為:[0002H]=1234H2號(hào)“雙字”單元的內(nèi)容為:[0002H]=78561234H80x86處理器采用“低對(duì)低、高對(duì)高”的存儲(chǔ)形式,被稱為“小端方式LittleEndian”。相對(duì)應(yīng)還存在“大端方式BigEndian”。圖示數(shù)據(jù)的地址對(duì)齊同一個(gè)存儲(chǔ)器地址可以是字節(jié)單元地址、字單元地址、雙字單元地址等等字單元安排在偶地址(xxx0B)、雙字單元安排在模4地址(xx00B)等,被稱為“地址對(duì)齊(Align)”對(duì)于不對(duì)齊地址的數(shù)據(jù),處理器訪問時(shí),需要額外的訪問存儲(chǔ)器時(shí)間應(yīng)該將數(shù)據(jù)的地址對(duì)齊,以取得較高的存取速度視具體情況來確定2.存儲(chǔ)器的分段管理8086CPU有20條地址線最大可尋址空間為220=1MB物理地址范圍從00000H~FFFFFH8086CPU將1MB空間分成許多邏輯段(Segment)每個(gè)段最大限制為64KB段地址的低4位為0000B這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理地址外,還具有多個(gè)邏輯地址物理地址和邏輯地址對(duì)應(yīng)每個(gè)物理存儲(chǔ)單元都有一個(gè)唯一的20位編號(hào),就是物理地址,從00000H~FFFFFH。分段后在用戶編程時(shí),采用邏輯地址,形式為段基地址:段內(nèi)偏移地址分隔符邏輯地址段地址說明邏輯段在主存中的起始位置8086規(guī)定段地址必須是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達(dá)段地址偏移地址說明主存單元距離段起始位置的偏移量每段不超過64KB,偏移地址也可用16位數(shù)據(jù)表示物理地址和邏輯地址的轉(zhuǎn)換將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址一個(gè)物理地址可以有多個(gè)邏輯地址邏輯地址 1460:100、1380:F00物理地址 14700H14700H14600H+100H14700H13800H+F00H14700H段地址左移4位加上偏移地址得到物理地址3.段寄存器8086有4個(gè)16位段寄存器CS(代碼段)指明代碼段的起始地址SS(堆棧段)指明堆棧段的起始地址DS(數(shù)據(jù)段)指明數(shù)據(jù)段的起始地址ES(附加段)指明附加段的起始地址每個(gè)段寄存器用來確定一個(gè)邏輯段的起始地址,每種邏輯段均有各自的用途段值的確定一個(gè)執(zhí)行文件.exe在電擊執(zhí)行時(shí),首先由操作系統(tǒng)分析本程序的段占用情況:包括多少段、各段長(zhǎng)度、代碼段第一條指令的偏移然后在當(dāng)前內(nèi)存中尋找合適區(qū)域,并分配CS、DS、SS、ES等各段把.exe執(zhí)行文件中的數(shù)據(jù)調(diào)入內(nèi)存DS段,代碼調(diào)入內(nèi)存CS段……..然后把CPU的CS變?yōu)楫?dāng)前分配的代碼段值,IP為第一條指令的偏移,從而開始程序的執(zhí)行在匯編程序時(shí),通過交叉文件可以看出各段大小。代碼段(CodeSegment)代碼段用來存放程序的指令序列代碼段寄存器CS存放代碼段的段地址指令指針寄存器IP指示下條指令的偏移地址處理器利用CS:IP取得下一條要執(zhí)行的指令堆棧段(StackSegment)堆棧段確定堆棧所在的主存區(qū)域堆棧段寄存器SS存放堆棧段的段地址堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂诽幚砥骼肧S:SP操作堆棧頂?shù)臄?shù)據(jù)數(shù)據(jù)段(DataSegment)數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù)數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)附加段(ExtraSegment)附加段是附加的數(shù)據(jù)段,也用于數(shù)據(jù)的保存:附加段寄存器ES存放附加段的段地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址處理器利用ES:EA存取附加段中的數(shù)據(jù)串操作指令將附加段作為其目的操作數(shù)的存放區(qū)域如何分配各個(gè)邏輯段程序的指令序列必須安排在代碼段程序使用的堆棧一定在堆棧段程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中演示段超越前綴指令沒有指明時(shí),一般的數(shù)據(jù)訪問在DS段;使用BP訪問主存,則在SS段默認(rèn)的情況允許改變,需要使用段超越前綴指令;8086指令系統(tǒng)中有4個(gè):CS: ;代碼段超越,使用代碼段的數(shù)據(jù)SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù)DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù)ES: ;附加段超越,使用附加段的數(shù)據(jù)示例段超越的示例沒有段超越的指令實(shí)例:MOVAX,[2000H]
;AX←DS:[2000H];從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實(shí)例:MOVAX,ES:[2000H]
;AX←ES:[2000H];從指定的ES附加段取出數(shù)據(jù)總結(jié)段寄存器的使用規(guī)定訪問存儲(chǔ)器的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 零售商業(yè)銷售額對(duì)比分析表
- 廣東省深圳市寶安區(qū)2024-2025學(xué)年高二上學(xué)期1月期末調(diào)研測(cè)試生物學(xué)試題(含答案)
- 公司季度發(fā)展調(diào)研報(bào)告分析
- 采購成本預(yù)算表格
- 電子競(jìng)技產(chǎn)業(yè)投資合作協(xié)議
- 智能安防系統(tǒng)合作協(xié)議
- 高科技產(chǎn)業(yè)園建設(shè)投資合同
- 大型企業(yè)采購管理優(yōu)化合作協(xié)議
- 生物學(xué)中的細(xì)胞生物學(xué)練習(xí)題集
- 新員工快速上手工作指南
- 瓜州橋?yàn)车谝伙L(fēng)電場(chǎng)200mw工程可行性研究報(bào)告
- 耳鼻咽喉頭頸外科學(xué):耳科學(xué)
- 2023年空置房管理辦法4篇
- 中考英語現(xiàn)在完成時(shí)專項(xiàng)練習(xí)題及答案學(xué)習(xí)啊
- 電子設(shè)備裝接工常用工具及材料
- 語言學(xué)綱要(全套課件354P)
- 2023年嘉興市青少年信息學(xué)(計(jì)算機(jī))競(jìng)賽(小學(xué)組)試卷
- 2022年江西司法警官職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)試題及答案解析
- M6000-BRAS業(yè)務(wù)配置及日常維護(hù)
- 斜拉橋主橋監(jiān)理細(xì)則
- 太陽系八大行星
評(píng)論
0/150
提交評(píng)論