版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、程序(program):實(shí)現(xiàn)特定應(yīng)用的數(shù)據(jù)定義和指令序列。其中,數(shù)據(jù)是計(jì)算機(jī)自動(dòng)計(jì)算的對(duì)象,而指令(instruction)是指揮計(jì)算機(jī)執(zhí)行各種基本操作的指令,一條指令對(duì)應(yīng)一種基本操作。馮·諾依曼結(jié)構(gòu):計(jì)算機(jī)必須具備的5個(gè)基本部分:算術(shù)邏輯單元、存儲(chǔ)器、控制單元、輸入設(shè)備、輸出設(shè)備。算術(shù)邏輯單元實(shí)現(xiàn)數(shù)據(jù)處理,而數(shù)據(jù)處理是計(jì)算機(jī)最根本的功能。存儲(chǔ)器用以暫存原始數(shù)據(jù)、中間結(jié)果、最終處理結(jié)果及程序??刂茊卧簩?shí)現(xiàn)指令的執(zhí)行,根據(jù)指令控制算術(shù)邏輯單元的操作及各部分之間的數(shù)據(jù)傳送。現(xiàn)代計(jì)算機(jī):普遍采用的是以存儲(chǔ)器為中心的馮·諾依曼結(jié)構(gòu)。算術(shù)邏輯單元存儲(chǔ)器控制單元輸入設(shè)備輸出設(shè)備計(jì)算機(jī)
2、5個(gè)部分之間的關(guān)系,兩種信息流:數(shù)據(jù)流:以存儲(chǔ)器為中心,其他部分之間的數(shù)據(jù)傳送都要經(jīng)過存儲(chǔ)器的暫存中轉(zhuǎn)。輸入設(shè)備輸入的原始數(shù)據(jù)和程序(計(jì)算機(jī)中各部分之間傳送的信息廣義上都是數(shù)據(jù))要暫存在存儲(chǔ)器;控制單元從存儲(chǔ)器讀取指令;算術(shù)邏輯單元從存儲(chǔ)器得到原始數(shù)據(jù),處理后的結(jié)果再存回存儲(chǔ)器;輸出設(shè)備輸出從存儲(chǔ)器傳送來的最終處理結(jié)果。數(shù)據(jù)流表征了配合數(shù)據(jù)處理和程序執(zhí)行所必須的操作數(shù)據(jù)傳送。控制流:以控制單元為中心??刂茊卧獜拇鎯?chǔ)器讀取指令(數(shù)據(jù)流),根據(jù)指令譯碼產(chǎn)生發(fā)向其他部分的控制信號(hào)(控制流),指揮算術(shù)邏輯單元的數(shù)據(jù)處理,協(xié)調(diào)各部分之間的數(shù)據(jù)傳送(數(shù)據(jù)流)。控制流表征了計(jì)算機(jī)自動(dòng)計(jì)算的實(shí)現(xiàn)程序執(zhí)行。微機(jī)
3、在結(jié)構(gòu)上兩個(gè)顯著特點(diǎn):一是采用CPU,二是各組成部件之間采用總線連接。存儲(chǔ)器CPUI/O接口I/O接口時(shí)鐘輸入設(shè)備輸出設(shè)備微機(jī)結(jié)構(gòu)時(shí)序脈沖的頻率就是CPU的工作頻率。時(shí)鐘周期:時(shí)序脈沖的周期。時(shí)鐘周期是微機(jī)的最小定時(shí)單位??偩€周期:CPU訪問一次總線的時(shí)間即為總線周期。由四個(gè)時(shí)鐘周期構(gòu)成。指令周期:執(zhí)行一條指令的時(shí)間即為指令周期。指令周期由若干時(shí)鐘周期夠成。指令周期包括取指周期和執(zhí)行周期,執(zhí)行周期包括譯碼、取操作數(shù)、數(shù)據(jù)處理和存操作數(shù)等若干基本操作。微機(jī)的組成結(jié)構(gòu):1、 總線:是連接各部件的一組公共信號(hào)線;2、 CPU:算術(shù)邏輯單元與控制邏輯單元合稱為CPU,即中央處理器;3、 存儲(chǔ)器:存儲(chǔ)數(shù)
4、據(jù)和程序;4、 I/O接口:輸入/輸出設(shè)備與總線之間的緩沖電路。在外設(shè)側(cè)以輸入/輸出設(shè)備通信標(biāo)準(zhǔn)信號(hào)實(shí)現(xiàn)數(shù)據(jù)交換,在總線側(cè)則與存儲(chǔ)器類似,被CPU通過總線標(biāo)準(zhǔn)信號(hào)訪問。在微機(jī)結(jié)構(gòu)中,CPU與輸入/輸出設(shè)備不相關(guān),雙方可以獨(dú)立發(fā)展。尋址:CPU從存儲(chǔ)器取指令時(shí),必須發(fā)出指令所在存儲(chǔ)器單元的地址,程序計(jì)數(shù)器就是暫存在這個(gè)地址的寄存器。CPU根據(jù)指令訪問存儲(chǔ)器單元或I/O接口中的數(shù)據(jù)時(shí),也必須發(fā)出相應(yīng)的地址,地址寄存器就是暫存在這個(gè)地方。地址總線從CPU向存儲(chǔ)器和I/O接口的譯碼電路傳送地址。譯碼電路對(duì)地址譯碼之后,即可定位到相應(yīng)的存儲(chǔ)器單元或I/O端口??偩€的功能:地址總線:用于CPU尋址存儲(chǔ)器和
5、I/O端口,針對(duì)采用獨(dú)立尋址方式和存儲(chǔ)器單元數(shù)目,定義為8位寬度。(功能是從CPU向存儲(chǔ)器和I/O接口的譯碼電路傳送地址。)數(shù)據(jù)總線:是各部件之間數(shù)據(jù)傳送的公共通道??刂瓶偩€:用于CPU控制單元控制數(shù)據(jù)總線上的傳送過程。三類信號(hào)線不是獨(dú)立作用的,協(xié)調(diào)完成數(shù)據(jù)的傳送:CPU首先通過地址總線和M/IO信號(hào)線尋址存儲(chǔ)器單元或I/O端口,然后通過RD或WR控制線確定數(shù)據(jù)傳送的方向,最后被選通的寄存器與CPU通過數(shù)據(jù)總線實(shí)現(xiàn)數(shù)據(jù)傳送。數(shù)據(jù)傳送是要實(shí)現(xiàn)的目的,數(shù)據(jù)總線是傳送通道,地址總線定位數(shù)據(jù)的所在,控制總線控制數(shù)據(jù)的傳送方向,三總線協(xié)調(diào)作用,共同實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)哪康?。?shù)據(jù)傳輸?shù)囊欢艘欢ㄊ荂PU內(nèi)部的寄存
6、器,由控制單元在CPU內(nèi)部直接控制,且同一時(shí)刻只能有一個(gè)CPU工作。模型機(jī)的指令集:共8條。2條數(shù)據(jù)處理指令(加法和減法操作),2條存儲(chǔ)器訪問指令,2條輸入/輸出訪問指令,1條流程控制指令(無條件轉(zhuǎn)移)和1條空操作指令。偽指令:用于向匯編程序指示存儲(chǔ)器分配的匯編命令(directive)。操作系統(tǒng):一種控制硬件和調(diào)度軟件全面管理計(jì)算機(jī)資源的程序。執(zhí)行指令:包括取指令和譯碼發(fā)出控制信號(hào)兩個(gè)階段。后一階段是通過指令譯碼器和控制邏輯電路對(duì)設(shè)計(jì)的指令集實(shí)現(xiàn)譯碼,并轉(zhuǎn)換成相應(yīng)的控制信號(hào)。程序計(jì)數(shù)器(PC):是控制單元中的一個(gè)重要寄存器。其內(nèi)容是控制單元要執(zhí)行的下一字節(jié)指令的地址,控制單元根據(jù)這個(gè)地址從存
7、儲(chǔ)器去的一字節(jié)指令后,就對(duì)程序計(jì)數(shù)器加1,始終指示下一字節(jié)指令的地址,這樣控制單元就可以不斷取得指令(取指令后自加1)。I/O接口的數(shù)據(jù)傳送方式:1、查詢方式(Query):不需增加額外的硬件,CPU輸入或輸出數(shù)據(jù)時(shí),必須先查詢相應(yīng)I/O接口是否就緒,若就緒則進(jìn)行數(shù)據(jù)傳送,否則繼續(xù)查詢直到滿足條件。(耗時(shí))2、中斷方式(Interrupt):當(dāng)相應(yīng)I/O接口滿足數(shù)據(jù)傳送條件時(shí)主動(dòng)向CPU發(fā)出申請(qǐng),由CPU中斷當(dāng)前執(zhí)行的程序,調(diào)用一個(gè)相應(yīng)的子程序完成數(shù)據(jù)傳送,子程序返回后繼續(xù)執(zhí)行被中斷的程序。(CPU運(yùn)行效率高,但I(xiàn)/O接口想CPU申請(qǐng)的信號(hào)需要占用CPU引腳,而響應(yīng)此過程也需要一定的CPU開銷
8、,還有可能增加硬件)3、DMA方式(Direct Memory Access):DMA方式是通過增加一個(gè)硬件(DMA控制器)來專門完成I/O接口與存儲(chǔ)器的直接數(shù)據(jù)交換。DMA控制器發(fā)出地址信號(hào)、控制信號(hào),而采用DMA方式時(shí),CPU要出讓總線控制權(quán),這時(shí),CPU可以繼續(xù)執(zhí)行當(dāng)前程序,但不能訪問總線,還可能影響到對(duì)中斷的響應(yīng)。微處理器:算術(shù)邏輯單元和控制邏輯單元,以及暫存數(shù)據(jù)和指令的寄存器組(Register Set)、高速緩沖存儲(chǔ)器(Cache)等特殊寄存器,這些部件集中在一片大規(guī)?;虺笠?guī)模集成電路芯片上。(通常,微處理器不包含程序存儲(chǔ)單元)微機(jī):以微處理器為核心,配以大規(guī)模集成電路的只讀存儲(chǔ)
9、器ROM、讀寫存儲(chǔ)器RAM、輸入/輸出接口及總線。(微機(jī)已具有獨(dú)立運(yùn)行的能力)微機(jī)系統(tǒng):硬件和軟件的集合。8086微處理器是字長16位的定點(diǎn)微處理器,內(nèi)部寄存器、算術(shù)邏輯單元和外部數(shù)據(jù)引腳均為16位,支持8位和16位的符號(hào)數(shù)/無符號(hào)數(shù)的算術(shù)運(yùn)算和數(shù)據(jù)傳送。提供20位地址引腳(存儲(chǔ)周期20位地址有效;I/O周期16位地址有效),可尋址1M存儲(chǔ)器空間和64K I/O地址空間。流水線:分段尋址:把整個(gè)存儲(chǔ)器地址分為若干段,存儲(chǔ)器單元的定位被分解為所在的段和在段內(nèi)的偏移,一次,存儲(chǔ)器單元的地址由兩部分組成:段地址和偏移地址。段地址和偏移地址通常記為segment:offset。段地址定位斷的位置,由8
10、086內(nèi)專門的段寄存器提供。偏移地址定位存儲(chǔ)器單元在段內(nèi)的位置,如果是取指操作,偏移地址由指令指針寄器提供;如果是指令執(zhí)行中訪問存儲(chǔ)器操作數(shù),偏移地址在指令中指出。物理存儲(chǔ)器:連接在系統(tǒng)總線上實(shí)際存在的存儲(chǔ)器。物理地址:為了尋址物理存儲(chǔ)器,微處理器向系統(tǒng)地址總線發(fā)出的地址。物理地址是尋址物理存儲(chǔ)器的線性地址,線性是指連續(xù)而有序的意思。8086的分段地址稱為邏輯地址。要訪問系統(tǒng)總線上的物理存儲(chǔ)器,邏輯地址必須轉(zhuǎn)換為物理地址,所以邏輯地址只存在于8086中,即邏輯地址對(duì)物理存儲(chǔ)器是透明的??偩€接口單元BIU段寄存器:段寄存器組:CS、SS、DS、ES。CS(Code Segment):保存代碼段的
11、段地址,代碼段用于存儲(chǔ)程序的指令。SS(Stack Segment):保存堆棧段的段地址,堆棧段用于形成堆棧區(qū)。DS(Data Segment):保存數(shù)據(jù)段的段地址,數(shù)據(jù)段用于暫存原始數(shù)據(jù)和處理后的中間結(jié)果及最終結(jié)果。ES(Extra Segment):保存擴(kuò)展段的段地址,擴(kuò)展段與數(shù)據(jù)段類似,一般情況下,數(shù)據(jù)段用于存儲(chǔ)局部變量,擴(kuò)展段用于存儲(chǔ)全局變量。地址加法器:將執(zhí)行單元提供的16位費(fèi)重定位地址重定位為20位的存儲(chǔ)器物理地址,用于存儲(chǔ)器接口訪問總線上實(shí)際存無的物理存儲(chǔ)器。工作分兩步:1.將段寄存器提供的16位段地址左移4位,得到20位的段首地址。2.20位段首地址再加上16位的偏移地址,即可
12、得到20位的物理地址。指令指針寄存器:存儲(chǔ)代碼段內(nèi)的偏移地址,與CS儀器構(gòu)成取指所需的程序計(jì)數(shù)器。程序計(jì)數(shù)器由總線接口單元自動(dòng)改變,始終指向順序存儲(chǔ)的下一字節(jié)指令。除控制程序流指令可以改變程序計(jì)數(shù)器外,其他指令都不能直接修改程序計(jì)數(shù)器。(8086復(fù)位后,CS全部置位而IP全部復(fù)位,程序計(jì)數(shù)器的值為FFFFH:0000H,轉(zhuǎn)換為物理地址為FFFF0H)存儲(chǔ)器接口:指令流字節(jié)隊(duì)列:執(zhí)行單元EU控制器:從指令流字節(jié)隊(duì)列順序讀取指令,根據(jù)指令譯碼控制8086中其他部分進(jìn)行相應(yīng)的操作,以實(shí)現(xiàn)指令要求的功能。控制器根據(jù)要求修改程序計(jì)數(shù)器的內(nèi)容之后,必須等待總線接口單元清空指令流字節(jié)隊(duì)列,并按修改后的程序計(jì)
13、數(shù)器內(nèi)容重新取指填充指令流字節(jié)隊(duì)列后,控制器才能繼續(xù)從指令流字節(jié)隊(duì)列取指令。算術(shù)邏輯單元:這個(gè)16位算術(shù)邏輯單元,根據(jù)控制器的控制,可完成8位或16位的二進(jìn)制算術(shù)運(yùn)算和邏輯運(yùn)算,實(shí)現(xiàn)對(duì)數(shù)據(jù)的處理。標(biāo)志寄存器:標(biāo)志寄存器設(shè)計(jì)為16位,實(shí)際使用9位,其中6位用于存放算術(shù)邏輯單元運(yùn)算后的結(jié)果特征,稱為狀態(tài)標(biāo)志;CF(Carry Flag):進(jìn)位/借位標(biāo)志。(最高位)PF(Parity Flag):奇偶標(biāo)志。(置位位的個(gè)數(shù),為偶則PF=1,表示為PE;為奇則PD=0,表示為PO)AF(Auxiliary Carry Flag):輔助進(jìn)位/借位標(biāo)志,用于BCD加法的調(diào)整。(運(yùn)算的低四位產(chǎn)生了進(jìn)位或借位,
14、AF=1,表示為AC;否則AF=0,表示為NA)ZF(Zero Flag):零標(biāo)志。(運(yùn)算結(jié)果為0,則標(biāo)志置位;否則復(fù)位)SF(Sign Flag):符號(hào)標(biāo)志,用于標(biāo)志符號(hào)的正負(fù)。(運(yùn)算結(jié)果最高位為1,則標(biāo)志置位,表示為NG;否則標(biāo)志復(fù)位,表示為PL)OF(Overflow Flag):溢出標(biāo)志,用于標(biāo)志符號(hào)數(shù)的運(yùn)算結(jié)果是否超出表達(dá)范圍(無符號(hào)數(shù)的溢出以CF標(biāo)志)。(雙高異或判別)另外3位通過人為設(shè)置,用以控制8086的3種特定操作,稱為控制標(biāo)志。TF(Trap Flag):陷阱標(biāo)志,也稱為單步標(biāo)志,用于程序的單步執(zhí)行調(diào)試。IF(Interrupt Flag):中斷標(biāo)志。(IF=1,表示為EI
15、,即允許響應(yīng)可屏蔽中斷的請(qǐng)求;IF=0,表示為DI,即禁止響應(yīng)可屏蔽中斷的請(qǐng)求)DF(Direction Flag):方向標(biāo)志。(DF=1,表示為DN,即down,串操作后地址指針自動(dòng)減量;DF=0,表示為UP,即up,串操作后地址指針自動(dòng)增量)通用寄存器組:是8086中暫存數(shù)據(jù),指針的寄存器陣列,相比使用存儲(chǔ)器,可以減少訪問總線的次數(shù),有利于提高數(shù)據(jù)處理速度。8086包含8個(gè)16位寄存器,使用上一般沒有限制,但有些特定操作要求必須使用指定的寄存器。寄存器定義為:AX(Accumulator),累加寄存器;主要用于乘除運(yùn)算和輸入輸出操作時(shí)存儲(chǔ)操作數(shù)、優(yōu)化移動(dòng)操作。BX(Base),基寄存器;主
16、要用于存儲(chǔ)器間接尋址時(shí)存儲(chǔ)數(shù)據(jù)段的基地址。CX(Counter),計(jì)數(shù)寄存器;主要用于循環(huán)、重復(fù)、移位操作時(shí)存儲(chǔ)計(jì)數(shù)值。DX(Data),數(shù)據(jù)寄存器;主要用于乘除運(yùn)算時(shí)存儲(chǔ)操作數(shù)、輸入輸出操作間接尋址時(shí)存儲(chǔ)I/O地址。SP(Stack Pointer),堆棧指針寄存器;用于存儲(chǔ)站定的偏移地址。BP(Base Pointer)基指針寄存器;主要用于存儲(chǔ)器間接尋址時(shí)存儲(chǔ)堆棧段的基地址。SI(Source Index),索引源寄存器;主要用于存儲(chǔ)器間接尋址時(shí)存儲(chǔ)索引地址、串操作時(shí)存儲(chǔ)原串偏移地址。DI(Destination Index),目的索引寄存器 ;主要用于存儲(chǔ)器間接尋址時(shí)存儲(chǔ)索引地址、串操
17、作時(shí)存儲(chǔ)目的串偏移地址。如果I/O端口中的是字?jǐn)?shù)據(jù)時(shí),最好分配偶地址存儲(chǔ)。計(jì)算機(jī)中的指令由操作碼和操作數(shù)兩部分構(gòu)成。操作碼也稱為指令碼,說明計(jì)算機(jī)要執(zhí)行哪種操作,是指令中不可缺少的部分;而操作數(shù)是參加本指令運(yùn)算的數(shù)據(jù),也就是各種操作的對(duì)象。為限制指令的長度,8086指令系統(tǒng)規(guī)定,一條指令的操作數(shù)最多只能有2個(gè),且它們不能同時(shí)位于存儲(chǔ)器中。根據(jù)指令的不同,操作數(shù)可以是1個(gè),即單操作數(shù),也可以是兩個(gè),即雙操作數(shù)(源操作數(shù)和目的操作數(shù))。有的指令還可以沒有操作數(shù)或隱含操作數(shù)?;緮?shù)據(jù)類型:字節(jié)、字、雙字。指令中的立即數(shù)是字符,則用單引號(hào)括起來。8086CPU的尋址方式(計(jì)算機(jī)中操作數(shù)地址的形成就是尋
18、址方式)1、 操作數(shù)包含在指令中,稱為立即操作數(shù)。2、 操作數(shù)包含在CPU的某個(gè)內(nèi)部寄存器中,稱為寄存器操作數(shù)。3、 約定操作數(shù)事先存放在存儲(chǔ)器中存放數(shù)據(jù)的某個(gè)單元,稱為存儲(chǔ)器操作數(shù)。立即數(shù)尋址:立即數(shù)只能作為源操作數(shù),不能作為目的操作數(shù)。寄存器尋址:是指操作數(shù)就在CPU的內(nèi)部寄存器中,那么寄存器名課在指令中指出。CS和IP不可直接由指令修改,exp:MOVAX,CS正確;MOVCS,BX錯(cuò)誤;MOVAX,IP錯(cuò)誤在一條指令中,可以對(duì)源操作數(shù)采用寄存器尋址,也可以對(duì)目的操作數(shù)進(jìn)行寄存器尋址,還可以兩者都用寄存器尋址方式。采用寄存器尋址方式的指令在執(zhí)行時(shí),操作就在CPU內(nèi)部進(jìn)行,而不需要訪問存儲(chǔ)
19、器,因而速度很快。存儲(chǔ)器尋址:用存儲(chǔ)器尋址的指令,操作數(shù)一般位于代碼段之外的數(shù)據(jù)段、堆棧段或附加段的存儲(chǔ)器中,指令中給出的是存儲(chǔ)器單元的地址或生成存儲(chǔ)器單元地址的信息。物理地址(PA)=(段寄存器)x 16 + 有效地址(EA)一條指令中,只能有一個(gè)存儲(chǔ)器操作數(shù),或者源操作數(shù),或者目的操作數(shù)。存儲(chǔ)器尋址分為直接尋址、寄存器間接尋址、基址尋址、變址尋址、基址加變址尋址。1、 直接尋址:操作數(shù)在存儲(chǔ)器中,存儲(chǔ)單元的有效地址由指令直接指出。直接尋址,是在指令的操作碼后直接給出操作數(shù)的16位偏移地址,因而直接尋址是對(duì)存儲(chǔ)器進(jìn)行訪問時(shí)可采用的最簡單的方式。2、 寄存器間接尋址:PA=16 x(DS)+
20、EA3、 寄存器相對(duì)尋址:4、 基址變址尋址:5、 相對(duì)基址變址尋址:I/O端口尋址8086采用獨(dú)立編址的I/O端口,用專門的輸入輸出指令(IN/OUT)對(duì)I/O端口進(jìn)行操作。當(dāng)端口編號(hào)小于255時(shí),可以直接尋址;大于255時(shí),只能用DX作為間接尋址。1、 直接端口尋址:Exp:INAL,60H;將60H端口中的數(shù)據(jù)輸入到AL中; INAX,80H;將80H與81H相鄰兩端口的16位數(shù)據(jù)輸入到AX中;IN/OUT指令不支持立即數(shù)尋址,所以指令中出現(xiàn)的數(shù)據(jù)是直接尋址的端口地址,不是立即數(shù)。2、 寄存器的間接端口尋址:Exp:MOVDX,333H;將端口地址送入DX OUTDX,AL;將AL中的數(shù)
21、據(jù)輸出到DX所指的端口中 MOVDX,330H;將端口地址送入DX INAL,DX;將DX所指的端口中的數(shù)據(jù)輸入到AL中只能用DX作為I/O指令的間接尋址寄存器,不能用其他寄存器作為I/O指令的間接尋址。8086 CPU的指令按功能可分為:數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算和移位、串操作、控制轉(zhuǎn)移和處理器控制指令6種。數(shù)據(jù)傳送指令:通用數(shù)據(jù)傳送指令:MOV;格式:MOVdst,src數(shù)據(jù)交換指令:XCHG; 格式:XCHGdst,src;1)源操作數(shù)與目的操作數(shù)不能同時(shí)為內(nèi)存單元;2)不能使用CS、IP作為操作數(shù);3)不影響標(biāo)志位。堆棧操作指令:PUSH、POP,在調(diào)用子程序時(shí)要保存返回地址;在中斷
22、處理過程中要保存斷點(diǎn)地址;進(jìn)入子程序和中斷處理后還要保留通用寄存器的值;子程序執(zhí)行完畢和中斷處理完畢返回時(shí),又要恢復(fù)通用寄存器的值,并分別將返回地址或斷點(diǎn)地址恢復(fù)到指令指針寄存器中。1)8086的堆棧操作都是字(16位)操作,不允許字節(jié)的堆棧操作,因此PUSHAH是錯(cuò)誤的。2)堆棧指令中的操作數(shù)只能是存儲(chǔ)器或寄存器操作數(shù),而不能是立即數(shù)。3)堆棧操作指令中,有一個(gè)操作數(shù)是隱含的,這就是堆棧指針SP只是的棧頂存儲(chǔ)單元。4)入棧時(shí)“先減后壓”(SP先減2,在壓入操作數(shù)),出棧時(shí)“先彈后加”(彈出操作數(shù)后,SP加2)。5)CS寄存器可以入棧,而出棧指令POPCS卻是非法指令。因?yàn)?086 CPU指令
23、系統(tǒng)不允許CS寄存器目的操作數(shù)。執(zhí)行POPCS將改變代碼段寄存器CS的內(nèi)容,會(huì)導(dǎo)致CPU從一個(gè)與程序無關(guān)的新段中去取下一條指令,從而使程序錯(cuò)誤地運(yùn)行。累加器專用傳送指令:XLAT、IN、OUT。XLAT:換碼指令,不影響標(biāo)志位,也稱為查表指令。查表結(jié)果送入“AL”。8086系統(tǒng)的I/O指令中有:直接尋址和寄存器間接尋址兩種尋址方式,只能用累加器AL/AX與I/O端口進(jìn)行數(shù)據(jù)傳送。地址傳送指令:LEA、LDS、LES。LEA:取有效地址指令。將一個(gè)任意尋址的存儲(chǔ)器操作數(shù)的有效地址送給一個(gè)16位目標(biāo)寄存器中,指令的源操作數(shù)必須是存儲(chǔ)器操作數(shù)的地址,目的操作數(shù)必須是16位寄存器操作數(shù)。該指令常用來設(shè)
24、置一個(gè)16位寄存器作為地址指針。LDS:全地址指針傳送指令。傳送一個(gè)32位全地址指針到兩個(gè)16位目標(biāo)寄存器,地址指針包括一個(gè)段地址和一個(gè)偏移地址。首先從32位的雙字存儲(chǔ)單元取得低位字,作為全地址指針的偏移地址復(fù)制到一個(gè)指定的寄存器中(目的操作數(shù)中),再將高位字作為全地址指針的段地址復(fù)制到DS中。LES:全地址指針傳送指令。與LDS指令功能類似,只是把DS換ES。操作時(shí)首先從32位的雙字存儲(chǔ)單元取低位字,作為全地址指針的偏移地址復(fù)制到一個(gè)指定的寄存器中(目的操作數(shù)中),再將高位字作為全地址指針的段地址復(fù)制到ES寄存器。LEA與LDS、LES允許的操作數(shù)類型相同,主要區(qū)別在于:LEA指令的目的操作
25、數(shù)是16位偏移地址,而LDS、LES指令的目的操作數(shù)是32位的全地址指針。標(biāo)志寄存器傳送指令:LAHF、SAHF、PUSHF、POPF。LAHF(Load AH From Flags):讀取標(biāo)志指令。指令格式:SAHF,該指令的執(zhí)行不影響標(biāo)志位。將寄存器中的低8位傳送到AH中,包括5個(gè)狀態(tài)標(biāo)志SF、ZF、AF、PF、CF,其對(duì)應(yīng)的位是第7、6、4、2、0,而第5、3、1位沒有定義。SAHF(Store AH into Flags):設(shè)置標(biāo)志指令。指令格式:SAHF,該指令執(zhí)行時(shí),標(biāo)志位被新的值所替代。LAHF與SAHF剛好相反,執(zhí)行時(shí)將AH寄存器的相應(yīng)位送到標(biāo)志寄存器的低8位,完成對(duì)5個(gè)狀態(tài)標(biāo)
26、志位SF、ZF、AF、PF、CF的設(shè)置。PUSHF(PUSH Flags):標(biāo)志入棧指令。指令格式:PUSHF。POPF(POP Flags):標(biāo)志出棧指令。PUSHF與POPF指令分別起保護(hù)標(biāo)志和恢復(fù)標(biāo)志的作用。算術(shù)運(yùn)算類指令:無符號(hào)數(shù)與有符號(hào)數(shù)采用同一套加減法指令的條件:1、要求參與加減法運(yùn)算的加數(shù)、被減數(shù)或減數(shù)必須同為無符號(hào)數(shù)或有符號(hào)數(shù);2、要用不同的狀態(tài)標(biāo)志位檢測(cè)無符號(hào)數(shù)或有符號(hào)數(shù)的運(yùn)算結(jié)果是否溢出(CF/OF)。除INC/DEC指令不影響進(jìn)位標(biāo)志CF外,其他算術(shù)運(yùn)算指令對(duì)OF、SF、ZF、AF、PF、CF均會(huì)產(chǎn)生影響。加法:ADD、ADC、INC。ADD:不帶進(jìn)位加。格式:ADDds
27、t,src;注意: dst不能為立即數(shù),dst,src不能同為存儲(chǔ)器操作數(shù)。ADC:帶進(jìn)位加。格式:ADCdst,src;注意:dst=dst+src+CF。ADC主要用于多字節(jié)運(yùn)算。Exp:兩個(gè)32位操作數(shù)1234A9A9H和5678C8C8H依次存在1000H開始的單元,低位在前高位在后,要求編程求和,結(jié)果仍然存在1000H開始的連續(xù)單元。1000HA9;MOVSI,1000H1001HA9;MOVDI,1004H1002H34;MOVAX,SI1003H12;ADDAX,DI1004HC8;MOVSI,AX1005HC8;MOVAX,SI+21006H78;ADCAX,DI+21007H
28、56;MOVSI+2,AXMOVWORD PTRSI+4,0ADCWORD PTRSI+4,0減法:SUB、SBB、DEC、NEG、CMP。DEC:減量指令。注意:段寄存器不能使用該指令。NEG:取補(bǔ)指令。格式:NEGdst,該指令執(zhí)行的結(jié)果總是使CF=1,除非操作數(shù)為0才使CF=0。注意:當(dāng)操作數(shù)dst=0時(shí),結(jié)果不變;當(dāng)操作數(shù)為-128(補(bǔ)碼為80H)或-32768(補(bǔ)碼為8000H)時(shí),結(jié)果數(shù)值不變,但使OF置1。乘法指令:MUL、IMUL。特點(diǎn):在指令中總有一個(gè)操作數(shù)隱含在AL或AX中。指令中的操作數(shù)字節(jié),則另一個(gè)操作數(shù)隱含在AL中,乘積在AX中;指令中的操作數(shù)為字,則另一個(gè)操作數(shù)隱含
29、在AX中,乘積在DX、AX中,其中DX作為存放乘積的高位擴(kuò)展。MUL:只對(duì)CF、OF有定義。乘積的高半部分不為0,則CF=OF=1;否則CF=OF=0。CF=OF=1表示結(jié)果的高半部分包含乘積的有效位,代表乘積的長度擴(kuò)展;CF=OF=0代表乘積的長度沒有擴(kuò)展。源操作數(shù)不能為立即數(shù)。IMUL:格式與功能上與MUL類似,不同的是,MUL要求兩乘數(shù)都為帶符號(hào)數(shù)(補(bǔ)碼),且乘積也是補(bǔ)碼表示的數(shù)。除法指令:DIV、IDIV、CBW、CWD。特點(diǎn):無符號(hào)數(shù)的除法DIV與帶符號(hào)數(shù)的除法IDIV,被除數(shù)隱含在累加器AX(字節(jié)除)或DX和AX(字除)中。在除法運(yùn)算中,如果除數(shù)是8位的,則要求被除數(shù)是16位的;除
30、數(shù)是16位的,則要求被除數(shù)是32位的。除法指令對(duì)所有狀態(tài)標(biāo)志均無定義。DIV:對(duì)于字節(jié)除法,所得商存于AL,余數(shù)存于AH;對(duì)于字除法,商存于AX,余數(shù)存于DX。若除數(shù)為0,則在內(nèi)部產(chǎn)生一個(gè)類型0的中斷。IDIV:與DIV指令相同,只是操作數(shù)是帶符號(hào)數(shù)的補(bǔ)碼,商和余數(shù)也是補(bǔ)碼。其中,商可能為正或負(fù),余數(shù)總是與被除數(shù)的符號(hào)相同,為正或負(fù)。除法指令的尋址方式與乘法指令相同,其目的操作數(shù)必須存放在AX中,或DX與AX中。注意:源操作數(shù)不能為立即數(shù)。CBW(Convert Byte to Word):字節(jié)擴(kuò)展指令。對(duì)標(biāo)志位無影響,功能:把AL中的符號(hào)擴(kuò)展到AH中。AL<80H,則擴(kuò)展后(AH)=0
31、0H;否則擴(kuò)展后(AH)=0FFH。CWD(Convert Word to Double Word):字?jǐn)U展指令。對(duì)標(biāo)志位無影響,功能:將AX中的符號(hào)擴(kuò)展到DX中。AX<8000H,則擴(kuò)展后(DX)=0000H;否則擴(kuò)展后(DX)=FFFFH。BCD碼調(diào)整指令:AAA、DAA、AAS、DAS、AAM、AAD。AAA:加法的非壓縮BCD碼調(diào)整指令(ASCII碼調(diào)整)。僅影響CF和AF。DAA:加法的壓縮BCD碼調(diào)整指令(十進(jìn)制加法調(diào)整)。僅OF無定義。AAS:減法的非壓縮BCD碼調(diào)整指令。僅影響CF和AF。DAS:減法的壓縮BCD碼調(diào)整指令。僅OF無定義。AAM:乘法的非壓縮BCD碼調(diào)整指
32、令。僅影響PF、SF、ZF。AAD:除法的非壓縮型BCD碼調(diào)整指令。僅影響PF、SF、ZF。邏輯運(yùn)算與移位指令需要對(duì)字節(jié)或字?jǐn)?shù)據(jù)的各個(gè)二進(jìn)制位進(jìn)行操作時(shí),可采用二進(jìn)制位操作類指令。邏輯運(yùn)算類指令:AND、OR、NOT、XOR、TEST。AND:邏輯與。格式:ANDdst,src。兩個(gè)操作數(shù)的對(duì)應(yīng)位進(jìn)行運(yùn)算,與運(yùn)算的結(jié)果送回到目的操作數(shù)。常用于對(duì)指定位進(jìn)行清零。OR:邏輯或。格式:ORdst,src。兩個(gè)操作數(shù)按位進(jìn)行或運(yùn)算,結(jié)果送回目的操作數(shù)。常用于對(duì)指定位進(jìn)行置1操作。XOR:邏輯異或。XORdst,src。兩個(gè)操作數(shù)按位進(jìn)行異或運(yùn)算,結(jié)果送回目的操作數(shù)。注意:上述幾種運(yùn)算的目的操作數(shù)不能為
33、立即數(shù),兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器數(shù)。TEST:測(cè)試指令。格式:TESTdst,src。將dst指定的內(nèi)容按位做邏輯與運(yùn)算,但不送回操作結(jié)果,只根據(jù)結(jié)果影響標(biāo)志位。TEST指令的操作數(shù)尋址與AND指令相同。常用來檢測(cè)操作數(shù)的某些位是1還是0。注意:上述指令對(duì)標(biāo)志位的影響:標(biāo)志位CF、OF復(fù)位,SF、PF和ZF由操作結(jié)果確定,AF未定義。NOT:邏輯非。格式:NOTdst。指定的寄存器或存儲(chǔ)單元的內(nèi)容按位取反。常用來對(duì)某個(gè)數(shù)做求反運(yùn)算。非循環(huán)移位指令:SHL、SHR、SAL、SAR。SHL:邏輯左移指令。指令格式:SHLdst,CL;CL是移位的位數(shù)。功能:將操作數(shù)左移,CL指定移位位數(shù),最高位
34、移入進(jìn)位標(biāo)志CF,移動(dòng)后空出的最低位補(bǔ)0。注意:操作數(shù)dst可以位寄存器數(shù)或存儲(chǔ)器數(shù)。當(dāng)只移1位時(shí),若符號(hào)位SF發(fā)生變化,則OF=1;否則OF=0。Exp:MOVBL,01110101 MOVCL,4 SHLBL,CL運(yùn)算結(jié)果:(BL)=01010000,SF=0,CF=1,OF=1,ZF=0。SHR:邏輯右移指令。指令格式與SHL類相同。功能:將操作數(shù)右移,CL指定移位位數(shù),最高位補(bǔ)0,最低位移入CF。SHR指令的操作數(shù)尋址方式也與SHL相同。當(dāng)只移1位時(shí),若移位后的符號(hào)位SF發(fā)生變化,則OF=1;否則OF=0。以上兩種操作:標(biāo)志位SF、ZF、PF根據(jù)移位結(jié)果置位。SAL:算數(shù)左移指令。與S
35、HL指令功能相同,最高位移入標(biāo)志位CF,但SAL將操作數(shù)視為帶符號(hào)數(shù)。移動(dòng)后空出的低位補(bǔ)0。SAR:算術(shù)右移指令。與SHR指令功能相同,最低位移入標(biāo)志位CF,但符號(hào)位保持不變。循環(huán)移位指令:ROL、ROR、RCL、RCR。ROL(Rotate Left):循環(huán)左移指令。最高位進(jìn)入標(biāo)志位CF并移入最低位,按一個(gè)閉環(huán)回路進(jìn)行移位。目的操作數(shù)可以是寄存器數(shù)或存儲(chǔ)器數(shù)。格式:RORdst,CL;CL是移位的位數(shù)。Exp:ROLAL,1 MOVCL,4 ROLAL,CL循環(huán)移位為1位時(shí),若移位后的操作數(shù)的最高位不等于標(biāo)志位CF,則溢出標(biāo)志OF=1;否則OF=0.用來表示移位前后操作數(shù)的符號(hào)位是否發(fā)生改變
36、(OF=0表示符號(hào)位為改變)。ROR(Rotate Right)循環(huán)右移指令,與ROL指令的功能相似,僅移動(dòng)方向相反,最低位進(jìn)入標(biāo)志位CF并移入最高位。只移1位時(shí),移位后的操作數(shù)的最高位與次高位不相等,則溢出標(biāo)志OF=1;否則OF=0??捎纱伺袛嘁莆磺昂蟛僮鲾?shù)的符號(hào)位是否發(fā)生改變。RCL:帶進(jìn)位的循環(huán)左移指令。最高位移入標(biāo)志位CF,CF移入最低位形成環(huán)路。循環(huán)移位為1位時(shí),若移位后的操作數(shù)的最高位與標(biāo)志位CF不相等,則溢出標(biāo)志OF=1;否則OF=0??捎纱伺袛嘁莆磺昂蟛僮鲾?shù)的符號(hào)位是否發(fā)生改變。RCR:帶進(jìn)位的循環(huán)右移指令。最低位移入標(biāo)志位CF,CF移入最高位。形成環(huán)路。循環(huán)移位為1位時(shí),若移
37、位后的操作數(shù)的最高位與次高位不相等,則溢出標(biāo)志CF=1;否則OF=0??捎纱伺袛嘁莆磺昂蟛僮鲾?shù)的符號(hào)位是否發(fā)生改變。串操作指令:是用一條指令實(shí)現(xiàn)對(duì)一串字符或數(shù)據(jù)的操作。串是存儲(chǔ)器中一系列連續(xù)的字或字節(jié),串操作就是針對(duì)這些字或字節(jié)進(jìn)行的某種相同的操作。8086串操作特點(diǎn):1) 所有串操作指令都用SI對(duì)DS段中的源操作數(shù)進(jìn)行間接尋址,用DI對(duì)ES段中的目的操作數(shù)進(jìn)行間接尋址,即目的串和源串地址分別有ES:DI和DS:SI提供。使用前應(yīng)先設(shè)定好SI和DI的初值。2) 串操作指令執(zhí)行時(shí)自動(dòng)修改地址指針,地址指針的修改與方向標(biāo)志DF有關(guān)。3) 若源串和目的串在同一段中,則把數(shù)據(jù)段基址DS和附加段基址ES
38、設(shè)成相同的數(shù)字,即DS=ES,仍由SI和DI分別指出源串和目的串的有效地址。4) 任何一條串操作指令,可在前面加一個(gè)“重復(fù)前綴”,通過它們來控制串操作指令的重復(fù)執(zhí)行。5) 串操作指令是唯一的一組源操作數(shù)和目的操作數(shù)都在存儲(chǔ)單元的指令。重復(fù)前綴:REP、REPZ(REPE)、REPNZ(REPNE)。功能是重復(fù)執(zhí)行緊跟其后的串操作指令,不能單獨(dú)使用,只能加在串操作指令前用來控制串操作的重復(fù)執(zhí)行,且不影響標(biāo)志位。REP:重復(fù)前綴(無條件重復(fù))。執(zhí)行操作時(shí),(CX)=0,退出重復(fù)串操作;否則重復(fù)串操作。過程如下:1、 若(CX)=0,退出重復(fù)操作REP,否則往下執(zhí)行;2、 修改CX,即CX=CX-1
39、;3、 執(zhí)行串操作一次,并修改SI、DI,執(zhí)行第1步。其中,DF=0,則SI、DI內(nèi)容自動(dòng)加1或加2;否則自動(dòng)減1或2.用途:用于字串傳送MOVS或保存字串STOS指令的的前綴。REPZ(REPE):相等重復(fù)前綴。若執(zhí)行的操作為(CX)=0且ZF=1,重復(fù)串操作;否則,退出重復(fù)操作。用途:用于比較兩個(gè)字符串,找出不同的字。REPZ(REPE)與串操作指令CMPS與SCAS配合。表示只有當(dāng)兩數(shù)相等時(shí)才繼續(xù)比較;否則可提前結(jié)束串操作。REPNZ(REPNE):不相等重復(fù)前綴。執(zhí)行的操作為(CX)=0且ZF=1,重復(fù)串操作;否則不重復(fù)。用途:在一個(gè)字串中,找到需要的字。也可用于比較兩個(gè)字串,找出相同
40、的字。REPNZ(REPNE)和串操作指令CMPS與SCAS配合。表示只有當(dāng)兩書不相等時(shí)才繼續(xù)比較;否則可提前結(jié)束串操作。串傳送指令格式:MOVSB/MOVSW;用于字節(jié)/字的傳送。操作:(ES:DI)<(DS:SI);不影響標(biāo)志位。該指令把數(shù)據(jù)段一SI為有效地址的源串中的字節(jié)或字傳送到附加段以DI為有效地址的目的串中,同時(shí)自動(dòng)修改SI和DI中的有效地址,使之指向下一個(gè)元素。串比較指令格式:CMPSB/CMPSW;源字節(jié)串比較或字串比較。(ES:EI)<(DS:SI);6個(gè)標(biāo)志位:AF、ZF、OF、PF、CF、SF反映了目的串與源串的關(guān)系。CMPS指令把由SI指定的數(shù)據(jù)段中源串的一
41、個(gè)字節(jié)或字與DI指定的附加段目的串的一個(gè)字節(jié)或字相減,但不回送結(jié)果,只是影響標(biāo)志位。比較后按照DF的值修改地址指針SI和DI。SCAS:串掃描指令。格式:SCASB/SCASW;字節(jié)串或字串掃描。操作:把AL/AX的內(nèi)容減去DI指定的目的串中的一個(gè)字節(jié)或字?jǐn)?shù)據(jù)。不送運(yùn)算結(jié)果,只根據(jù)結(jié)果影響標(biāo)志位,并按照DF的值修改DI。用于從一個(gè)字串中查找一個(gè)與AL或AX中不同的字符,或查找一個(gè)相同的字符。LODS:讀取串指令。格式:LODSB/LODSW。操作:把源串中的一個(gè)字節(jié)或字的數(shù)據(jù)送入AL或AX中,同時(shí)按照DF標(biāo)志修改SI。該指令正常情況是不重復(fù)操作的,因?yàn)槊恐貜?fù)一次操作,累加器的內(nèi)容就會(huì)改寫,但在
42、軟件設(shè)計(jì)中,該指令是十分有用的。STOS:存串指令。格式:STOSB/STOSW。操作:把AL或AX中的一個(gè)字節(jié)或字的內(nèi)容送入目的串所在單元,并按照DF的值修改DI。STOS指令常用于初始化某一緩沖區(qū)為同一數(shù)據(jù)??刂妻D(zhuǎn)移類指令:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、循環(huán)控制指令、中斷指令。JMP:無條件轉(zhuǎn)移指令。可實(shí)現(xiàn)短、近、遠(yuǎn)轉(zhuǎn)移,使用方便,包括段內(nèi)直接轉(zhuǎn)移、段內(nèi)間接轉(zhuǎn)移、段間直接轉(zhuǎn)移、段間間接轉(zhuǎn)移。CALL/RET:調(diào)用和返回指令。子程序完成功能之后,最后執(zhí)行的一條指令必須是返回指令RET,返回地址由執(zhí)行CALL調(diào)用指令時(shí)入棧保存的斷點(diǎn)值提供。條件轉(zhuǎn)移指令:滿足條件,則轉(zhuǎn)移到指定的目標(biāo)地址;否則,
43、繼續(xù)執(zhí)行該條件轉(zhuǎn)移指令的下一條指令。條件轉(zhuǎn)移分為:單個(gè)狀態(tài)條件轉(zhuǎn)移、無符號(hào)條件轉(zhuǎn)移、帶符號(hào)條件轉(zhuǎn)移3種。指令格式:JXTarget;X代表轉(zhuǎn)移條件,條件成立,則轉(zhuǎn)到標(biāo)號(hào)Target處執(zhí)行;否則順序執(zhí)行;Target是短目標(biāo)地址。LOOP、LOOPE/LOOPZ、LOOPNE/LOOPNZ:短目標(biāo)標(biāo)號(hào)。第四章:表達(dá)式:由若干操作數(shù)和運(yùn)算符構(gòu)成的有意義的組合序列。表達(dá)式可出現(xiàn)于源程序的任何地方,在匯編過程中可產(chǎn)生確定的值。表達(dá)式是常數(shù)、寄存器、標(biāo)號(hào)、變量與運(yùn)算符的組合。匯編時(shí)按優(yōu)先規(guī)則對(duì)表達(dá)式進(jìn)行計(jì)算,計(jì)算出具體數(shù)值,在運(yùn)行時(shí)不能改變,而寄存器間接尋址的地址計(jì)算則是按照?qǐng)?zhí)行指令時(shí)寄存器的值先取指后
44、計(jì)算的。運(yùn)算符:算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、分析運(yùn)算符、合成運(yùn)算符。算術(shù)運(yùn)算符:+、-、*、/、取模運(yùn)算(MOD)。Exp:MOVAL,5 MOD 2;匯編后為MOVAL,1/是取商部分,只有整數(shù)部分,沒有余數(shù);而MOD只是取余數(shù)。邏輯運(yùn)算符:AND、OR、XOR、NOT。邏輯運(yùn)算符在兩個(gè)操作數(shù)之間按位進(jìn)行布爾運(yùn)算,邏輯表達(dá)式只能對(duì)常數(shù)進(jìn)行運(yùn)算,所得結(jié)果也是常數(shù)。關(guān)系運(yùn)算符:在兩個(gè)無符號(hào)操作數(shù)之間進(jìn)行大小關(guān)系比較,滿足關(guān)系則返回全1,否則返回全0。包括:相等(EQ)、不相等(NE)、小于(LT)、大于(GT)、小于等于(LE)、大于等于(GE)。運(yùn)算結(jié)果是一個(gè)邏輯值,即真或假。1)關(guān)系
45、運(yùn)算符只能對(duì)常數(shù)(或相當(dāng)于常數(shù))進(jìn)行運(yùn)算,且為無符號(hào)數(shù)。2)關(guān)系為真,結(jié)果為全1;否則為全0。分析運(yùn)算符:SEG、OFFSET、TYPE、LENGTH、SIZE。SEG:取變量或標(biāo)號(hào)的段地址。OFFSET:取變量或標(biāo)號(hào)偏移地址。TYPE:取變量的類型,對(duì)于變量類型返回值可以是1(字節(jié))、2(字)、4(雙字)、6(三字)、8(四字)、10(五字);對(duì)于標(biāo)號(hào)類型,返回值可以是-1(NEAR)或-2(FAR)。LENGTH:取變量中元素的個(gè)數(shù)。若使用DUP( )定義的數(shù)組變量,結(jié)果為單元的個(gè)數(shù);否則結(jié)果為1。SIZE:取所定義存儲(chǔ)區(qū)的字節(jié)數(shù)(等于LENGTH*TYPE)。若使用DUP(),取所定義的
46、變量或字節(jié)個(gè)數(shù);沒使用DUP( ),則取第1個(gè)數(shù)據(jù)的字節(jié)數(shù)。合成運(yùn)算符:對(duì)已定義的但個(gè)操作數(shù)重新生成段基地址、偏移量相同而類型不同的新操作數(shù),主要介紹PTR、THIS。1) PTR:用來指定地址操作數(shù)的類型。格式為:<新類型> PTR <存儲(chǔ)器操作數(shù)>類型:BYTE、WORD、DWORD、NEAR、FAR。功能:指定原存儲(chǔ)器的操作數(shù)為新類型,新操作數(shù)的段基地址和偏移量與原操作數(shù)相同;PTR也可用來進(jìn)行強(qiáng)制類型轉(zhuǎn)換。THIS:指定“新類型”。格式為:THIS<新類型>;代表新的操作數(shù)的類型即為式中指定的“新類型”。偽指令:符號(hào)定義偽指令、數(shù)據(jù)定義偽指令。符號(hào)定
47、義偽指令:EQU、=。格式:<符號(hào)>EQU<表達(dá)式>。用EQU定義的符號(hào)未清除前不能進(jìn)行重定義。清除EQU定義可用:PURGE偽指令。格式:PURGE<符號(hào)>。用“=”定義的符號(hào)可在任何時(shí)候進(jìn)行重定義,其他用法與EQU完全相同。兩者均不占用存儲(chǔ)空間,僅是給符號(hào)賦值在編譯過程中完成。數(shù)據(jù)定義偽指令:<變量名>數(shù)據(jù)定義偽指令<操作數(shù),操作數(shù),···>操作數(shù)可以是常數(shù)、變量或表達(dá)式。常用的數(shù)據(jù)定義偽指令有:DB定義字節(jié)、DW定義字、DD定義雙字、DQ定義4字、DT定義5字。Exp:DATADBHELLO復(fù)制操作
48、符:DUP定義重復(fù)的數(shù)據(jù)可使用復(fù)制操作符,括號(hào)中的內(nèi)容可以為DUP重復(fù)定義的嵌套。Exp:DATADB8 DUP (8DUP (0) );連續(xù)分配64個(gè)字節(jié)單元,初值為0。$表示取當(dāng)前地址。段定義偽指令:格式:<段名>SEGMENT定位類型 組合方式 類別 <匯編語言語句> <段名>ENDSSEGMENT和ENDS總是成對(duì)出現(xiàn)的,且段名一樣。SEGMENT說明一個(gè)段的開始,ENDS則說明一個(gè)段的結(jié)束。ASSUME:明確段與寄存器的關(guān)系。Exp:ASSUMECS:CODEDS:DATAES:DATAORG:規(guī)定了段內(nèi)的指令或數(shù)據(jù)存放的開始地址,格式:ORG<表達(dá)式>,表達(dá)式的值即為開始地址,從此地址連續(xù)存放程序或數(shù)據(jù)。PROC、ENDP:過程定義偽指令。注意:PROC和ENDP必須成對(duì)出現(xiàn),且過程名相同。過程的類型有NEAR、FAR兩種,分別表示段內(nèi)、段間調(diào)用,默認(rèn)模式為NEAR。END:匯編結(jié)束偽指令。格式:END<表達(dá)式>,表達(dá)式通常就是第一條指令的標(biāo)號(hào),指示程序的入口地址。中斷:當(dāng)CPU內(nèi)部或外部出現(xiàn)某種事件(中斷源)需要處理時(shí),終止正在執(zhí)行的程序(斷點(diǎn)),轉(zhuǎn)去執(zhí)行請(qǐng)求中斷的那個(gè)事件的
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公設(shè)備購銷合同專業(yè)版
- 小產(chǎn)權(quán)房買賣合同參考范本
- 農(nóng)村房屋繼承協(xié)議書樣式
- 工程委托設(shè)計(jì)合同示范
- 代征稅款委托協(xié)議樣本
- 合肥市建筑材料購銷合同
- 員工勞動(dòng)合同范本規(guī)范文本
- 員工購房抵押貸款合同范本
- 彩色鋼板工程承包合同模板
- 2024年農(nóng)村土地買賣協(xié)議書范本
- 北師大版初一數(shù)學(xué)計(jì)算能力大賽
- 萬物之理-愛因斯坦之夢(mèng)智慧樹知到答案章節(jié)測(cè)試2023年中國海洋大學(xué)
- 高速鐵路列車餐飲服務(wù)PPT完整全套教學(xué)課件
- 嶺南藥食文化
- 工程竣工驗(yàn)收?qǐng)?bào)告甲方
- 灌溉用雙軸取向硬聚氯乙烯(PVC-O)管材和連接件基本參數(shù)及技術(shù)要求
- GB/T 4960.3-2010核科學(xué)技術(shù)術(shù)語第3部分:核燃料與核燃料循環(huán)
- GB/T 3810.14-2006陶瓷磚試驗(yàn)方法第14部分:耐污染性的測(cè)定
- GB/T 35645-2017導(dǎo)航電子地圖框架數(shù)據(jù)交換格式
- 消防工程施工重點(diǎn)、難點(diǎn)分析及對(duì)策
- GB/T 22307-2008密封墊片高溫抗壓強(qiáng)度試驗(yàn)方法
評(píng)論
0/150
提交評(píng)論