




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、18088/8086指令系統(tǒng)指令系統(tǒng)nCPU內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu) nCPU寄存器寄存器n指令系統(tǒng)指令系統(tǒng)n尋址方式尋址方式22.1 微處理器的內(nèi)部結(jié)構(gòu)3內(nèi)部數(shù)據(jù)總線內(nèi)部數(shù)據(jù)總線控制總線控制總線數(shù)據(jù)總線數(shù)據(jù)總線地址總線地址總線暫存器暫存器累加器累加器ALU標(biāo)志寄存器標(biāo)志寄存器指指令令寄寄存存指指令令譯譯碼碼時(shí)序時(shí)序和和控制控制邏輯邏輯通通 用用寄存器組寄存器組地地 址址寄存器組寄存器組地址地址總線總線控制控制數(shù)據(jù)數(shù)據(jù)總線總線控制控制2.1.1 82.1.1 8位位CPUCPU的基本結(jié)構(gòu)的基本結(jié)構(gòu)n算術(shù)邏輯單元(運(yùn)算器)算術(shù)邏輯單元(運(yùn)算器)n寄存器組寄存器組n指令處理單元(控制器)指令處理單元(控制
2、器)累加器:累加器:8位位CPU一般由累加器一般由累加器A提供提供一個(gè)操作數(shù)而結(jié)果也返回到累加器一個(gè)操作數(shù)而結(jié)果也返回到累加器(故得名)(故得名)標(biāo)志寄存器:反映運(yùn)算結(jié)果的狀態(tài)信息標(biāo)志寄存器:反映運(yùn)算結(jié)果的狀態(tài)信息存儲(chǔ)在標(biāo)志寄存器存儲(chǔ)在標(biāo)志寄存器Flag中中寄存器組:用來(lái)存放臨時(shí)的數(shù)據(jù)或地址,寄存器組:用來(lái)存放臨時(shí)的數(shù)據(jù)或地址,起數(shù)據(jù)準(zhǔn)備、調(diào)度、和緩沖作用。起數(shù)據(jù)準(zhǔn)備、調(diào)度、和緩沖作用。分為通用和專用寄存器。分為通用和專用寄存器。通用寄存器:既可以存放數(shù)據(jù),又可能通用寄存器:既可以存放數(shù)據(jù),又可能存放地址,在存放地址,在CPU中數(shù)量最多,使中數(shù)量最多,使用頻度最高。用頻度最高。地址寄存器:主要
3、用來(lái)存放地址,指出地址寄存器:主要用來(lái)存放地址,指出存儲(chǔ)器操作數(shù)的地址。存儲(chǔ)器操作數(shù)的地址。42.1.2 8086微處理器微處理器nIntel 第三代產(chǎn)品代表第三代產(chǎn)品代表n16位位CPUn16根數(shù)據(jù)線,根數(shù)據(jù)線,20根地址線根地址線n尋址尋址220/1MB內(nèi)存內(nèi)存n尋址尋址216/64K個(gè)個(gè)8位位I/O端口端口n時(shí)鐘頻率最高時(shí)鐘頻率最高5MHZnIntel推出推出8086的同期推出的同期推出8088580888088與與80868086區(qū)別區(qū)別n8088稱作準(zhǔn)稱作準(zhǔn)16位位CPUn其內(nèi)部寄存器、內(nèi)部運(yùn)算部件及內(nèi)部操作均按其內(nèi)部寄存器、內(nèi)部運(yùn)算部件及內(nèi)部操作均按1616位設(shè)計(jì),但對(duì)外數(shù)據(jù)線只有
4、位設(shè)計(jì),但對(duì)外數(shù)據(jù)線只有8 8根根n8根數(shù)據(jù)線,根數(shù)據(jù)線,20根地址線根地址線n尋址尋址220/1MB內(nèi)存內(nèi)存n尋址尋址216/64K個(gè)個(gè)8位位I/O端口端口n目的是與早期的目的是與早期的8 8位機(jī)外圍接口進(jìn)行兼容位機(jī)外圍接口進(jìn)行兼容62.1.2 8088的內(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 DI通用通用寄存器寄存器地址地址加法加法器器指令隊(duì)列指令隊(duì)列(8086/6字節(jié))字節(jié))執(zhí)行
5、部件執(zhí)行部件 (EU)總線接口部件總線接口部件 (BIU)AXBXCXDX 16位,位, 16位位 16位位段段與與指指針針寄寄存存器器78088/80868088/8086的功能結(jié)構(gòu)的功能結(jié)構(gòu)n8088的的內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)從功能分成兩個(gè)單元從功能分成兩個(gè)單元n總線接口單元總線接口單元BIU管理管理8088與系統(tǒng)總與系統(tǒng)總線的接口,負(fù)責(zé)線的接口,負(fù)責(zé)CPU對(duì)存儲(chǔ)器和外設(shè)進(jìn)行對(duì)存儲(chǔ)器和外設(shè)進(jìn)行訪問(wèn)訪問(wèn)n執(zhí)行單元執(zhí)行單元EU負(fù)責(zé)指令的譯碼、執(zhí)行和負(fù)責(zé)指令的譯碼、執(zhí)行和數(shù)據(jù)的運(yùn)算數(shù)據(jù)的運(yùn)算n兩個(gè)單元既相互獨(dú)立,又相互協(xié)調(diào),完成各兩個(gè)單元既相互獨(dú)立,又相互協(xié)調(diào),完成各自操作自操作82.1.3 8088
6、/80862.1.3 8088/8086寄存器結(jié)構(gòu)寄存器結(jié)構(gòu)一、通用寄存器1 1、 4 4個(gè)個(gè)1616位數(shù)據(jù)寄存器位數(shù)據(jù)寄存器,AXAX、BXBX、CXCX、DXDX;2 2、 2 2個(gè)個(gè)1616位變址寄存器位變址寄存器,SISI、DIDI源變址寄存器源變址寄存器SISI(Source Index)(Source Index)目的變址寄存器目的變址寄存器DIDI(Destination Index)(Destination Index);3 3、 2 2個(gè)個(gè)1616位指針寄存器位指針寄存器,BPBP、SPSP基數(shù)指針寄存器基數(shù)指針寄存器BPBP(Base PointerBase Pointer
7、)堆棧指針寄存器堆棧指針寄存器SPSP(Stack Pointer)(Stack Pointer)二、1個(gè)標(biāo)志寄存器:16位標(biāo)志寄存器 F92.1.3 8088/80862.1.3 8088/8086寄存器結(jié)構(gòu)寄存器結(jié)構(gòu)三、1個(gè)16位指令指針寄存器IP四、4個(gè)16位段寄存器代碼段寄存器 CS數(shù)據(jù)段寄存器 DS堆棧段寄存器 SS附加段寄存器 ES101.1.數(shù)據(jù)寄存器用法數(shù)據(jù)寄存器用法AXAX、BXBX、CXCX、DX,4DX,4個(gè)個(gè)1616位數(shù)據(jù)寄存器,可以整體位數(shù)據(jù)寄存器,可以整體使用,也可以拆成兩個(gè)使用,也可以拆成兩個(gè)8 8位寄存器使用:位寄存器使用:AX=AH,ALAX=AH,AL,BX
8、=BH,BLBX=BH,BL,CX=CH,CLCX=CH,CL,DX=DH,DLDX=DH,DL數(shù)據(jù)寄存器有通用用法,也有專用用法數(shù)據(jù)寄存器有通用用法,也有專用用法n AX AX,AL AL 累加器,輸入累加器,輸入/ /輸出中介輸出中介n CXCX,CL CL 計(jì)數(shù)器計(jì)數(shù)器n BXBX基址寄存器基址寄存器n DXDX端口間址端口間址MOV BX,8900HSUB AX,BXIN AL,08H/OUT 08H,ALMOV CL,04HSHL AL,CLMOV BX,2000HAND AL,BX+0008HMOV DX,8000HIN AL,DX112.2.變址與指針寄存器用法變址與指針寄存器用
9、法n SI SI和和DIDI:1616位變址寄存器,為變址尋址方式提位變址寄存器,為變址尋址方式提供地址供地址n BPBP:基址指針,用于指向:基址指針,用于指向堆棧中的數(shù)據(jù)單元堆棧中的數(shù)據(jù)單元n SPSP:堆棧指針,:堆棧指針,用于指向堆棧中的數(shù)據(jù)單元用于指向堆棧中的數(shù)據(jù)單元,限于限于PUSH、POP指令指令 MOV SI,1800HMOV DI, 2800HMOV AL,SI+08HMOV BL,DI+08HMOV BP,1000HMOV BL,BP+08H; BLBL取自取自SSSS段段MOV SI,1000HMOV AL,SI+08H;取自取自DSDS段段PUSH AX;(SP-1)=
10、AH,(SP-2)=ALSP=SP-2123.3.標(biāo)志寄存器標(biāo)志寄存器F F用法用法存放指令執(zhí)行結(jié)果特征或用來(lái)設(shè)置某些標(biāo)志,共存放指令執(zhí)行結(jié)果特征或用來(lái)設(shè)置某些標(biāo)志,共有有1616位,其中位,其中7 7位未用,所用的各位含義如下:位未用,所用的各位含義如下: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0CFPFAFZFSFTFIFDFOF根據(jù)功能,標(biāo)志可以分為兩類:根據(jù)功能,標(biāo)志可以分為兩類:1.1.狀態(tài)標(biāo)志(個(gè))狀態(tài)標(biāo)志(個(gè))2.2.控制標(biāo)志(個(gè))控制標(biāo)志(個(gè))136 6個(gè)狀態(tài)標(biāo)志個(gè)狀態(tài)標(biāo)志1 1、符號(hào)標(biāo)志、符號(hào)標(biāo)志SFSF(sign flag ) (sign
11、flag ) 2 2、零標(biāo)志、零標(biāo)志ZFZF(zero flag) (zero flag) 3 3、奇偶標(biāo)志、奇偶標(biāo)志PFPF(parity flag) (parity flag) 4 4、進(jìn)位標(biāo)志、進(jìn)位標(biāo)志CFCF(carry flag) (carry flag) 5 5、輔助進(jìn)位標(biāo)志、輔助進(jìn)位標(biāo)志AFAF(auxiliary carry flag) (auxiliary carry flag) 6 6、溢出標(biāo)志、溢出標(biāo)志OFOF(overflow flag)(overflow flag) 運(yùn)算結(jié)果的最高位為運(yùn)算結(jié)果的最高位為1 1,則,則SF=1SF=1運(yùn)算結(jié)果為運(yùn)算結(jié)果為0 0,則,則Z
12、F=1ZF=1運(yùn)算結(jié)果低字節(jié)運(yùn)算結(jié)果低字節(jié)1 1的個(gè)數(shù)為的個(gè)數(shù)為0 0或偶或偶數(shù)時(shí),則數(shù)時(shí),則PF=1PF=1運(yùn)算結(jié)果最高有效位有進(jìn)位或借運(yùn)算結(jié)果最高有效位有進(jìn)位或借位,則位,則CF=1CF=1運(yùn)算結(jié)果運(yùn)算結(jié)果D D3 3有進(jìn)位或借位,則有進(jìn)位或借位,則AF=1AF=1,用于用于CPUCPU內(nèi)部十進(jìn)制運(yùn)算內(nèi)部十進(jìn)制運(yùn)算運(yùn)算結(jié)果有溢出,則運(yùn)算結(jié)果有溢出,則OF=1OF=1,該標(biāo),該標(biāo)志表示有符號(hào)數(shù)運(yùn)算是否超出范志表示有符號(hào)數(shù)運(yùn)算是否超出范圍,無(wú)符號(hào)數(shù)運(yùn)算時(shí)也同樣置位,圍,無(wú)符號(hào)數(shù)運(yùn)算時(shí)也同樣置位,但沒(méi)有意義。但沒(méi)有意義。143個(gè)控制標(biāo)志個(gè)控制標(biāo)志1 1、方向標(biāo)志、方向標(biāo)志DF(direction
13、 flag)DF(direction flag) DF DF0 0 遞增(地址由低向高);遞增(地址由低向高); DFDF1 1 遞減(地址由高向低);遞減(地址由高向低);2 2、中斷允許標(biāo)志、中斷允許標(biāo)志IF(interrupt enable flag)IF(interrupt enable flag) IF=0 IF=0 關(guān)中斷關(guān)中斷 ;IF=1 IF=1 開(kāi)中斷開(kāi)中斷 3 3、跟蹤標(biāo)志、跟蹤標(biāo)志TF(trap flag)TF(trap flag)又稱為單步標(biāo)志或陷又稱為單步標(biāo)志或陷阱標(biāo)志阱標(biāo)志 TFTF1 1 單步執(zhí)行指令;單步執(zhí)行指令;TFTF0 0 連續(xù)執(zhí)行指令連續(xù)執(zhí)行指令154.
14、段寄存器段寄存器n CS CS (code segment) (code segment):存放當(dāng)前正在執(zhí)行的程序:存放當(dāng)前正在執(zhí)行的程序段的起始地址;段的起始地址;n DS DS (data segment)(data segment):存放當(dāng)前正在執(zhí)行的程序:存放當(dāng)前正在執(zhí)行的程序中所用操作數(shù)的數(shù)據(jù)段起始地址;中所用操作數(shù)的數(shù)據(jù)段起始地址;n SSSS (stact segment) (stact segment):存放當(dāng)前被執(zhí)行的程序所:存放當(dāng)前被執(zhí)行的程序所用堆棧段的起始地址;用堆棧段的起始地址;n ES ES (extra segment) (extra segment) :存放當(dāng)前
15、正在執(zhí)行的程:存放當(dāng)前正在執(zhí)行的程序中所用操作數(shù)的段起始地址;序中所用操作數(shù)的段起始地址;165.指令指針寄存器指令指針寄存器n指令指針寄存器IP相當(dāng)于計(jì)組中講到的程序計(jì)數(shù)器PCn程序代碼存放于存儲(chǔ)器代碼段中,代碼段由CS寄存器指示開(kāi)始位置,而IP用來(lái)指示當(dāng)前指令在代碼段中的偏移位置。CPU利用CS和IP取得要執(zhí)行的指令,然后修改IP內(nèi)容,使之指向下一條指令地址,即CPU靠CS和IP控制指令執(zhí)行流程172.1.4 8088/8086的存儲(chǔ)器結(jié)構(gòu)的存儲(chǔ)器結(jié)構(gòu)n 8個(gè)二進(jìn)制位組成一個(gè)存儲(chǔ)單元n 每個(gè)存儲(chǔ)單元有一個(gè)編號(hào),叫地址n 字或雙字在存儲(chǔ)時(shí)低字節(jié)對(duì)應(yīng)低地址 n 例如:MOV AXMOV AX,
16、BXBX;AL=BXAL=BX,AH=BX+1AH=BX+1 80 x86處理器采用處理器采用“低對(duì)低、高對(duì)高低對(duì)低、高對(duì)高”的存儲(chǔ)形的存儲(chǔ)形式,被稱為式,被稱為“小端方式小端方式Little Endian”。 相對(duì)應(yīng)還存在相對(duì)應(yīng)還存在“大端方式大端方式Big Endian”。181.8088/80861.8088/8086存儲(chǔ)器分段管理存儲(chǔ)器分段管理n 8088地址線為20根,尋址空間 1MB,范圍 00000H- FFFFFH;n 8088寄存器無(wú)法提供20位地址,故用分段技術(shù);n 1MB存儲(chǔ)器分成若干段,每段容量為64KB;n 每段起始地址必須是一個(gè)能被16整除的地址碼;n 段間可以連續(xù)
17、、隔開(kāi)、部分重疊,或完全重疊;n 一個(gè)程序必須有代碼段,還可以有數(shù)據(jù)段、堆棧段和附加段,段地址分別由CS、DS、SS和ES給出(給出段起始地址的高16位)。19n 物理地址:實(shí)際訪問(wèn)存儲(chǔ)器的地址,與存儲(chǔ)空間一一對(duì)應(yīng),即一個(gè)地址碼對(duì)應(yīng)一個(gè)存儲(chǔ)單元;n 段地址:一個(gè)存儲(chǔ)段的首地址;n 偏移量地址:指一個(gè)存儲(chǔ)段內(nèi)的某個(gè)存儲(chǔ)單元相對(duì)于該段首地址的差值;n 邏輯地址:程序員編程使用的地址,由段地址和偏移地址組成,表示為段地址:偏移地址,例如1208H:1000H;偏移地址也叫有效地址EA;邏輯地址需要轉(zhuǎn)換成物理地址進(jìn)行訪存!2.描述存儲(chǔ)器地址的幾個(gè)術(shù)語(yǔ):203.物理地址計(jì)算圖示段地址段地址15 0偏移地
18、址偏移地址15 0段地址段地址15 000003 0 物物 理理 地地 址址 19 0n物理地址唯一,邏輯地址不唯一n多個(gè)邏輯地址可以對(duì)應(yīng)同一個(gè)物理地址物理地址=段地址24偏移地址段地址段地址=0000H偏移量偏移量=0000H偏移量偏移量=FFFFH物理地址物理地址00000H0FFFFH64KB存儲(chǔ)段21例如:邏輯地址例如:邏輯地址 1460H:100H1460H:100H、1380H:F00H1380H:F00H對(duì)應(yīng)同一物理地址對(duì)應(yīng)同一物理地址14600H14600H 100H100H14700H14700H13800H13800H F00HF00H14700H14700H段地址左移段地
19、址左移4 4位位加上偏移地址加上偏移地址得到物理地址得到物理地址22228088的內(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 DI通用通用寄存器寄存器地址地址加法加法器器指令隊(duì)列指令隊(duì)列(8086/6字節(jié))字節(jié))執(zhí)行部件執(zhí)行部件 (EU)總線接口部件總線接口部件 (BIU)AXBXCXDX段段與與指指針針寄寄存存器器234.各個(gè)邏輯段的使用n程序中的指令序列存放在代碼段n程序使用的堆棧在堆
20、棧段n程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段24n沒(méi)有指明時(shí),一般的數(shù)據(jù)訪問(wèn)在數(shù)據(jù)段;若使用BP訪主存,則在堆棧段n其它情況通過(guò)段超越前綴指令指明;nMOV AX,2000H;AXDS:2000H;從默認(rèn)的數(shù)據(jù)段取數(shù)據(jù)n采用段超越前綴的指令實(shí)例: MOV AX,ES:2000H;AXES:2000H;從指定的附加段取數(shù)據(jù)實(shí)際上數(shù)據(jù)的存放比較靈活,可以存放在任何一種邏輯段中,但需要指明255.段寄存器的用途段寄存器用來(lái)存放段的起始地址nCS寄存器存放代碼段的段地址n處理器利用CS:IP取得下一條要執(zhí)行的指令nSS寄存器存放堆棧段的段地址n處理器利用S
21、S:SP操作棧頂?shù)臄?shù)據(jù)26nDS寄存器存放數(shù)據(jù)段的段地址n偏移地址(有效地址EA)由各種不同的主存尋址方式得到,如MOV AL,BX,源操作數(shù)據(jù)有效地址為BX的值,再如MOV AL,SI+1000H,源操作數(shù)據(jù)有效地址為SI值加上1000H獲得n處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)27nES存放附加段的段地址n有效地址EA也是由各種不同的主存尋址方式得到n處理器利用ES:EA存取附加段中的數(shù)據(jù)28段寄存器的使用規(guī)定DIDI無(wú)無(wú)ESES串操作的目的操作數(shù)串操作的目的操作數(shù)SISICS ES SSCS ES SSDSDS串操作的源操作數(shù)串操作的源操作數(shù)有效地址有效地址EAEACS ES DSCS
22、 ES DSSSSSBPBP基址的尋址方式基址的尋址方式有效地址有效地址EAEACS ES SSCS ES SSDSDS一般數(shù)據(jù)訪問(wèn)一般數(shù)據(jù)訪問(wèn)SPSP無(wú)無(wú)SSSS堆棧操作堆棧操作IPIP無(wú)無(wú)CSCS取指令取指令偏移地址偏移地址可超越可超越默認(rèn)默認(rèn)訪問(wèn)存儲(chǔ)器的方式訪問(wèn)存儲(chǔ)器的方式292.2 8088/80862.2 8088/8086的尋址方式的尋址方式n指令由操作碼和操作數(shù)兩部分組成;n操作碼說(shuō)明要執(zhí)行哪種操作,如傳送、運(yùn)算、跳轉(zhuǎn)等操作;n操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象,指令中的操作數(shù)是廣義操作數(shù);n通常的指令都有一個(gè)或兩個(gè)操作數(shù),有些指令還不需要操作數(shù);30n指令系統(tǒng)設(shè)計(jì)了多種
23、操作數(shù)的來(lái)源;n可以是一個(gè)具體的數(shù)值n可以是存放數(shù)據(jù)的寄存器n可以是數(shù)據(jù)在存儲(chǔ)單元的地址或端口地址n尋找操作數(shù)的過(guò)程就是操作數(shù)的尋址,不同的操作數(shù)來(lái)源對(duì)應(yīng)不同的尋址方式n同一種數(shù)據(jù)來(lái)源也可有多種尋址方式;n不同的尋址方式執(zhí)行速度和效率不同,要合理選擇使用指令的尋址方式?指令的尋址方式?311.立即尋址方式立即尋址方式n操作數(shù)直接存放在指令代碼中,緊跟在操作碼之后,這種操作數(shù)被稱為立即數(shù)immn它可以是8位數(shù)值i8(00H-FFH)n也可以是16位數(shù)值i16(0000H-FFFFH)n立即數(shù)尋址方式常用來(lái)給寄存器賦值MOV AL,05H;AL05HMOV AX,0102H;AX0102Hn雙操作
24、數(shù)指令的源操作數(shù)和目的操作數(shù)可采用不同的尋址方式322.寄存器尋址方式寄存器尋址方式n操作數(shù)存放在CPU的內(nèi)部寄存器reg中:n8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DLn16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SPn4個(gè)段寄存器seg:CS、DS、SS、ES例:將例:將2 2和和 5 5相加相加MOV MOV ALAL,02H,02HMOV MOV BLBL,05H,05HADDADD AL,BLAL,BL另解:另解:MOV MOV ALAL,02H,02HADDADD ALAL,05H,05H333.存儲(chǔ)器尋址方式存儲(chǔ)器尋址方式n指令中給出操作數(shù)的
25、主存地址信息(有效地址EA),而段地址在默認(rèn)的或用段超越前綴指定的段寄存器中n有多種存儲(chǔ)器尋址方式1)直接尋址方式2)寄存器間接尋址方式3)寄存器相對(duì)尋址方式4)基址變址尋址方式5)相對(duì)基址變址尋址方式341)直接尋址方式)直接尋址方式n有效地址在指令中直接給出n默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOV AX,2000H;AXDS:2000HMOV AX,ES:2000H;AXES:2000H注 意 : 編 程 時(shí) 使 用 的 是 符 號(hào) 地 址 , 如MOV AX,DATA;DATA是表示單元地址352)寄存器間接尋址方式)寄存器間接尋址方式n有效地址存放在基址寄存器BX或變址
26、寄存器SI、DI中n默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變MOV AX,SI;AXDS:SIADD ES:BX,AX ; AXES:BX+ AX363)寄存器相對(duì)尋址方式)寄存器相對(duì)尋址方式n有效地址是寄存器內(nèi)容與有符號(hào)8位或16位位移量之和,寄存器可以是BX/BP或SI/DI有效地址BX/BP/SI/DI8/16位位移量n段地址對(duì)應(yīng)BX/SI/DI寄存器默認(rèn)在DS,對(duì)應(yīng)BP寄存器默認(rèn)在SS;可用段超越前綴 MOV AX,DI+06H ;AXDS:DI+06H MOV AX,BP+06H ;AXSS:BP+06H374)基址變址尋址方式)基址變址尋址方式n有效地址由基址寄存器(BX或
27、BP)的內(nèi)容加上變址寄存器(SI或DI)的內(nèi)容構(gòu)成:有效地址BX/BPSI/DIn段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴MOV AX,BX+SI ;AXDS:BX+SIMOV AX,BP+DI ;AXSS:BP+DI MOV AX,DS:BP+SI ;AXDS:BP+SI385)相對(duì)基址變址尋址方式)相對(duì)基址變址尋址方式n有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個(gè)8位或16位位移量之和:有效地址BX/BPSI/DI8/16位位移量n段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是DS,對(duì)應(yīng)BP基址寄存器默認(rèn)是SS;可用段超越前綴MOV AX,BX
28、+SI+06H;AXDS:BX+SI+06H39尋址方式的多種表示方式尋址方式的多種表示方式n位移量可用符號(hào)表示:位移量可用符號(hào)表示: MOV AX,SI+COUNTMOV AX,SI+COUNT ;COUNTCOUNT是事先定義的變量或常量(就是數(shù)值)是事先定義的變量或常量(就是數(shù)值) MOV AX,BX+SI+WNUMMOV AX,BX+SI+WNUM ;WNUMWNUM是變量或常量是變量或常量n同一尋址方式可以寫(xiě)成不同的形式:同一尋址方式可以寫(xiě)成不同的形式: MOV AX,BXSIMOV AX,BXSI ;MOV AX,BX+SIMOV AX,BX+SI MOV AX,COUNTSI M
29、OV AX,COUNTSI ;MOV AX,SI+COUNTMOV AX,SI+COUNT MOV AX,WNUMBXSI MOV AX,WNUMBXSI;等同于;等同于 MOV AX,WNUMBX+SIMOV AX,WNUMBX+SI;等同于;等同于 MOV AX,BX+SI+WNUMMOV AX,BX+SI+WNUM40第三章內(nèi)容提前:匯編語(yǔ)言程序格式第三章內(nèi)容提前:匯編語(yǔ)言程序格式1、完整段定義格式2、簡(jiǎn)化段定義格式(MASM 5.0開(kāi)始支持)3、匯編語(yǔ)言的開(kāi)發(fā)過(guò)程411.1.完整段匯編語(yǔ)言源程序格式完整段匯編語(yǔ)言源程序格式n匯編語(yǔ)言源程序由段組成,可包含代碼段、數(shù)據(jù)段、附加段或堆棧段n
30、段與段之間的順序可隨意排列,也可重疊n需獨(dú)立運(yùn)行的程序必須包含一個(gè)代碼段,并指出程序執(zhí)行的起始點(diǎn),一個(gè)程序只有一個(gè)起始點(diǎn)n所有的可執(zhí)行性語(yǔ)句必須位于某一個(gè)代碼段內(nèi),說(shuō)明性語(yǔ)句可根據(jù)需要位于任一段內(nèi)42n匯編語(yǔ)言完整段定義格式(不區(qū)分大小寫(xiě))ssegsegment stack ;定義堆棧段;定義堆棧段stpdb 100 dup(0) ssegends ;dseg segment ;定義數(shù)據(jù)段;定義數(shù)據(jù)段dtb db 20h,10hsum db 0hdsegendscseg segment;定義代碼段;定義代碼段Assume cs:cseg,ds:dseg,ss:sseg;建立段與段寄存器對(duì)應(yīng)關(guān)系
31、;建立段與段寄存器對(duì)應(yīng)關(guān)系Start: mov ax,dseg;程序起始;程序起始mov ds,ax;置;置ds為用戶定義的數(shù)據(jù)段為用戶定義的數(shù)據(jù)段mov ax,ssegmov ss,ax ;置;置ss為用戶定義的堆棧段為用戶定義的堆棧段mov sp,size stpmov al,dtb;al=20hadd al,dtb+1 ;al=20h+10hmov sum,almov ah,4chint 21h;DOS調(diào)用,程序結(jié)束返回調(diào)用,程序結(jié)束返回DOScsegendsend start;匯編結(jié)束,生成的目標(biāo)程序從匯編結(jié)束,生成的目標(biāo)程序從start開(kāi)始運(yùn)行開(kāi)始運(yùn)行431)匯編語(yǔ)言組成n段結(jié)構(gòu)(S
32、egment/Ends)代碼段,數(shù)據(jù)段,堆棧段,附加段n每段由若干語(yǔ)句行組成n每個(gè)語(yǔ)句可以是機(jī)器指令(執(zhí)行性語(yǔ)句)或是偽指令(說(shuō)明性語(yǔ)句)n機(jī)器指令:機(jī)器指令系統(tǒng)中任一條,匯編后生成目標(biāo)碼n偽指令:為匯編程序服務(wù),匯編時(shí)由匯編程序解釋處理,不生成目標(biāo)碼 442)匯編語(yǔ)言語(yǔ)句格式n機(jī)器指令格式n標(biāo)號(hào)標(biāo)號(hào): : 指令助記符指令助記符 操作數(shù)操作數(shù), ,操作數(shù)操作數(shù) ; ;注釋注釋n例如:例如: mov al,80h;mov al,80h;為為ALAL賦值賦值 agin: dec alagin: dec al;AL=AL-1AL=AL-1 jnz agin jnz agin ;結(jié)果不為;結(jié)果不為0
33、0轉(zhuǎn)到轉(zhuǎn)到aginagin執(zhí)行執(zhí)行 n偽指令格式n名字名字 偽指令助記符偽指令助記符 參數(shù)參數(shù), ,參數(shù)參數(shù), ,; ;注釋注釋n例:例:data db 80h,90h;data db 80h,90h;從從datadata開(kāi)始定義兩字節(jié)單元,開(kāi)始定義兩字節(jié)單元,分別為分別為80H80H和和90H90H mov al,data mov al,data;AL=80HAL=80H mov bl,data+1 mov bl,data+1;BL=90HBL=90H45n標(biāo)號(hào)和名字是用戶自定義的符合匯編語(yǔ)言語(yǔ)法的標(biāo)識(shí)符n名字指向一條偽指令,標(biāo)號(hào)指向一條硬指令n標(biāo)識(shí)符一般最多由31個(gè)字母、數(shù)字及規(guī)定的特殊符
34、號(hào)(如 _、$、?、)組成,不能以數(shù)字開(kāi)頭。默認(rèn)情況下,匯編程序不區(qū)別標(biāo)識(shí)符中的字母大小寫(xiě)n一個(gè)源程序中,每個(gè)標(biāo)識(shí)符的定義是唯一的,且不能取匯編語(yǔ)言中的保留字注:教材中將注:教材中將“標(biāo)號(hào)標(biāo)號(hào)”和和“名字名字”區(qū)分開(kāi)來(lái),區(qū)分開(kāi)來(lái),實(shí)際使用中除了實(shí)際使用中除了“名字名字”后無(wú)冒號(hào)其它沒(méi)區(qū)別后無(wú)冒號(hào)其它沒(méi)區(qū)別463)保留字n保留字(也稱為關(guān)鍵字),主要有:n硬指令助記符例如:MOV、ADDn偽指令助記符例如:DB、DWn操作符例如:OFFSET、PTRn寄存器名例如:AX、CSn預(yù)定義符號(hào)例如:data474)標(biāo)號(hào)作用)標(biāo)號(hào)作用用來(lái)表示數(shù)據(jù)、數(shù)據(jù)在內(nèi)存的偏移地址、指令代碼在內(nèi)存中的偏移地址。dse
35、g segment dseg segment ;定義數(shù)據(jù)段;定義數(shù)據(jù)段dtb db 20h,10hdtb db 20h,10hsum db ?sum db ?dsegdsegendsendsmov al,dtbmov al,dtb;al=20hal=20hadd al,dtb+1;al=20h+10hadd al,dtb+1;al=20h+10hmov sum,al;mov sum,al;將將alal值存入值存入sumsum單元單元48標(biāo)號(hào)三種屬性:段屬性、偏移量屬性、類型屬性n 段屬性:名字和標(biāo)號(hào)對(duì)應(yīng)存儲(chǔ)單元的段地址n 偏移量屬性:名字和標(biāo)號(hào)對(duì)應(yīng)存儲(chǔ)單元的地址偏移值n 類型屬性:可以是BYT
36、E、WORD和DWORD等dseg segment dseg segment ;定義數(shù)據(jù)段;定義數(shù)據(jù)段DSDSdtb db 20h,10hdtb db 20h,10h;dtbdtb位于位于DSDS段,字節(jié)屬性段,字節(jié)屬性sum db ?sum db ?dsegdsegendsendsmov al,dtbmov al,dtb;將;將DSDS段中段中dtbdtb單元單元中的內(nèi)容送給中的內(nèi)容送給alaladd al,dtb+1;ALadd al,dtb+1;AL與與DSDS段中段中dtb+1dtb+1單元相加再送回單元相加再送回alalmov sum,al;mov sum,al;將將alal值存入值
37、存入DSDS段段sumsum單元單元如果將如果將dtb db 20h,10hdtb db 20h,10h改為改為dtb dw 20h,10h?dtb dw 20h,10h? 49段屬性值可用SEG算符得到;偏移量屬性值可用OFFSET算符得到;類型屬性有7種類型:BYTE(1)、WORD(2)、DWORD(4)、QWORD(8)、TBYTE(10)、FAR(-2)、NEAR(-1) 。(括號(hào)內(nèi)為對(duì)應(yīng)的類型值)屬性值可用TYPE算符得到。標(biāo)號(hào)屬性獲得方法50dtb db 20h,10hdata dw 10h,20hsumb db ?sumw dw ?mov bx,seg dtb;取取dtb段地址
38、段地址mov ds,bxmov bx,offset dtb;取取dtb偏移量偏移量mov al,bx;al=ds:bx=20hadd al,dtb+1;al=al+ds:(dtb+1)=20h+10hmov sum,al; ds:sum=almov ax,data;用用 mov al,data則類型不匹配則類型不匹配add ax,data+1mov sumw,ax標(biāo)號(hào)屬性應(yīng)用舉例51通過(guò)類型屬性轉(zhuǎn)移操作符可以改變標(biāo)號(hào)類型屬性通過(guò)類型屬性轉(zhuǎn)移操作符可以改變標(biāo)號(hào)類型屬性 指令格式:指令格式:類型名類型名 PTR PTR 名字名字/ /標(biāo)號(hào)標(biāo)號(hào); ; 使用舉例:使用舉例:data dw 1234hd
39、ata dw 1234hsum db 00hsum db 00hmov al,byte ptr datamov al,byte ptr datamov ah,byte ptr data+1mov ah,byte ptr data+1add al,ahadd al,ahmov sum,al mov sum,al 522.2.匯編語(yǔ)言簡(jiǎn)化段定義格式匯編語(yǔ)言簡(jiǎn)化段定義格式(MASM 5.0MASM 5.0開(kāi)始支持)開(kāi)始支持).model small ;定義程序的存儲(chǔ)模式.stack ;定義堆棧段.data ;定義數(shù)據(jù)段.code;定義代碼段Start: mov ax,data;程序起始mov ds,
40、ax;置ds為用戶定義的數(shù)據(jù)段mov ah,4chint 21h;程序結(jié)束,返回DOSend start;匯編結(jié)束,生成的目標(biāo)程序從start開(kāi)始運(yùn)行53完整段定義格式與簡(jiǎn)化格式比較完整段定義格式與簡(jiǎn)化格式比較n完整段定義利用SEGMENT和ENDS一對(duì)偽指令定義邏輯段n需要ASSUME偽指令配合指明邏輯段是代碼段、堆棧段、數(shù)據(jù)段還是附加段n完整段定義的優(yōu)勢(shì)是可以指明邏輯段的定位、組合、類別等屬性;而簡(jiǎn)化段定義只能采用系統(tǒng)默認(rèn)的屬性n完整段定義和簡(jiǎn)化段定義的實(shí)質(zhì)是一致的543 3、匯編語(yǔ)言程序開(kāi)發(fā)過(guò)程、匯編語(yǔ)言程序開(kāi)發(fā)過(guò)程1 1)編輯,使用文本編輯軟件,生成)編輯,使用文本編輯軟件,生成.as
41、m.asm文件文件2 2)匯編,)匯編,MASM 5.0MASM 5.0以上或其它匯編環(huán)境,將以上或其它匯編環(huán)境,將asmasm文件匯編成文件匯編成objobj文件文件3 3)鏈接,)鏈接,Link.exeLink.exe將將objobj文件鏈接成文件鏈接成exeexe文件文件4 4)執(zhí)行,運(yùn)行)執(zhí)行,運(yùn)行exeexe文件文件5 5)調(diào)試程序)調(diào)試程序DEBUGDEBUG55匯編語(yǔ)言程序的開(kāi)發(fā)過(guò)程編輯編輯文本編輯器,如文本編輯器,如 EDIT.COM源程序:文件名源程序:文件名.asm匯編匯編匯編程序,如匯編程序,如 MASM.EXE目標(biāo)模塊:文件名目標(biāo)模塊:文件名.obj連接連接連接程序,如連接程序,如 LINK.EXE可執(zhí)行文件:文件名可執(zhí)行文件:文件名.exe調(diào)試調(diào)試調(diào)試程序,如調(diào)試程序,如 DEBUG.EXE應(yīng)用程序應(yīng)用程序錯(cuò)誤錯(cuò)誤錯(cuò)誤錯(cuò)誤錯(cuò)誤錯(cuò)誤錯(cuò)誤錯(cuò)誤56源程序的匯編(源程序的匯編(MASM 5.xMASM 5.x)nDOS窗口輸入:MASM n071.a
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年項(xiàng)目的學(xué)習(xí)與發(fā)展策略試題及答案
- 其實(shí)你能行心理健康教育
- 口腔頜面部瘤樣病變
- 粘土手工房子制作課程
- 行政管理與公共關(guān)系整合試題及答案
- 理解技術(shù)進(jìn)步的經(jīng)濟(jì)學(xué)影響試題及答案
- 工程經(jīng)濟(jì)考試的綜合能力培養(yǎng)法試題及答案
- 稅務(wù)繳納與合規(guī)證明書(shū)(8篇)
- 2025年工程項(xiàng)目管理實(shí)施方案試題及答案
- 水利水電工程行業(yè)形勢(shì)分析試題及答案
- 專利授權(quán)書(shū)模板
- 測(cè)溫儀及測(cè)振儀的原理及使用 課件
- 船舶操縱與避碰智慧樹(shù)知到期末考試答案2024年
- 防范電信網(wǎng)絡(luò)詐騙宣傳通用課件
- 食品加工肉類行業(yè)食品安全培訓(xùn)
- 公司酒后駕車(chē)管理制度
- 重慶中煙考試題庫(kù)2024
- 臨終關(guān)懷課件
- 文印設(shè)備維修維護(hù)服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 醫(yī)院行政部主任年度工作總結(jié)
- 悅納自我向陽(yáng)而生心理健康教育主題班會(huì)課件
評(píng)論
0/150
提交評(píng)論