版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第2 2章章微處理器內(nèi)部結(jié)構(gòu)及微處理器內(nèi)部結(jié)構(gòu)及指令系統(tǒng)指令系統(tǒng)2.1 微處理器的內(nèi)部結(jié)構(gòu)微處理器的內(nèi)部結(jié)構(gòu)從應(yīng)用角度(不是從內(nèi)部工作原理)展開從應(yīng)用角度(不是從內(nèi)部工作原理)展開典型典型8位微處理器的基本結(jié)構(gòu)位微處理器的基本結(jié)構(gòu)8088/8086的功能結(jié)構(gòu)的功能結(jié)構(gòu)8088/8086的寄存器結(jié)構(gòu)的寄存器結(jié)構(gòu)8088/8086的存儲(chǔ)器結(jié)構(gòu)的存儲(chǔ)器結(jié)構(gòu)為學(xué)習(xí)指令系統(tǒng)打好基礎(chǔ)為學(xué)習(xí)指令系統(tǒng)打好基礎(chǔ)例如:例如:關(guān)心用戶關(guān)心用戶“可編程可編程”寄存器,寄存器,不關(guān)心無法操縱的不關(guān)心無法操縱的“透明透明”寄存器寄存器內(nèi)部數(shù)據(jù)總線內(nèi)部數(shù)據(jù)總線控制總線控制總線數(shù)據(jù)總線數(shù)據(jù)總線地址總線地址總線暫存器暫存器累
2、加器累加器ALU標(biāo)志寄存器標(biāo)志寄存器指指令令寄寄存存指指令令譯譯碼碼時(shí)序時(shí)序和和控制控制邏輯邏輯通通 用用寄存器組寄存器組地地 址址寄存器組寄存器組地址地址總線總線控制控制數(shù)據(jù)數(shù)據(jù)總線總線控制控制2.1.1 微處理器的基本結(jié)構(gòu)微處理器的基本結(jié)構(gòu)1.算術(shù)邏輯單元(運(yùn)算器)算術(shù)邏輯單元(運(yùn)算器)2.寄存器組寄存器組3.指令處理單元(控制器)指令處理單元(控制器)2.1.2 8088/8086的功能結(jié)構(gòu)的功能結(jié)構(gòu)8088的的內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)從功能上分成兩個(gè)單元從功能上分成兩個(gè)單元1. 總線接口單元總線接口單元BIU管理管理8088與系統(tǒng)總線的接口與系統(tǒng)總線的接口負(fù)責(zé)負(fù)責(zé)CPU對存儲(chǔ)器和外設(shè)進(jìn)行訪問對
3、存儲(chǔ)器和外設(shè)進(jìn)行訪問2. 執(zhí)行單元執(zhí)行單元EU負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算兩個(gè)單元相互獨(dú)立,分別完成各自操作,兩個(gè)單元相互獨(dú)立,分別完成各自操作,還可以還可以并行執(zhí)行并行執(zhí)行,實(shí)現(xiàn)指令預(yù)?。?,實(shí)現(xiàn)指令預(yù)?。ㄖ噶钭x取指令讀取和執(zhí)行的流水線操作和執(zhí)行的流水線操作)2.1.3 8088/8086的寄存器結(jié)構(gòu)的寄存器結(jié)構(gòu)8088/8086的寄存器組有的寄存器組有8個(gè)通用寄存器個(gè)通用寄存器4個(gè)段寄存器個(gè)段寄存器1個(gè)標(biāo)志寄存器個(gè)標(biāo)志寄存器1個(gè)指令指針寄存器個(gè)指令指針寄存器它們均為它們均為1616位位! !圖示圖示 匯編語言程序員看到的處理器,就是寄存器匯編語言程序員看到
4、的處理器,就是寄存器 所以,一定要熟悉這些寄存器的名稱和作用所以,一定要熟悉這些寄存器的名稱和作用1. 通用寄存器通用寄存器8088有有8個(gè)通用的個(gè)通用的16位寄存器位寄存器(1)數(shù)據(jù)寄存器)數(shù)據(jù)寄存器: AX BX CX DX(2)變址寄存器)變址寄存器: SI DI(3)指針寄存器)指針寄存器: BP SP4個(gè)數(shù)據(jù)寄存器還可以分成高個(gè)數(shù)據(jù)寄存器還可以分成高8位和低位和低8位兩位兩個(gè)獨(dú)立的寄存器,這樣又形成個(gè)獨(dú)立的寄存器,這樣又形成8個(gè)通用的個(gè)通用的8位寄存器位寄存器AX: AH ALBX: BH BLCX: CH CLDX: DH DL(1)數(shù)據(jù)寄存器)數(shù)據(jù)寄存器AX稱為稱為累加器累加器(
5、Accumulator)使用頻度最高。用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信使用頻度最高。用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等息等BX稱為稱為基址寄存器基址寄存器(Base address Register)常用做存放存儲(chǔ)器地址常用做存放存儲(chǔ)器地址CX稱為稱為計(jì)數(shù)器計(jì)數(shù)器(Counter)作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器DX稱為稱為數(shù)據(jù)寄存器數(shù)據(jù)寄存器(Data register)常用來存放雙字長數(shù)據(jù)的高常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址位,或存放外設(shè)端口地址(2)變址寄存器)變址寄存器16位變址寄存器位變址寄存器SI和和DI常用于存儲(chǔ)器變
6、址尋址方式時(shí)提供地址常用于存儲(chǔ)器變址尋址方式時(shí)提供地址SI是源地址寄存器(是源地址寄存器(Source Index)DI是目的地址寄存器(是目的地址寄存器(Destination Index)在串操作類指令中,在串操作類指令中,SI、DI還有較特殊的還有較特殊的用法用法 現(xiàn)在不必完全理解,以后會(huì)詳細(xì)展開現(xiàn)在不必完全理解,以后會(huì)詳細(xì)展開(3)指針寄存器)指針寄存器指針寄存器用于尋址內(nèi)存指針寄存器用于尋址內(nèi)存堆棧堆棧內(nèi)的數(shù)據(jù)內(nèi)的數(shù)據(jù)SPSP為堆棧指針寄存器(為堆棧指針寄存器(Stack Pointer), ,指示指示堆棧段棧頂?shù)奈恢茫ㄆ频刂罚┒褩6螚m數(shù)奈恢茫ㄆ频刂罚〣PBP為基址指針寄存器(
7、為基址指針寄存器(Base Pointer),表示),表示數(shù)據(jù)在堆棧段中的基地址數(shù)據(jù)在堆棧段中的基地址SPSP和和BPBP寄存器與寄存器與SSSS段寄存器聯(lián)合使用以確段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址定堆棧段中的存儲(chǔ)單元地址堆棧堆棧(Stack)是主存中一個(gè)特殊的)是主存中一個(gè)特殊的區(qū)域,采用區(qū)域,采用“先進(jìn)后出先進(jìn)后出”或或“后進(jìn)先出后進(jìn)先出”存取操作方式、而不是隨機(jī)存取方式。存取操作方式、而不是隨機(jī)存取方式。用用8088/8086形成的微機(jī)系統(tǒng)中,堆形成的微機(jī)系統(tǒng)中,堆棧區(qū)域被稱為堆棧段棧區(qū)域被稱為堆棧段2. 指令指針寄存器指令指針寄存器IP(Instruction Pointe
8、r)為指令指針寄存)為指令指針寄存器,指示主存儲(chǔ)器指令的位置器,指示主存儲(chǔ)器指令的位置隨著指令的執(zhí)行,隨著指令的執(zhí)行,IP將自動(dòng)修改以指示下將自動(dòng)修改以指示下一條指令所在的存儲(chǔ)器位置一條指令所在的存儲(chǔ)器位置IP寄存器是一個(gè)寄存器是一個(gè)專用專用寄存器寄存器IPIP寄存器與寄存器與CSCS段寄存器聯(lián)合使用以確定下段寄存器聯(lián)合使用以確定下一條指令的存儲(chǔ)單元地址一條指令的存儲(chǔ)單元地址3. 標(biāo)志寄存器標(biāo)志寄存器標(biāo)志標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果)用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式或控制指令執(zhí)行形式8088處理器的各種標(biāo)志形成了一個(gè)處理器的各種標(biāo)志形成了一個(gè)16位的標(biāo)志寄存器位的標(biāo)志寄存器FLA
9、GS(程序狀態(tài)字(程序狀態(tài)字PSW寄存器)寄存器) 程序設(shè)計(jì)需要利用標(biāo)志的狀態(tài)程序設(shè)計(jì)需要利用標(biāo)志的狀態(tài)標(biāo)志寄存器標(biāo)志寄存器-分類分類狀態(tài)標(biāo)志狀態(tài)標(biāo)志用來記錄程序運(yùn)行結(jié)果的狀態(tài)用來記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它CF ZF SF PF OF AF控制標(biāo)志控制標(biāo)志可由程序根據(jù)需要用指令設(shè)置可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式,用于控制處理器執(zhí)行指令的方式DF IF TFOF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0標(biāo)志寄存器標(biāo)志寄存器FLAGS進(jìn)位標(biāo)志進(jìn)位標(biāo)志CF(Carry Flag)
10、當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置位(減法)時(shí),進(jìn)位標(biāo)志置1,即,即CF1; 否則否則CF03AH + 7CHB6H,沒有進(jìn)位:,沒有進(jìn)位:CF = 0AAH + 7CH(1)26H,有進(jìn)位:,有進(jìn)位:CF = 1零標(biāo)志零標(biāo)志ZF(Zero Flag)若運(yùn)算結(jié)果為若運(yùn)算結(jié)果為0,則,則ZF1;否則否則ZF03AH7CHB6H,結(jié)果不是零:,結(jié)果不是零:ZF084H7CH(1)00H,結(jié)果是零:,結(jié)果是零:ZF1 注意:注意:ZF為為1表示的結(jié)果是表示的結(jié)果是0符號標(biāo)志符號標(biāo)志SF(Sign Flag)運(yùn)算結(jié)果最高位為運(yùn)算結(jié)果
11、最高位為1,則,則SF1; 否則否則SF03AH7CHB6H,最高位,最高位D71:SF184H7CH(1)00H,最高位,最高位D70:SF0 有符號數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號有符號數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號所以,最高有效位就是符號標(biāo)志的狀態(tài)所以,最高有效位就是符號標(biāo)志的狀態(tài)奇偶標(biāo)志奇偶標(biāo)志PF(Parity Flag)當(dāng)運(yùn)算結(jié)果最低字節(jié)中當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為的個(gè)數(shù)為零或偶數(shù)時(shí),零或偶數(shù)時(shí),PF1;否則;否則PF03AH7CHB6H10110110B結(jié)果中有結(jié)果中有5個(gè)個(gè)“1”,是奇數(shù):,是奇數(shù):PF0 PF標(biāo)志僅反映最低標(biāo)志僅反映最低8位中位中“1”的個(gè)數(shù)是的個(gè)數(shù)是偶
12、或奇,即使是進(jìn)行偶或奇,即使是進(jìn)行16位字操作位字操作溢出標(biāo)志溢出標(biāo)志OF(Overflow Flag)若算術(shù)運(yùn)算的結(jié)果有溢出,則若算術(shù)運(yùn)算的結(jié)果有溢出,則OF1; 否則否則 OF03AH + 7CHB6H,產(chǎn)生溢出:,產(chǎn)生溢出:OF1AAH + 7CH(1)26H,沒有溢出:,沒有溢出:OF0溢出和進(jìn)位的區(qū)別溢出和進(jìn)位的區(qū)別溢出標(biāo)志溢出標(biāo)志OF和進(jìn)位標(biāo)志和進(jìn)位標(biāo)志CF是兩個(gè)意義是兩個(gè)意義不同的標(biāo)志不同的標(biāo)志進(jìn)位標(biāo)志表示無符號數(shù)運(yùn)算結(jié)果是否進(jìn)位標(biāo)志表示無符號數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果仍然正確超出范圍,運(yùn)算結(jié)果仍然正確溢出標(biāo)志表示有符號數(shù)運(yùn)算結(jié)果是否溢出標(biāo)志表示有符號數(shù)運(yùn)算結(jié)果是否超出范圍
13、,運(yùn)算結(jié)果已經(jīng)不正確超出范圍,運(yùn)算結(jié)果已經(jīng)不正確輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志AF(Auxiliary Carry Flag)3AH7CHB6H,D3有進(jìn)位:有進(jìn)位:AF1運(yùn)算時(shí)運(yùn)算時(shí)D D3 3位(低半字節(jié))有進(jìn)位或位(低半字節(jié))有進(jìn)位或借位時(shí),借位時(shí),AFAF1 1;否則;否則AFAF0 0方向標(biāo)志方向標(biāo)志DF(Direction Flag)用于串操作指令中,控制地址的變化方向:用于串操作指令中,控制地址的變化方向:設(shè)置設(shè)置DF0,存儲(chǔ)器地址自動(dòng)增加;,存儲(chǔ)器地址自動(dòng)增加;設(shè)置設(shè)置DF1,存儲(chǔ)器地址自動(dòng)減少,存儲(chǔ)器地址自動(dòng)減少CLDCLD指令復(fù)位方向標(biāo)志:指令復(fù)位方向標(biāo)志:DFDF0 0STDS
14、TD指令置位方向標(biāo)志:指令置位方向標(biāo)志:DFDF1 1中斷允許標(biāo)志中斷允許標(biāo)志IF(Interrupt-enable Flag)控制可屏蔽中斷是否可以被處理器響應(yīng):控制可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置設(shè)置IF1,則允許中斷;,則允許中斷;設(shè)置設(shè)置IF0,則禁止中斷,則禁止中斷CLICLI指令復(fù)位中斷標(biāo)志:指令復(fù)位中斷標(biāo)志:IFIF0 0STISTI指令置位中斷標(biāo)志:指令置位中斷標(biāo)志:IFIF1 1陷阱標(biāo)志陷阱標(biāo)志TF(Trap Flag)用于控制處理器進(jìn)入單步操作方式:用于控制處理器進(jìn)入單步操作方式:設(shè)置設(shè)置TF0,處理器正常工作;,處理器正常工作;設(shè)置設(shè)置TF1,處理器,處理器單步執(zhí)行指
15、令單步執(zhí)行指令單步執(zhí)行指令單步執(zhí)行指令處理器在每條指令執(zhí)行結(jié)處理器在每條指令執(zhí)行結(jié)束時(shí),便產(chǎn)生一個(gè)編號為束時(shí),便產(chǎn)生一個(gè)編號為1 1的內(nèi)部中斷的內(nèi)部中斷這種內(nèi)部中斷稱為這種內(nèi)部中斷稱為單步中斷單步中斷所以所以TFTF也稱為也稱為單步標(biāo)志單步標(biāo)志n利用單步中斷可對程序進(jìn)行逐條指令的調(diào)試?yán)脝尾街袛嗫蓪Τ绦蜻M(jìn)行逐條指令的調(diào)試n這種逐條指令調(diào)試程序的方法就是這種逐條指令調(diào)試程序的方法就是單步調(diào)試單步調(diào)試2.1.4 8088/8086的存儲(chǔ)器結(jié)構(gòu)的存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)存儲(chǔ)信息的地方。掌握數(shù)是計(jì)算機(jī)存儲(chǔ)信息的地方。掌握數(shù)據(jù)據(jù)存儲(chǔ)格式存儲(chǔ)格式,以及存儲(chǔ)器的,以及存儲(chǔ)器的分段管理分段管理對以對以后
16、的匯編程序設(shè)計(jì)非常重要后的匯編程序設(shè)計(jì)非常重要你能區(qū)別你能區(qū)別寄存器寄存器、存儲(chǔ)器存儲(chǔ)器(主存主存)、外存外存(包包括硬盤、光盤、磁帶等存儲(chǔ)介質(zhì)括硬盤、光盤、磁帶等存儲(chǔ)介質(zhì))嗎?嗎?答案答案寄存器、存儲(chǔ)器和外存的區(qū)別寄存器、存儲(chǔ)器和外存的區(qū)別寄存器寄存器是處理器(是處理器(CPU)內(nèi)部)內(nèi)部暫存數(shù)據(jù)暫存數(shù)據(jù)的存儲(chǔ)單的存儲(chǔ)單元,以名稱表示,例如:元,以名稱表示,例如:AX,BX.等等存儲(chǔ)器存儲(chǔ)器也就是平時(shí)所說的也就是平時(shí)所說的主存主存,也叫,也叫內(nèi)存內(nèi)存,可直,可直接與接與CPU進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別進(jìn)行數(shù)據(jù)交換。主存利用地址區(qū)別外存外存主要指用來長久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì),主要指用來長
17、久保存數(shù)據(jù)的外部存儲(chǔ)介質(zhì),常見的有硬盤、光盤、磁帶、常見的有硬盤、光盤、磁帶、U盤等。外存的數(shù)據(jù)盤等。外存的數(shù)據(jù)只能通過主存間接地與只能通過主存間接地與CPU交換數(shù)據(jù)交換數(shù)據(jù)程序及其數(shù)據(jù)可以長久存放在外存,在運(yùn)行需要程序及其數(shù)據(jù)可以長久存放在外存,在運(yùn)行需要時(shí)才進(jìn)入主存時(shí)才進(jìn)入主存1. 數(shù)據(jù)的存儲(chǔ)格式數(shù)據(jù)的存儲(chǔ)格式計(jì)算機(jī)中信息的單位計(jì)算機(jī)中信息的單位二進(jìn)制位二進(jìn)制位BitBit:存儲(chǔ)一位二進(jìn)制數(shù):存儲(chǔ)一位二進(jìn)制數(shù):0 0或或1 1字節(jié)字節(jié)ByteByte:8 8個(gè)二進(jìn)制位,個(gè)二進(jìn)制位,D D7 7D D0 0字字WordWord:1616位,位,2 2個(gè)字節(jié),個(gè)字節(jié),D D1515D D0 0
18、雙字雙字DWordDWord:3232位,位,4 4個(gè)字節(jié),個(gè)字節(jié),D D3131D D0 0最低有效位最低有效位LSBLSB:數(shù)據(jù)的最低位,:數(shù)據(jù)的最低位,D D0 0位位最高有效位最高有效位MSBMSB:數(shù)據(jù)的最高位,對應(yīng)字節(jié):數(shù)據(jù)的最高位,對應(yīng)字節(jié)、字、雙字分別指、字、雙字分別指D D7 7、D D1515、D D3131位位存儲(chǔ)單元及其存儲(chǔ)內(nèi)容存儲(chǔ)單元及其存儲(chǔ)內(nèi)容每個(gè)存儲(chǔ)單元都有一個(gè)編號;被稱每個(gè)存儲(chǔ)單元都有一個(gè)編號;被稱為為存儲(chǔ)器地址存儲(chǔ)器地址每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)的內(nèi)容0002H0002H單元存放有一個(gè)數(shù)據(jù)單元存放有一個(gè)數(shù)據(jù)34H34H表達(dá)為表達(dá)為0
19、002H0002H34H34H多字節(jié)數(shù)據(jù)存放方式多字節(jié)數(shù)據(jù)存放方式多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)存儲(chǔ)單元:存儲(chǔ)單元:存放時(shí),低字節(jié)存入低地址,高字節(jié)存存放時(shí),低字節(jié)存入低地址,高字節(jié)存入高地址;入高地址;表達(dá)時(shí),用它的低地址表示多字節(jié)數(shù)據(jù)表達(dá)時(shí),用它的低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間。占據(jù)的地址空間。圖圖2-52-5中中0002H0002H“字字”單元的內(nèi)容為:單元的內(nèi)容為:0002H = 1234H0002H = 1234H0002H0002H號號“雙字雙字”單元的內(nèi)容為:單元的內(nèi)容為:0002H = 78561234H0002H = 78561234H
20、80 x86處理器采用處理器采用“低對低、高對低對低、高對高高”的存儲(chǔ)形式,被稱為的存儲(chǔ)形式,被稱為“小端方式小端方式Little Endian”。 相對應(yīng)還存在相對應(yīng)還存在“大端方式大端方式Big Endian”。數(shù)據(jù)的地址對齊數(shù)據(jù)的地址對齊同一個(gè)存儲(chǔ)器地址可以是字節(jié)單元地址、字單元同一個(gè)存儲(chǔ)器地址可以是字節(jié)單元地址、字單元地址、雙字單元地址等等地址、雙字單元地址等等字單元安排在字單元安排在偶地址偶地址(xxx0B)、雙字單元安排)、雙字單元安排在在模模4地址地址(xx00B)等,為)等,為“地址對齊(地址對齊(Align)”(N字節(jié)數(shù)據(jù)安排的起始地址能夠被字節(jié)數(shù)據(jù)安排的起始地址能夠被N整除
21、)整除)對于不對齊地址的數(shù)據(jù),處理器訪問時(shí),需要額對于不對齊地址的數(shù)據(jù),處理器訪問時(shí),需要額外的訪問存儲(chǔ)器時(shí)間外的訪問存儲(chǔ)器時(shí)間應(yīng)該將數(shù)據(jù)的地址對齊,以取得較高的存取速度應(yīng)該將數(shù)據(jù)的地址對齊,以取得較高的存取速度2. 存儲(chǔ)器的分段管理存儲(chǔ)器的分段管理8088CPU8088CPU有有2020條地址線條地址線最大可尋址空間為最大可尋址空間為2 220201MB1MB物理地址范圍從物理地址范圍從00000H00000HFFFFFHFFFFFH8088CPU8088CPU將將1MB1MB空間分成許多空間分成許多邏輯段(邏輯段(SegmentSegment)每個(gè)段最大限制為每個(gè)段最大限制為64KB64K
22、B段地址的低段地址的低4 4位為位為0000B0000B這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物這樣,一個(gè)存儲(chǔ)單元除具有一個(gè)唯一的物理地址外,還具有多個(gè)邏輯地址理地址外,還具有多個(gè)邏輯地址物理地址和邏輯地址物理地址和邏輯地址8088CPU存儲(chǔ)系統(tǒng)中,對應(yīng)每個(gè)物理存存儲(chǔ)系統(tǒng)中,對應(yīng)每個(gè)物理存儲(chǔ)單元都有一個(gè)唯一的儲(chǔ)單元都有一個(gè)唯一的20位編號,就是物位編號,就是物理地址,從理地址,從00000H FFFFFH分段后在用戶編程時(shí),采用邏輯地址,分段后在用戶編程時(shí),采用邏輯地址,形式為形式為段基地址段基地址 : : 段內(nèi)偏移地址段內(nèi)偏移地址分隔符分隔符物理地址物理地址 14700H邏輯地址邏輯地址 146
23、0H:100H邏輯地址邏輯地址段地址段地址說明邏輯段在主存中的起始位置說明邏輯段在主存中的起始位置8088規(guī)定段地址必須是模規(guī)定段地址必須是模16地址:地址:xxxx0H省略低省略低4位位0000B,段地址就可以用,段地址就可以用16位數(shù)位數(shù)據(jù)表示,就能用據(jù)表示,就能用16位位段寄存器段寄存器表達(dá)段地址表達(dá)段地址偏移地址偏移地址說明主存單元距離段起始位置的說明主存單元距離段起始位置的偏移量偏移量每段不超過每段不超過64KB,偏移地址也可用,偏移地址也可用16位位數(shù)數(shù)據(jù)表示據(jù)表示物理地址和邏輯地址的轉(zhuǎn)換物理地址和邏輯地址的轉(zhuǎn)換將邏輯地址中的段地址左移將邏輯地址中的段地址左移4位,加上位,加上偏移
24、地址就得到偏移地址就得到20位物理地址位物理地址一個(gè)物理地址可以有多個(gè)邏輯地址一個(gè)物理地址可以有多個(gè)邏輯地址邏輯地址邏輯地址 1460:1001460:100、1380:F001380:F00物理地址物理地址 14700H 14700H14700H 14700H146014600 0H H 100H100H14700H14700H138013800 0H H F00HF00H14700H14700H段地址左移段地址左移4 4位位加上偏移地址加上偏移地址得到物理地址得到物理地址3. 段寄存器段寄存器8088有有4個(gè)個(gè)16位段寄存器位段寄存器CS指明指明代碼段代碼段的起始地址的起始地址SS指明指明
25、堆棧段堆棧段的起始地址的起始地址DS指明指明數(shù)據(jù)段數(shù)據(jù)段的起始地址的起始地址ES指明指明附加段附加段的起始地址的起始地址每個(gè)段寄存器用來確定一個(gè)邏輯段的起每個(gè)段寄存器用來確定一個(gè)邏輯段的起始地址,每種邏輯段均有各自的用途始地址,每種邏輯段均有各自的用途代碼段寄存器代碼段寄存器CS(Code Segment)代碼段用來存放程序的指令序列代碼段用來存放程序的指令序列代碼段寄存器代碼段寄存器CS存放代碼段的段地址存放代碼段的段地址指令指針寄存器指令指針寄存器IP指示下條指令的偏移地址指示下條指令的偏移地址處理器利用處理器利用CS:IP取得下一條要執(zhí)行的指令取得下一條要執(zhí)行的指令堆棧段寄存器堆棧段寄存
26、器SS(Stack Segment)堆棧段確定堆棧所在的主存區(qū)域堆棧段確定堆棧所在的主存區(qū)域堆棧段寄存器堆棧段寄存器SS存放堆棧段的段地址存放堆棧段的段地址堆棧指針寄存器堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂分甘径褩m數(shù)钠频刂诽幚砥骼锰幚砥骼肧S:SP操作堆棧頂?shù)臄?shù)據(jù)操作堆棧頂?shù)臄?shù)據(jù)數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DS(Data Segment)數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù)數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù)數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址存放數(shù)據(jù)段的段地址各種主存尋址方式(有效地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器)得到存儲(chǔ)器中操作數(shù)的偏移地址中操作數(shù)的偏移地址處理器利用處理
27、器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)存取數(shù)據(jù)段中的數(shù)據(jù)附加段寄存器附加段寄存器ES(Extra Segment)附加段是附加的數(shù)據(jù)段,也保存數(shù)據(jù):附加段是附加的數(shù)據(jù)段,也保存數(shù)據(jù):附加段寄存器附加段寄存器ES存放附加段的段地址存放附加段的段地址各種主存尋址方式(有效地址各種主存尋址方式(有效地址EA)得到存儲(chǔ)器)得到存儲(chǔ)器中操作數(shù)的偏移地址中操作數(shù)的偏移地址處理器利用處理器利用ES:EA存取附加段中的數(shù)據(jù)存取附加段中的數(shù)據(jù)串操作指令將附加段作為其目的操作數(shù)的串操作指令將附加段作為其目的操作數(shù)的存放區(qū)域存放區(qū)域如何分配各個(gè)邏輯段如何分配各個(gè)邏輯段程序的程序的指令指令序列必須安排在代碼段序列必須安排
28、在代碼段程序使用的程序使用的堆棧堆棧一定在堆棧段一定在堆棧段程序中的程序中的數(shù)據(jù)數(shù)據(jù)默認(rèn)默認(rèn)是安排在數(shù)據(jù)段,是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段的目的區(qū)必須是附加段數(shù)據(jù)的存放比較靈活,實(shí)際上可以存數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一種邏輯段中放在任何一種邏輯段中段超越前綴指令段超越前綴指令沒有指明時(shí),一般的數(shù)據(jù)訪問在沒有指明時(shí),一般的數(shù)據(jù)訪問在DS段段;使用;使用BP訪問主存,則在訪問主存,則在SS段段默認(rèn)的情況允許改變,需要使用段超默認(rèn)的情況允許改變,需要使用段超越前綴指令;越前綴指令;8088指令系統(tǒng)中有指令系統(tǒng)中有4個(gè)
29、:個(gè):CS:;代碼段超越,使用代碼段的數(shù)據(jù);代碼段超越,使用代碼段的數(shù)據(jù)SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù);堆棧段超越,使用堆棧段的數(shù)據(jù)DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù);數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù)ES: ;附加段超越,使用附加段的數(shù)據(jù);附加段超越,使用附加段的數(shù)據(jù)段超越的示例段超越的示例沒有段超越的指令實(shí)例:沒有段超越的指令實(shí)例:MOV AX,2000H ;AXDS:2000H;從默認(rèn)的;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)數(shù)據(jù)段取出數(shù)據(jù)采用段超越前綴的指令實(shí)例:采用段超越前綴的指令實(shí)例:MOV AX,ES:2000H;AXES:2000H;從指定的;從指定的ES附加段取出數(shù)據(jù)附加段取出數(shù)據(jù)
30、段寄存器的使用規(guī)定段寄存器的使用規(guī)定訪問存儲(chǔ)器的方式訪問存儲(chǔ)器的方式默認(rèn)默認(rèn)可超越可超越偏移地址偏移地址取指令取指令CSCS無無IPIP堆棧操作堆棧操作SSSS無無SPSP一般數(shù)據(jù)訪問一般數(shù)據(jù)訪問DSDSCS ES SSCS ES SS有效地址有效地址EAEABPBP基址的尋址方式基址的尋址方式SSSSCS ES DSCS ES DS有效地址有效地址EAEA串操作的源操作數(shù)串操作的源操作數(shù)DSDSCS ES SSCS ES SSSISI串操作的目的操作數(shù)串操作的目的操作數(shù)ESES無無DIDI寄存器的總結(jié)寄存器的總結(jié)8088有有8個(gè)個(gè)8位通用寄存器、位通用寄存器、8個(gè)個(gè)16位通用位通用寄存器寄存
31、器8088有有6個(gè)狀態(tài)標(biāo)志和個(gè)狀態(tài)標(biāo)志和3個(gè)控制標(biāo)志個(gè)控制標(biāo)志8088將將1MB存儲(chǔ)空間分段管理,有存儲(chǔ)空間分段管理,有4個(gè)段個(gè)段寄存器,對應(yīng)寄存器,對應(yīng)4種邏輯段種邏輯段8088有有4個(gè)段超越前綴指令,用于明確指定個(gè)段超越前綴指令,用于明確指定數(shù)據(jù)所在的邏輯段數(shù)據(jù)所在的邏輯段 熟悉上述內(nèi)容后,就可以進(jìn)入下節(jié)熟悉上述內(nèi)容后,就可以進(jìn)入下節(jié)8088的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)1 2 3 4 內(nèi)部暫存器內(nèi)部暫存器 IP ES SS DS CS輸入輸入/輸出輸出控制電路控制電路總線總線執(zhí)行部分執(zhí)行部分控制電路控制電路ALU標(biāo)志寄存器標(biāo)志寄存器 AH AL BH BLCH CL DH DL SP BP SI
32、DI通用通用寄存器寄存器地址地址加法加法器器指令隊(duì)列指令隊(duì)列執(zhí)行部件執(zhí)行部件 (EU)總線接口部件總線接口部件 (BIU)16位位20位位8位位8位位8088的指令執(zhí)行過程的指令執(zhí)行過程圖圖2-5 80882-5 8088的存儲(chǔ)格式的存儲(chǔ)格式D7D0字節(jié)字節(jié)D15D0字字D31D0雙字雙字D7 D000006H78H00005H56H00004H12H00003H34H00002H00001H00000H低地址低地址LSBMSB2.2 8088/8086的數(shù)據(jù)尋址方式的數(shù)據(jù)尋址方式從從8088/8086的指令格式入手,論述:的指令格式入手,論述:立即數(shù)尋址方式立即數(shù)尋址方式寄存器尋址方式寄存器
33、尋址方式存儲(chǔ)器尋址方式存儲(chǔ)器尋址方式進(jìn)而熟悉進(jìn)而熟悉8088/8086匯編語言指令格式,尤匯編語言指令格式,尤其是其中操作數(shù)的表達(dá)方法其是其中操作數(shù)的表達(dá)方法為展開為展開8088/8086指令系統(tǒng)做好準(zhǔn)備指令系統(tǒng)做好準(zhǔn)備指令的助記符格式指令的助記符格式操作數(shù)操作數(shù)2 2,常被稱為源操作數(shù),常被稱為源操作數(shù)srcsrc,它表示參與指,它表示參與指令操作的一個(gè)對象令操作的一個(gè)對象操作數(shù)操作數(shù)1 1,成被稱為目的操作數(shù),成被稱為目的操作數(shù)destdest,它不僅可以,它不僅可以作為指令操作的一個(gè)對象,還可以用來存放指令作為指令操作的一個(gè)對象,還可以用來存放指令操作的結(jié)果操作的結(jié)果分號后的內(nèi)容是對指令
34、的解釋分號后的內(nèi)容是對指令的解釋 操作碼操作碼 操作數(shù)操作數(shù)1,操作數(shù)操作數(shù)2 ;注釋注釋匯編語句格式匯編語句格式操作數(shù)的尋址方式操作數(shù)的尋址方式指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源尋找操作數(shù)的過程就是操作數(shù)的尋址尋找操作數(shù)的過程就是操作數(shù)的尋址把尋找操作數(shù)的方式叫做(操作數(shù))尋址方式把尋找操作數(shù)的方式叫做(操作數(shù))尋址方式理解操作數(shù)的尋址方式是理解指令功能的前提理解操作數(shù)的尋址方式是理解指令功能的前提操作數(shù)采取哪一種尋址方式操作數(shù)采取哪一種尋址方式一方面,會(huì)影響處理器執(zhí)行指令的速度和效率一方面,會(huì)影響處理器執(zhí)行指令的速度和效率另一方面,另一方面,對程序設(shè)計(jì)也很重要對程
35、序設(shè)計(jì)也很重要MOV指令指令2.2.1 立即數(shù)尋址方式立即數(shù)尋址方式指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)作碼之后的主存單元中)這種操作數(shù)被稱為這種操作數(shù)被稱為立即數(shù)立即數(shù)imm可以是可以是8位數(shù)值位數(shù)值i8(00HFFH)也可以是也可以是16位數(shù)值位數(shù)值i16(0000HFFFFH)立即數(shù)尋址方式常用來給寄存器和存儲(chǔ)單元賦值立即數(shù)尋址方式常用來給寄存器和存儲(chǔ)單元賦值,多以常量形式出現(xiàn),多以常量形式出現(xiàn)MOV AX, 0102H;AX0102H
36、2.2.2 寄存器尋址方式寄存器尋址方式操作數(shù)存放在操作數(shù)存放在CPU的內(nèi)部寄存器的內(nèi)部寄存器reg中:中:8位寄存器位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4個(gè)段寄存器個(gè)段寄存器seg:CS、DS、SS、ES寄存器名表示其內(nèi)容(操作數(shù))寄存器名表示其內(nèi)容(操作數(shù))MOV AX, BX;AXBX2.2.3 存儲(chǔ)器尋址方式存儲(chǔ)器尋址方式操作數(shù)在主存儲(chǔ)器中,用主存地址表示操作數(shù)在主存儲(chǔ)器中,用主存地址表示程序設(shè)計(jì)時(shí),程序設(shè)計(jì)時(shí),8088采用邏輯地址表示主存地址采用邏輯地址表示主存地址段地址在默認(rèn)的或用段超
37、越前綴指定的段寄存器中段地址在默認(rèn)的或用段超越前綴指定的段寄存器中指令中只需給出操作數(shù)的偏移地址(有效地址指令中只需給出操作數(shù)的偏移地址(有效地址EA)8086設(shè)計(jì)了多種設(shè)計(jì)了多種存儲(chǔ)器尋址方式存儲(chǔ)器尋址方式1、直接尋址方式、直接尋址方式2、寄存器間接尋址方式、寄存器間接尋址方式3、寄存器相對尋址方式、寄存器相對尋址方式4、基址變址尋址方式、基址變址尋址方式5、相對基址變址尋址方式、相對基址變址尋址方式1. 直接尋址方式直接尋址方式直接尋址方式的有效地址在指令中直接給出直接尋址方式的有效地址在指令中直接給出默認(rèn)的默認(rèn)的段地址在段地址在DS段寄存器,可使用段寄存器,可使用段超越前段超越前綴綴改變
38、改變用中括號包含有效地址,表達(dá)存儲(chǔ)單元的內(nèi)容用中括號包含有效地址,表達(dá)存儲(chǔ)單元的內(nèi)容MOV AX, 2000H;AXDS:2000HMOV AX, ES: 2000H;AXES:2000H2. 寄存器間接尋址方式寄存器間接尋址方式有效地址存放在基址寄存器有效地址存放在基址寄存器BX或變址寄存或變址寄存器器SI、DI中中默認(rèn)的默認(rèn)的段地址在段地址在DS段寄存器,可使用段超段寄存器,可使用段超越前綴改變越前綴改變MOV AX, BX;AXDS:BX3. 寄存器相對尋址方式寄存器相對尋址方式有效地址有效地址是寄存器內(nèi)容與有符號是寄存器內(nèi)容與有符號8位或位或16位位移位位移量之和,寄存器可以是量之和,
39、寄存器可以是BX、BP或或SI、DI有效地址有效地址BX/BP/SI/DIBX/BP/SI/DI8/168/16位位移量位位移量段地址對應(yīng)段地址對應(yīng)BX/SI/DI寄存器寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP寄存器寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, SI+06H;AXDS:SI+06HMOV AX, 06HSI;AXDS:SI+06H4. 基址變址尋址方式基址變址尋址方式有效地址有效地址由基址寄存器(由基址寄存器(BX或或BP)的內(nèi)容加上)的內(nèi)容加上變址寄存器(變址寄存器(SI或或DI)的內(nèi)容構(gòu)成:)的內(nèi)容構(gòu)成:有效地址有效地址BX/BPSI/DI段地
40、址對應(yīng)段地址對應(yīng)BX基址寄存器基址寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP基基址寄存器址寄存器默認(rèn)是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, BX+SI;AXDS:BX+SIMOV AX, BXSI;AXDS:BX+SI5. 相對基址變址尋址方式相對基址變址尋址方式有效地址有效地址是基址寄存器(是基址寄存器(BX/BP)、變址寄存器)、變址寄存器(SI/DI)與一個(gè))與一個(gè)8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量段地址對應(yīng)段地址對應(yīng)BX基址寄存器基址寄存器默認(rèn)是默認(rèn)是DS,對應(yīng),對應(yīng)BP基基址寄存器址寄存器默認(rèn)
41、是默認(rèn)是SS;可用段超越前綴改變;可用段超越前綴改變MOV AX, BX+DI+6;AXDS:BX+DI+6MOV AX, 6BX+DIMOV AX, 6BXDI存儲(chǔ)器尋址方式中的變量存儲(chǔ)器尋址方式中的變量變量指示內(nèi)存中的數(shù)據(jù),變量名具有地址屬性。變量指示內(nèi)存中的數(shù)據(jù),變量名具有地址屬性。存儲(chǔ)器尋找方式中經(jīng)常采用變量形式存儲(chǔ)器尋找方式中經(jīng)常采用變量形式變量的定義變量的定義WVAR DW 1234H;定義;定義16位變量位變量WVAR,具有初值,具有初值1234H;假設(shè)其偏移地址為;假設(shè)其偏移地址為10H單獨(dú)引用變量名是直接尋址方式單獨(dú)引用變量名是直接尋址方式MOV AX,WVAR ;指令功能:
42、;指令功能:AX1234H;等同于;等同于 MOV AX,0010H相對尋址方式中,變量名表示其偏移地址,相當(dāng)相對尋址方式中,變量名表示其偏移地址,相當(dāng)于位移量于位移量MOV AX, DI+WVAR ; MOV AX,WVARDI;等同于;等同于 MOV AX,DI+0010H相對尋址方式中的位移量相對尋址方式中的位移量在寄存器相對和相對基址變址尋址方式中,其位在寄存器相對和相對基址變址尋址方式中,其位移量不僅可用常量表示,也可用符號表示移量不僅可用常量表示,也可用符號表示這個(gè)符號可以是變量名,例如這個(gè)符號可以是變量名,例如WVAR變量,而且變量,而且支持多種表達(dá)形式支持多種表達(dá)形式MOV A
43、X, DI+WVAR ;等同于;等同于 MOV AX, WVARDIMOV AX,BX+SI+WVAR;等同于;等同于 MOV AX, BXSI+WVAR;等同于;等同于 MOV AX, WVARBX+SI;等同于;等同于 MOV AX, WVARBXSI操作數(shù)的表達(dá)符號操作數(shù)的表達(dá)符號 尋址方式尋址方式操作數(shù)符號及含義操作數(shù)符號及含義立即數(shù)尋址立即數(shù)尋址 imm代表代表i8或或i16,i8:一個(gè):一個(gè)8位立即數(shù),位立即數(shù), i16:一個(gè):一個(gè)16位立即數(shù)位立即數(shù)寄存器尋址寄存器尋址 reg代表代表r8或或r16,r8:8位通用寄存器,位通用寄存器, r16:16位通用寄存器位通用寄存器seg
44、段寄存器段寄存器存儲(chǔ)器尋址存儲(chǔ)器尋址 mem代表代表m8或或m16 ,m8:8位存儲(chǔ)器位存儲(chǔ)器操作數(shù),操作數(shù), m16:16位存儲(chǔ)器操作數(shù)位存儲(chǔ)器操作數(shù) 掌握操作數(shù)的尋址方式后,進(jìn)入指令學(xué)習(xí)掌握操作數(shù)的尋址方式后,進(jìn)入指令學(xué)習(xí)匯編語言的兩種語句格式匯編語言的兩種語句格式執(zhí)行性語句執(zhí)行性語句執(zhí)行性語句用于表達(dá)處理執(zhí)行性語句用于表達(dá)處理器指令器指令(也稱為硬指令也稱為硬指令),匯編后對應(yīng)一條指,匯編后對應(yīng)一條指令代碼。由處理器指令組成的代碼序列是令代碼。由處理器指令組成的代碼序列是程序設(shè)計(jì)的主體程序設(shè)計(jì)的主體標(biāo)號標(biāo)號: 硬指令助記符硬指令助記符 操作數(shù)操作數(shù),操作數(shù)操作數(shù) ;注釋注釋說明性語句說明
45、性語句說明性語句用于表達(dá)偽指說明性語句用于表達(dá)偽指令,指示源程序如何匯編、變量怎樣定義令,指示源程序如何匯編、變量怎樣定義、過程怎么設(shè)置等、過程怎么設(shè)置等名字名字 偽指令助記符偽指令助記符 參數(shù)參數(shù),參數(shù)參數(shù), ;注釋注釋MOV指令的功能指令的功能立即數(shù)尋址方式立即數(shù)尋址方式寄存器尋址方式寄存器尋址方式直接尋址方式直接尋址方式間接尋址方式間接尋址方式相對尋址方式相對尋址方式基址變址尋址方式基址變址尋址方式相對基址變址尋址方式相對基址變址尋址方式2.3 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作, ,傳送指令也是最常使用的一類
46、指令傳送指令也是最常使用的一類指令傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志位重點(diǎn)掌握重點(diǎn)掌握MOV XCHG XLAT PUSH POP LEA2.3.1 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令提供方便靈活的通用傳送操作提供方便靈活的通用傳送操作有有3條指令條指令MOVXCHGXLAT1. 傳送指令傳送指令MOV(move)把一個(gè)字節(jié)或字的操作數(shù)從源地址傳把一個(gè)字節(jié)或字的操作數(shù)從源地址傳送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即數(shù)送寄存器或
47、主存;立即數(shù)送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存演示演示MOV指令立即數(shù)傳送指令立即數(shù)傳送mov cl,4;cl4cl4,字節(jié)傳送,字節(jié)傳送mov dx,0ffh;dx00ffhdx00ffh,字傳送,字傳送mov si,200h;si0200hsi0200h,字傳送,字傳送mov
48、 bvar,0ah;字節(jié)傳送字節(jié)傳送;假設(shè);假設(shè)bvarbvar是一個(gè)字節(jié)變量,定義如下:是一個(gè)字節(jié)變量,定義如下:bvar bvar dbdb 0 0mov wvar,0bh;字傳送字傳送;假設(shè);假設(shè)wvarwvar是一個(gè)字變量,定義如下:是一個(gè)字變量,定義如下:wvar wvar dwdw 0 0明確指令是字節(jié)操作還是字操作明確指令是字節(jié)操作還是字操作MOV指令寄存器傳送指令寄存器傳送mov ah,al;ahal,字節(jié)傳送,字節(jié)傳送mov bvar,ch;bvarch ,字節(jié)傳送,字節(jié)傳送mov ax,bx;axbx,字傳送,字傳送mov ds,ax;dsax,字傳送,字傳送mov bx,
49、al;bxal,字節(jié)傳送,字節(jié)傳送 寄存器具有明確的字節(jié)和字類型寄存器具有明確的字節(jié)和字類型MOV指令存儲(chǔ)器傳送指令存儲(chǔ)器傳送mov al,bx;alds:bxmov dx,bp;dxss:bp+0mov dx,bp+4;dxss:bp+4mov es,si;esds:si 不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令不存在存儲(chǔ)器向存儲(chǔ)器的傳送指令MOV指令段寄存器傳送指令段寄存器傳送mov si,dsmov ax,ds;axdsmov es,ax;esaxds 對段寄存器的操作不靈活對段寄存器的操作不靈活MOV指令傳送功能圖解指令傳送功能圖解MOV指令也并非任意傳送指令也并非任意傳送!立即數(shù)立即數(shù)段寄存器
50、段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存儲(chǔ)儲(chǔ)器器非法指令的主要現(xiàn)象:非法指令的主要現(xiàn)象:兩個(gè)操作數(shù)的類型不一致兩個(gè)操作數(shù)的類型不一致無法確定是字節(jié)量還是字量操作無法確定是字節(jié)量還是字量操作兩個(gè)操作數(shù)都是存儲(chǔ)器兩個(gè)操作數(shù)都是存儲(chǔ)器段寄存器的操作有一些限制段寄存器的操作有一些限制非法指令兩個(gè)操作數(shù)類型不一致非法指令兩個(gè)操作數(shù)類型不一致在絕大多數(shù)雙操作數(shù)指令中,目的操作數(shù)和源操在絕大多數(shù)雙操作數(shù)指令中,目的操作數(shù)和源操作數(shù)必須具有一致的數(shù)據(jù)類型,或者同為字量,作數(shù)必須具有一致的
51、數(shù)據(jù)類型,或者同為字量,或者同為字節(jié)量,否則為非法指令或者同為字節(jié)量,否則為非法指令MOV AL, 050AH;非法指令,;非法指令,修正:修正:;mov ax,050ahMOV SI, DL;非法指令,;非法指令,修正:修正:;mov dh,0;mov si,dx非法指令無法確定是字節(jié)量還是字量操作非法指令無法確定是字節(jié)量還是字量操作當(dāng)無法通過任一個(gè)操作數(shù)確定是操作類型時(shí),需當(dāng)無法通過任一個(gè)操作數(shù)確定是操作類型時(shí),需要利用匯編語言的操作符顯式指明要利用匯編語言的操作符顯式指明MOV BX+SI, 255;非法指令,;非法指令,修正:修正:;mov byte ptr bx+sibyte ptr
52、 bx+si,255;byte ptr byte ptr 說明是字節(jié)操作說明是字節(jié)操作;mov word ptr bx+siword ptr bx+si,255;word ptr word ptr 說明是字操作說明是字操作非法指令兩個(gè)操作數(shù)都是存儲(chǔ)器非法指令兩個(gè)操作數(shù)都是存儲(chǔ)器8088指令系統(tǒng)除串操作指令外,不允許兩個(gè)操作指令系統(tǒng)除串操作指令外,不允許兩個(gè)操作數(shù)都是存儲(chǔ)單元(存儲(chǔ)器操作數(shù))數(shù)都是存儲(chǔ)單元(存儲(chǔ)器操作數(shù))MOV buf2, buf1;非法指令,;非法指令,修正:修正:;假設(shè);假設(shè)buf2和和buf1是兩個(gè)字變量是兩個(gè)字變量;mov ax,buf1;mov buf2,ax;假設(shè);假
53、設(shè)buf2和和buf1是兩個(gè)字節(jié)變量是兩個(gè)字節(jié)變量;mov al,buf1;mov buf2,al非法指令段寄存器的操作有一些限制非法指令段寄存器的操作有一些限制8088指令系統(tǒng)中,能直接對段寄存器操作的指令指令系統(tǒng)中,能直接對段寄存器操作的指令只有只有MOV等個(gè)別傳送指令,并且不靈活等個(gè)別傳送指令,并且不靈活MOV DS, ES;非法指令,;非法指令,修正:修正:;mov ax,es;mov ds,axMOV DS, 100H;非法指令,;非法指令,修正:修正:;mov ax,100h;mov ds,ax MOV CS, SI;非法指令;非法指令;指令存在,但不能執(zhí)行;指令存在,但不能執(zhí)行2
54、. 交換指令交換指令XCHG(exchange)把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換把兩個(gè)地方的數(shù)據(jù)進(jìn)行互換寄存器與寄存器之間對換數(shù)據(jù)寄存器與寄存器之間對換數(shù)據(jù)寄存器與存儲(chǔ)器之間對換數(shù)據(jù)寄存器與存儲(chǔ)器之間對換數(shù)據(jù)不能在存儲(chǔ)器與存儲(chǔ)器之間對換數(shù)據(jù)不能在存儲(chǔ)器與存儲(chǔ)器之間對換數(shù)據(jù)XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem演示演示例例2.2 數(shù)據(jù)交換數(shù)據(jù)交換mov ax,1199hmov ax,1199h;ax=1199hax=1199hxchg ah,alxchg ah,al;ax=9911hax=9911h;等同于;等同于 xchg al,
55、ahxchg al,ahmov wvar,5566hmov wvar,5566h;wvarwvar是一個(gè)字量變量是一個(gè)字量變量xchg ax,wvarxchg ax,wvar ;ax=5566hax=5566h,wvar=9911hwvar=9911h;等同于;等同于 xchg wvar,axxchg wvar,ax xchg al,byte ptr wvar+1xchg al,byte ptr wvar+1;ax=5599hax=5599h,wvar=6611hwvar=6611h;“byte ptr wvar+1byte ptr wvar+1”強(qiáng)制為字節(jié)量,只取高字強(qiáng)制為字節(jié)量,只取高字節(jié)
56、與節(jié)與ALAL類型交換,否則數(shù)據(jù)類型不匹配類型交換,否則數(shù)據(jù)類型不匹配3. 換碼指令換碼指令XLAT(translate)將將BX指定的緩沖區(qū)中、指定的緩沖區(qū)中、AL指定的位移處的一個(gè)指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給字節(jié)數(shù)據(jù)取出賦給AL換碼指令執(zhí)行前:換碼指令執(zhí)行前:在主存建立一個(gè)在主存建立一個(gè)字節(jié)量表格字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址表格首地址存放于存放于BXBX,ALAL存放相對表格首地址的存放相對表格首地址的位移量位移量換碼指令執(zhí)行后:換碼指令執(zhí)行后:將將ALAL寄存器的內(nèi)容轉(zhuǎn)換為寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼目標(biāo)代碼XLATXLAT;alds:bx+a
57、lalds:bx+al演示演示2.3.2 堆棧操作指令堆棧操作指令堆棧是一個(gè)堆棧是一個(gè)“后進(jìn)先出后進(jìn)先出FILOFILO”(或說(或說“先進(jìn)先進(jìn)后出后出FILOFILO”)的主存區(qū)域,位于堆棧段中;)的主存區(qū)域,位于堆棧段中;SSSS段寄存器段寄存器記錄其段地址記錄其段地址堆棧只有一個(gè)出口,即當(dāng)前棧頂;用堆棧只有一個(gè)出口,即當(dāng)前棧頂;用堆棧堆棧指針寄存器指針寄存器SPSP指定指定堆棧只有兩種基本操作:進(jìn)棧和出棧,對堆棧只有兩種基本操作:進(jìn)棧和出棧,對應(yīng)兩條指令應(yīng)兩條指令PUSH和和POP圖示圖示進(jìn)棧指令進(jìn)棧指令PUSH進(jìn)棧指令先使堆棧指針進(jìn)棧指令先使堆棧指針SP減減2,然后把一,然后把一個(gè)字操
58、作數(shù)存入堆棧頂部個(gè)字操作數(shù)存入堆棧頂部PUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/seg演示演示push axpush 2000h出棧指令出棧指令POP出棧指令把棧頂?shù)囊粋€(gè)字傳送至指定的目出棧指令把棧頂?shù)囊粋€(gè)字傳送至指定的目的操作數(shù),然后堆棧指針的操作數(shù),然后堆棧指針SP加加2POP r16/m16/segPOP r16/m16/seg; r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2pop axpop wvar演示演示堆棧操作的特點(diǎn)堆棧操作的特點(diǎn)堆
59、棧操作的單位是字,進(jìn)棧和出棧只對字量堆棧操作的單位是字,進(jìn)棧和出棧只對字量字量數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址字節(jié)字量數(shù)據(jù)從棧頂壓入和彈出時(shí),都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)堆棧操作遵循先進(jìn)后出原則,但可用存儲(chǔ)器尋址堆棧操作遵循先進(jìn)后出原則,但可用存儲(chǔ)器尋址方式隨機(jī)存取堆棧中的數(shù)據(jù)方式隨機(jī)存取堆棧中的數(shù)據(jù)堆棧段是程序中不可或缺的一個(gè)內(nèi)存區(qū),常用來堆棧段是程序中不可或缺的一個(gè)內(nèi)存區(qū),常用來n臨時(shí)存放數(shù)據(jù)臨時(shí)存放數(shù)據(jù)n傳遞參數(shù)傳遞參數(shù)n保存和恢復(fù)寄存器保存和恢復(fù)寄存器2.3.3 標(biāo)志操作指令標(biāo)志操作指令1. 標(biāo)志位操作指令標(biāo)志位操作指令CLC;復(fù)位進(jìn)位標(biāo)志:
60、;復(fù)位進(jìn)位標(biāo)志:CF0STC;置位進(jìn)位標(biāo)志:;置位進(jìn)位標(biāo)志:CF1CMC;求反進(jìn)位標(biāo)志:;求反進(jìn)位標(biāo)志:CFCFCLD;復(fù)位方向標(biāo)志:;復(fù)位方向標(biāo)志:DF0STD;置位方向標(biāo)志:;置位方向標(biāo)志:DF1CLI;復(fù)位中斷標(biāo)志:;復(fù)位中斷標(biāo)志:IF0STI;置位中斷標(biāo)志:;置位中斷標(biāo)志:IF12. 標(biāo)志寄存器低字節(jié)與標(biāo)志寄存器低字節(jié)與AH的傳送指令的傳送指令3. 標(biāo)志寄存器出入堆棧指令標(biāo)志寄存器出入堆棧指令將存儲(chǔ)器操作數(shù)的有效地址送至指定的將存儲(chǔ)器操作數(shù)的有效地址送至指定的16位通用位通用寄存器寄存器有效地址傳送指令有效地址傳送指令LEA(load effective address)LEA r16
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度校企合作大學(xué)生實(shí)習(xí)就業(yè)合作協(xié)議書2篇
- 2025年度集體合同范本:員工培訓(xùn)與發(fā)展3篇
- 二零二五年度動(dòng)遷房購房合同中的房屋交易稅費(fèi)及補(bǔ)貼申請2篇
- 2024年特色物業(yè)與業(yè)主共創(chuàng)社區(qū)文化合同范本3篇
- 2024年股權(quán)變動(dòng)擔(dān)保協(xié)議
- 2024版微信投放業(yè)務(wù)合同模板
- 2025年度消防設(shè)備銷售及售后服務(wù)合同模板3篇
- 2024年度待崗協(xié)議書范本:保障員工權(quán)益的勞動(dòng)合同模板3篇
- 2024年股票持有與股權(quán)比例分配詳細(xì)協(xié)議一
- 2024版服裝銷售員工服務(wù)協(xié)議版B版
- 通信安全員ABC證報(bào)名考試題庫及答案
- 英山縣南河鎮(zhèn)黑石寨飾面用花崗巖礦礦產(chǎn)資源開發(fā)利用與生態(tài)復(fù)綠方案
- 開放系統(tǒng)10861《理工英語(4)》期末機(jī)考真題及答案(第103套)
- 2023年印尼法律須知
- 20S805-1 雨水調(diào)蓄設(shè)施-鋼筋混凝土雨水調(diào)蓄池
- 《中華民族大團(tuán)結(jié)》(初中)-第7課-共同創(chuàng)造科學(xué)成就-教案
- OptiXOSN3500產(chǎn)品培訓(xùn)課件
- 鋼筋計(jì)量-柱鋼筋計(jì)量之框架柱基礎(chǔ)插筋
- 肌間靜脈血栓護(hù)理問題
- (高清版)DZT 0399-2022 礦山資源儲(chǔ)量管理規(guī)范
- 太空艙民宿可行性研究報(bào)告
評論
0/150
提交評論