




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章 16位微處理器8086,第2章 16位微處理器8086,教學(xué)重點(diǎn) 8086的內(nèi)部結(jié)構(gòu) 8086對(duì)存儲(chǔ)器分段管理的基本概念 寄存器的結(jié)構(gòu)以及存儲(chǔ)器組織 邏輯地址到物理地址的變換 8086的兩種工作模式及其配置,2.1 8086微處理器,微處理器是微機(jī)的硬件核心,主要包含指令執(zhí)行的運(yùn)算和控制部件,還有多種寄存器 對(duì)程序員來(lái)說(shuō),微處理器抽象為以名稱(chēng)存取的寄存器 8086內(nèi)部結(jié)構(gòu)有兩個(gè)功能模塊,完成一條指令的取指和執(zhí)行功能 總線接口單元BIU:負(fù)責(zé)讀取指令和操作數(shù) 執(zhí)行單元EU :負(fù)責(zé)指令譯碼和執(zhí)行,8086的內(nèi)部結(jié)構(gòu),執(zhí)行,總線接口單元BIU: 主要負(fù)責(zé)物理地址的形成、預(yù)取指令、指令隊(duì)列排隊(duì)
2、、讀/寫(xiě)操作數(shù)和總線控制。 執(zhí)行單元EU: 主要負(fù)責(zé)指令譯碼和執(zhí)行,8086的寄存器組,8086的通用寄存器,8086的16位通用寄存器是: AXBXCXDX SIDIBPSP 其中前4個(gè)數(shù)據(jù)寄存器都還可以分成高8位和低8位兩個(gè)獨(dú)立的寄存器 8086的8位通用寄存器是: AHBHCHDH ALBLCLDL 對(duì)其中某8位的操作,并不影響另外對(duì)應(yīng)8位的數(shù)據(jù),數(shù)據(jù)寄存器,數(shù)據(jù)寄存器用來(lái)存放計(jì)算的結(jié)果和操作數(shù),也可以存放地址 每個(gè)寄存器又有它們各自的專(zhuān)用目的 AX累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等; BX基址寄存器,常用做存放存儲(chǔ)器地址; CX計(jì)數(shù)器,作為循環(huán)和串操作等指令中
3、的隱含計(jì)數(shù)器; DX數(shù)據(jù)寄存器,常用來(lái)存放雙字長(zhǎng)數(shù)據(jù)的高16位,或存放外設(shè)端口地址。,變址及指針寄存器,變址寄存器常用于存儲(chǔ)器尋址時(shí)提供地址 SI是源變址寄存器 DI是目的變址寄存器 指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù) SP為堆棧指針寄存器,指示棧頂?shù)钠频刂?,不能再用于其他目的,具有?zhuān)用目的 BP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的基地址 SI和DI在串操作指令有特殊用法 SP和BP寄存器與SS段寄存器聯(lián)合使用確定堆棧段中的存儲(chǔ)單元地址,堆棧(Stack),堆棧是主存中一個(gè)特殊的區(qū)域 它采用先進(jìn)后出FILO(First In Last Out)或后進(jìn)先出LIFO(Last In First
4、 Out)的原則進(jìn)行存取操作,而不是隨機(jī)存取操作方式 堆棧通常由處理器自動(dòng)維持 在8086中,由堆棧段寄存器SS和堆棧指針寄存器SP共同指示,段寄存器,DS 數(shù)據(jù)段寄存器 (Data Segment) CS 代碼段寄存器 (Code Segment) ES 附加段寄存器 (Extra Segment) SS 堆棧段寄存器 (Stack Segment) 這些段寄存器的內(nèi)容與有效的地址一起,用于確定內(nèi)存的物理地址。通常用CS、DS、ES以及SS用于確定代碼段、數(shù)據(jù)段、附加段以及堆棧段的基地址。,指令指針I(yè)P,指令指針寄存器IP,指示代碼段中指令的偏移地址 它與代碼段寄存器CS聯(lián)用,確定下一條指令
5、的物理地址 計(jì)算機(jī)通過(guò)CS : IP寄存器來(lái)控制指令序列的執(zhí)行流程 IP寄存器是一個(gè)專(zhuān)用寄存器,標(biāo)志寄存器,標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式,形成16位標(biāo)志寄存器FLAGS(程序狀態(tài)字PSW寄存器) 狀態(tài)標(biāo)志用來(lái)記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它 CF ZF SF PF OF AF 控制標(biāo)志可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式 DF IF TF,進(jìn)位標(biāo)志CF(Carry Flag),當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置1,即CF = 1;否則CF = 0。,3AH + 7CHB6H,沒(méi)有進(jìn)位:CF =
6、 0 AAH + 7CH(1)26H,有進(jìn)位:CF = 1,零標(biāo)志ZF(Zero Flag),若運(yùn)算結(jié)果為0,則ZF = 1; 否則ZF = 0,3AH + 7CHB6H,結(jié)果不是零:ZF = 0 84H + 7CH(1)00H,結(jié)果是零:ZF = 1,注意:ZF為1表示的結(jié)果是0,符號(hào)標(biāo)志SF(Sign Flag),運(yùn)算結(jié)果最高位為1,則SF = 1;否則SF = 0,3AH + 7CHB6H,最高位D71:SF = 1 84H + 7CH(1)00H,最高位D70:SF = 0,有符號(hào)數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號(hào) 所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài),奇偶標(biāo)志PF(Parity Flag)
7、,當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF = 1;否則PF = 0,3AH + 7CHB6H10110110B 結(jié)果中有5個(gè)1,是奇數(shù):PF = 0,PF標(biāo)志僅反映最低8位中“1”的個(gè)數(shù)是偶或奇,即使是進(jìn)行16位字操作,溢出標(biāo)志OF(Overflow Flag),若算術(shù)運(yùn)算的結(jié)果有溢出,則OF1; 否則 OF0,3AH + 7CHB6H,產(chǎn)生溢出:OF = 1 AAH + 7CH(1)26H,沒(méi)有溢出:OF = 0,問(wèn)題 什么是溢出? 溢出和進(jìn)位有什么區(qū)別? 處理器怎么處理,程序員如何運(yùn)用? 如何判斷是否溢出?,什么是溢出,處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù) 8位表達(dá)的整數(shù)范圍是:127
8、128 16位表達(dá)的范圍是:3276732768 如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出 有溢出,說(shuō)明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確,3AH7CHB6H,就是58124182, 已經(jīng)超出128127范圍,產(chǎn)生溢出,故OF1; 另一方面,補(bǔ)碼B6H表達(dá)真值是-74, 顯然運(yùn)算結(jié)果也不正確,溢出和進(jìn)位,溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志 進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,超出范圍后加上進(jìn)位或借位運(yùn)算結(jié)果仍然正確; 溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,超出范圍后運(yùn)算結(jié)果不正確。,溢出和進(jìn)位的對(duì)比,例1:3AH + 7CHB6H 無(wú)符號(hào)數(shù)運(yùn)算:58124182 范圍內(nèi),無(wú)進(jìn)位 有符
9、號(hào)數(shù)運(yùn)算: 58124182 范圍外,有溢出,例2:AAH + 7CH(1)26H 無(wú)符號(hào)數(shù)運(yùn)算:170124294 范圍外,有進(jìn)位 有符號(hào)數(shù)運(yùn)算:8612428 范圍內(nèi),無(wú)溢出,如何運(yùn)用溢出和進(jìn)位,處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無(wú)符號(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)志,則由程序員來(lái)決定。也就是說(shuō),如果將參加運(yùn)算的操作數(shù)認(rèn)為是無(wú)符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出,溢出的判斷,判斷運(yùn)算結(jié)果是否溢出的簡(jiǎn)單規(guī)則: 只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加(包括不同符號(hào)數(shù)相減),而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反時(shí),產(chǎn)生溢出;
10、因?yàn)椋藭r(shí)的運(yùn)算結(jié)果顯然不正確 其他情況下,則不會(huì)產(chǎn)生溢出,若參與操作的兩數(shù)在定義域內(nèi),但運(yùn)算結(jié)果超出了字長(zhǎng)范圍內(nèi)補(bǔ)碼所能允許表示的值,所計(jì)算出的結(jié)果產(chǎn)生了錯(cuò)誤,稱(chēng)之為溢出 判斷方法: 利用符號(hào)位相加的進(jìn)位和數(shù)值部分的最高位相加的進(jìn)位兩者取異或值來(lái)判斷. 異或結(jié)果為1,表示有溢出, 異或結(jié)果為0,表示無(wú)溢出.,溢出的判斷,輔助進(jìn)位標(biāo)志AF(Auxiliary Carry Flag),3AH + 7CHB6H,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)志D
11、F(Direction Flag),用于串操作指令,控制地址的變化方向: 設(shè)置DF0,存儲(chǔ)器地址自動(dòng)增加; 設(shè)置DF1,存儲(chǔ)器地址自動(dòng)減少。,CLD指令復(fù)位方向標(biāo)志:DF0 STD指令置位方向標(biāo)志:DF1,中斷允許標(biāo)志IF(Interrupt-enable Flag),用于控制外部可屏蔽中斷是否可以被處理器響應(yīng): 設(shè)置IF1,則允許中斷; 設(shè)置IF0,則禁止中斷。,CLI指令復(fù)位中斷標(biāo)志:IF0 STI指令置位中斷標(biāo)志:IF1,陷阱標(biāo)志TF(Trap Flag),用于控制處理器進(jìn)入單步操作方式: 設(shè)置TF0,處理器正常工作; 設(shè)置TF1,處理器單步執(zhí)行指令。,單步執(zhí)行指令處理器在每條指令執(zhí)行結(jié)
12、束時(shí),便產(chǎn)生一個(gè)編號(hào)為1的內(nèi)部中斷 這種內(nèi)部中斷稱(chēng)為單步中斷 所以TF也稱(chēng)為單步標(biāo)志 利用單步中斷可對(duì)程序進(jìn)行逐條指令的調(diào)試 這種逐條指令調(diào)試程序的方法就是單步調(diào)試,DEBUG中各標(biāo)志位的符號(hào)表示,數(shù)據(jù)信息的表達(dá)單位,計(jì)算機(jī)中信息的單位 二進(jìn)制位Bit:存儲(chǔ)一位二進(jìn)制數(shù):0或1 字節(jié)Byte:8個(gè)二進(jìn)制位,D7D0 字Word:16位,2個(gè)字節(jié),D15D0 雙字DWord:32位,4個(gè)字節(jié),D31D0 最低有效位LSB:數(shù)據(jù)的最低位,D0位 最高有效位MSB:數(shù)據(jù)的最高位,對(duì)應(yīng)字節(jié)、字、雙字分別指D7、D15、D31位,數(shù)據(jù)的存儲(chǔ)格式,低地址,存儲(chǔ)單元及其存儲(chǔ)內(nèi)容,主存儲(chǔ)器需要利用地址區(qū)別 每
13、個(gè)存儲(chǔ)單元都有一個(gè)編號(hào);被稱(chēng)為存儲(chǔ)器地址 每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容,0002H單元存放有一個(gè)數(shù)據(jù)34H 表達(dá)為0002H34H,多字節(jié)數(shù)據(jù)存放方式,多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)存儲(chǔ)單元: 存放:低字節(jié)存入低地址,高字節(jié)存入高地址 表達(dá):用低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間,2號(hào)“字”單元的內(nèi)容為: 0002H = 1234H 2號(hào)“雙字”單元的內(nèi)容為: 0002H = 78561234H,80 x86處理器采用“低對(duì)低、高對(duì)高”:小端方式Little Endian,數(shù)據(jù)的地址對(duì)齊,同一個(gè)存儲(chǔ)器地址可以是字節(jié)單元地址、字單元地址、雙字單元地址等等 字單元安排在偶地址(xxx0B)、雙字
14、單元安排在模4地址(xx00B)等,被稱(chēng)為“地址對(duì)齊(Align)” 對(duì)于不對(duì)齊地址的數(shù)據(jù),處理器訪問(wèn)時(shí),需要額外的訪問(wèn)存儲(chǔ)器時(shí)間 應(yīng)該將數(shù)據(jù)的地址對(duì)齊,以取得較高的存取速度,數(shù)據(jù)的地址對(duì)齊,為什么地址對(duì)齊能取得較高的存取速度? 實(shí)際上,8086的1M存儲(chǔ)空間分為兩個(gè)512KB的存儲(chǔ)體,其中一個(gè)存儲(chǔ)體每個(gè)地址都是偶地址,另外一個(gè)存儲(chǔ)體每個(gè)地址都是奇地址. 8086的16位數(shù)據(jù)總線D7-D0與偶存儲(chǔ)體相連,D15-D8與奇存儲(chǔ)體相連.字單元安排在偶數(shù)地址存儲(chǔ)器操作只需要一次,如安排在奇數(shù)地址,則需要兩次存儲(chǔ)器操作.,存儲(chǔ)器的分段管理,8086 CPU有20條地址線 最大可尋址空間為2201MB
15、物理地址范圍從00000HFFFFFH 8086CPU將1MB空間分成許多邏輯段(Segment) 每個(gè)段最大限制為64KB 段地址的低4位為0000B 這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理地址外,還具有多個(gè)邏輯地址,物理地址和邏輯地址,每個(gè)物理存儲(chǔ)單元有一個(gè)唯一的20位編號(hào),即物理地址: 00000HFFFFFH 分段后用戶編程時(shí),采用邏輯地址: 段基地址 : 段內(nèi)偏移地址,分隔符,邏輯地址,段地址說(shuō)明邏輯段在主存中的起始位置 8086規(guī)定段地址必須是模16地址:xxxx0H 省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達(dá)段地址 偏移地址說(shuō)明主存單元距離段起始
16、位置的偏移量 每段不超過(guò)64KB,偏移地址也可用16位數(shù)據(jù)表示,物理地址和邏輯地址的轉(zhuǎn)換,將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址 一個(gè)物理地址可以有多個(gè)邏輯地址,邏輯地址1460:100、1380:F00 物理地址14700H 14700H,段寄存器,8086有4個(gè)16位段寄存器,每個(gè)段寄存器確定一個(gè)邏輯段的起始地址,每種邏輯段均有各自的用途 CS(Code Segment) 指明代碼段的起始地址 SS(Stack Segment) 指明堆棧段的起始地址 DS(Data Segment) 指明數(shù)據(jù)段的起始地址 ES(Extra Segment) 指明附加段的起始地址,代
17、碼段(Code Segment),代碼段用來(lái)存放程序的指令序列 代碼段寄存器CS存放代碼段的段地址 指令指針寄存器IP指示下條指令的偏移地址 處理器利用CS:IP取得下一條要執(zhí)行的指令,堆棧段(Stack Segment),堆棧段確定堆棧所在的主存區(qū)域 堆棧段寄存器SS存放堆棧段的段地址 堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂?處理器利用SS:SP操作堆棧頂?shù)臄?shù)據(jù),數(shù)據(jù)段(Data Segment),數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù) 數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址 各種主存尋址方式(有效地址EA)得到存儲(chǔ)器中操作數(shù)的偏移地址 處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù),附加段(Extra Seg
18、ment),附加段是附加的數(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í)際上可以存放在任何一種邏輯段中,段超越前綴指令,沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在DS段;使用BP訪問(wèn)主存,則在SS段 默認(rèn)的情況允許改變,需要使用段超越前綴指令;8086指令系統(tǒng)
19、中有4個(gè): CS:;代碼段超越,使用代碼段的數(shù)據(jù) SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù) DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù) ES: ;附加段超越,使用附加段的數(shù)據(jù),段超越的示例,沒(méi)有段超越的指令實(shí)例: MOV AX,2000H;AXDS:2000H ;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù) 采用段超越前綴的指令實(shí)例: MOV AX,ES:2000H;AXES:2000H ;從指定的ES附加段取出數(shù)據(jù),段寄存器的使用規(guī)定,存儲(chǔ)器的分段,8086對(duì)邏輯段要求: 段地址低4位均為0 每段最大不超過(guò)64KB 8086對(duì)邏輯段并不要求: 必須是64KB 各段之間完全分開(kāi)(即可以重疊),各個(gè)邏輯段獨(dú)立,各個(gè)邏輯
20、段重疊,1MB空間的分段,1MB空間最多能分成多少個(gè)段? 每隔16個(gè)存儲(chǔ)單元就可以開(kāi)始一個(gè)段 所以1MB最多可以有: 2201621664K 個(gè)段 1MB空間最少能分成多少個(gè)段? 每隔64K個(gè)存儲(chǔ)單元開(kāi)始一個(gè)段 所以1MB最少可以有: 22021616 個(gè)段,8086對(duì)存儲(chǔ)器的訪問(wèn),2.2 8086微處理器的引腳及工作模式,一、8086CPU的引腳及其功能,8086CPU的40條引腳信號(hào)可按功能分可分為四類(lèi),它們是: 地址總線 數(shù)據(jù)總線 控制總線 其它(時(shí)鐘與電源)。,1.最小模式和最大模式概念,(1)最小模式: 在系統(tǒng)中只有一個(gè)微處理器。 (2)最大模式: 兩個(gè)或多個(gè)微處理器(主處理器、協(xié)處
21、理器),2.8086的引腳信號(hào),(1)最小模式( MN/MX接5V), AD15AD0,地址/數(shù)據(jù)總線 A19/S6A16/S3,地址/狀態(tài)總線 BHE/ S7,高8位數(shù)據(jù)允許/狀態(tài)線 MN/MX,最小/最大模式控制信號(hào),輸入 RD,讀信號(hào) WR,寫(xiě)信號(hào) M/IO,存儲(chǔ)器/輸入輸出控制信號(hào),ALE,地址鎖存允許信號(hào) READY(Ready),準(zhǔn)備就緒信號(hào) INTR,可屏蔽中斷請(qǐng)求信號(hào) INTA,中斷響應(yīng)信號(hào) NMI,非屏蔽中斷請(qǐng)求信號(hào) RESET,系統(tǒng)復(fù)位信號(hào) DEN,數(shù)據(jù)允許信號(hào) DT/R,數(shù)據(jù)發(fā)送/接收控制信號(hào),HOLD,總線保持請(qǐng)求信號(hào)輸入 HLDA,總線保持響應(yīng)信號(hào) TEST,測(cè)試信號(hào)
22、 CLK,時(shí)鐘輸入信號(hào) VCC(+5V),GND,(2)最大模式( MN/MX接地),8086 CPU工作在最大模式時(shí),其2431引腳需重新定義,如表2-4所示。,QS1/QS0,指令隊(duì)列狀態(tài)信號(hào) S2、S1、S0 ,總線周期狀態(tài)信號(hào) LOCK ,總線封鎖信號(hào) RQ/GT1和RQ/GT0 ,總線請(qǐng)求信號(hào)輸入/總線請(qǐng)求信號(hào)允許輸出,二、8086在最小和最大模式下的典型配置,在最小工作模式系統(tǒng)配置中,除了8086CPU外,還需要在外圍電路中加入: 1片8284A,作為時(shí)鐘發(fā)生器。 3片8282(8位鎖存器)或74LS373,作為地址鎖存器。 2片8286/8287或74LS245,作為雙向總線收發(fā)
23、器,以增加數(shù)據(jù)總線的驅(qū)動(dòng)能力。,2.8086最大工作模式的典型配置,從圖2-9和圖2-10中可以看出,8086CPU在最大模式和最小模式之間的主要區(qū)別是:在最大模式下,需要增加一個(gè)轉(zhuǎn)換控制信號(hào)的電路,用來(lái)對(duì)CPU發(fā)出的控制信號(hào)進(jìn)行變換和組合,即8288總線控制器。 8288接受8086CPU的狀態(tài)信號(hào)S2、S1和S0,經(jīng)過(guò)變換和組合,由8288產(chǎn)生并發(fā)出對(duì)存儲(chǔ)器或I/O端口的讀/寫(xiě)信號(hào),產(chǎn)生和發(fā)出對(duì)地址鎖存器8282及總線收發(fā)器8286的控制信號(hào)等。,2.3 8086的尋址方式,指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來(lái)源 尋找操作數(shù)的過(guò)程就是操作數(shù)的尋址 操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效
24、率 如何尋址一個(gè)操作數(shù)對(duì)程序設(shè)計(jì)很重要,上機(jī)實(shí)踐的建議 配合調(diào)試程序DEBUG單步執(zhí)行每條指令顯示結(jié)果,感性認(rèn)識(shí)因直觀而印象深刻,調(diào)試程序DEBUG,DEBUG是常用的匯編語(yǔ)言級(jí)調(diào)試工具,為匯編語(yǔ)言程序員提供了分析指令、跟蹤程序的有效手段 常用命令: A 匯編U 反匯編 T 單步執(zhí)行G 斷點(diǎn)執(zhí)行 D 數(shù)據(jù)顯示R 寄存器,指令的組成,指令由操作碼和操作數(shù)兩部分組成 操作碼說(shuō)明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分 操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象 有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù),指令的操作碼
25、和操作數(shù),每種指令的操作碼: 用一個(gè)唯一的助記符表示(指令功能的英文縮寫(xiě)) 對(duì)應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼 指令中的操作數(shù): 可以是一個(gè)具體的數(shù)值 可以是存放數(shù)據(jù)的寄存器 或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址,8086的機(jī)器代碼格式,8086的機(jī)器代碼格式,標(biāo)準(zhǔn)機(jī)器代碼示例,mov ax,BP+0 ;機(jī)器代碼是 8B 46 00 前一個(gè)字節(jié)8B是操作碼(含w1表示字操作) 中間一個(gè)字節(jié)46(01 000 110)是 “mod reg r/m”字節(jié) reg000表示目的操作數(shù)為AX mod01和r/m110表示源操作數(shù)為BP+D8 最后一個(gè)字節(jié)就是8位位移量D800,其它機(jī)器代碼形式,mov al,
26、05 ;機(jī)器代碼是B0 05 前一個(gè)字節(jié)B0是操作碼(含一個(gè)操作數(shù)AL),后一個(gè)字節(jié)05是立即數(shù) mov ax,0102H ;機(jī)器代碼是B8 02 01 前一個(gè)字節(jié)B8是操作碼(含一個(gè)操作數(shù)AX),后兩個(gè)字節(jié)02 01是16位立即數(shù)(低字節(jié)02在低地址),指令的助記符格式,操作碼 操作數(shù)1,操作數(shù)2;注釋 操作數(shù)2,稱(chēng)為源操作數(shù) src,它表示參與指令操作的一個(gè)對(duì)象 操作數(shù)1,稱(chēng)為目的操作數(shù) dest,它不僅可以作為指令操作的一個(gè)對(duì)象,還可以用來(lái)存放指令操作的結(jié)果 分號(hào)后的內(nèi)容是對(duì)指令的解釋,傳送指令MOV的格式,MOV dest,src;destsrc 功能:將源操作數(shù)src傳送至目的操作數(shù)
27、dest MOV AL,05H;AL05H MOV BX,AX;BXAX MOV AX,SI;AXDS:SI MOV AX,BP+06H;AXSS:BP+06H MOV AX,BX+SI;AXDS:BX+SI,傳送指令MOV的功能,源操作數(shù) src,目的操作數(shù) dest,30H,30H,被傳送的數(shù)據(jù),立即數(shù)尋址方式,指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中) 這種操作數(shù)被稱(chēng)為立即數(shù)imm 它可以是8位數(shù)值i8(00HFFH) 也可以是16位數(shù)值i16(0000HFFFFH) 立即數(shù)尋址方式常用來(lái)給寄存器賦值 MOV AL,05H;
28、AL05H MOV AX,0102H;AX0102H,立即數(shù)尋址指令,MOV AX,0102H;AX0102H,立即尋址,寄存器尋址方式,操作數(shù)存放在CPU的內(nèi)部寄存器reg中: 8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 4個(gè)段寄存器seg: CS、DS、SS、ES MOV AX,1234H;AX1234H MOV BX,AX;BXAX,寄存器尋址指令,MOV BX,AX;BXAX,寄存器尋址,存儲(chǔ)器尋址方式,指令中給出操作數(shù)的主存地址信息(偏移地址,稱(chēng)之為有效地址EA),而段地址在默認(rèn)的或用段超越前
29、綴指定的段寄存器中 8086設(shè)計(jì)了多種存儲(chǔ)器尋址方式 1、直接尋址方式 2、寄存器間接尋址方式 3、寄存器相對(duì)尋址方式 4、基址變址尋址方式 5、相對(duì)基址變址尋址方式,直接尋址方式,有效地址在指令中直接給出 默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變 MOV AX,2000H ;AXDS:2000H ;指令代碼:A1 00 20 MOV AX,ES:2000H ;AXES:2000H ;指令代碼:26 A1 00 20,直接尋址指令,MOV AX,2000H ;AXDS:2000H,直接尋址,寄存器間接尋址方式,有效地址存放在基址寄存器BX或變址寄存器SI、DI中 默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變 MOV AX,SI;AXDS:SI,間接尋址,寄存器相對(duì)尋址方式,有效地址是寄存器內(nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX/BP或SI/DI 有效地址B
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文學(xué)作品中性別符號(hào)的符號(hào)學(xué)解讀與權(quán)力關(guān)系研究
- 公司在逃人員管理辦法
- 根據(jù)銀企對(duì)賬管理辦法
- 河源冷庫(kù)庫(kù)存管理辦法
- 江蘇苗木休眠管理辦法
- 硬筆書(shū)法教學(xué)設(shè)計(jì)與實(shí)施指南
- 季節(jié)性施工的技術(shù)難點(diǎn)及應(yīng)對(duì)策略
- 制定管理辦法提升管理
- 生產(chǎn)安全事故報(bào)告和調(diào)查處理?xiàng)l例規(guī)定事故
- 新疆暖氣收費(fèi)管理辦法
- 2025年國(guó)家醫(yī)療器械抽檢品種檢驗(yàn)方案
- 防汛物資儲(chǔ)備定額編制規(guī)程(SL298-2024)
- 無(wú)人機(jī)培訓(xùn)創(chuàng)業(yè)計(jì)劃書(shū)-20250205-222450
- 輿情分析試題及答案
- 營(yíng)運(yùn)車(chē)輛入股協(xié)議書(shū)
- 高中數(shù)學(xué)專(zhuān)項(xiàng)提升計(jì)劃
- 2025年國(guó)家公務(wù)員考錄《申論》真題及參考答案(行政執(zhí)法卷)
- 企業(yè)數(shù)字化轉(zhuǎn)型與員工績(jī)效的關(guān)聯(lián)性分析報(bào)告
- 水工程概論課件
- 小學(xué)管理考試題及答案
- 研學(xué)活動(dòng)協(xié)議書(shū)合同協(xié)議
評(píng)論
0/150
提交評(píng)論