匯編語言知識點_第1頁
匯編語言知識點_第2頁
匯編語言知識點_第3頁
匯編語言知識點_第4頁
匯編語言知識點_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第一章十進(jìn)制與二進(jìn)制之間的轉(zhuǎn)換(P2)降冪法除法十進(jìn)制與六進(jìn)制之間的轉(zhuǎn)換(P5)降冪法除法補(bǔ)碼表示:正數(shù):采用符號絕對值法 負(fù)數(shù):先寫出對應(yīng)的正數(shù)的補(bǔ)碼表示,然后再將其按位數(shù)求反,最后末尾加1,就可以得到負(fù)數(shù)的補(bǔ)碼表示補(bǔ)嗎運(yùn)算:二進(jìn)制數(shù)按位求反后在末尾加1第二章一、 存儲容量1K = 1024 =210 (Kilo) 1M =1024K = 220 (Mega) 1G = 1024M = 230 (Giga)1個二進(jìn)制位:bit (比特) 8個二進(jìn)制位:Byte(字節(jié)) 1Byte = 8bit2個字節(jié):1 Word (字) 1Word = 2Byte = 16bit二、 存儲單元地址和內(nèi)容1

2、存儲器以字節(jié)(8 bit)為編程單位2每個字節(jié)單元都有唯一的地址編碼3地址用無符號整數(shù)來表示(編程用十六進(jìn)制表示)4一個字要占用相繼的兩個字節(jié)5低位字節(jié)存入低地址,高位字節(jié)存入高地址6字單元地址用它的低地址來表示7機(jī)器以偶地址訪問(讀 / 寫)存儲器三、 物理地址 = 16 ´ 段地址 + 偏移地址四、 存儲器的分段:20 根地址線:地址范圍 00000H FFFFFH (1MB)機(jī)器字長16位:僅能表示地址范圍 0000H FFFFH(64KB)小段:每16個字節(jié)為一小段,共有64K個小段段起始地址:小段首地址段的大?。?64K 范圍內(nèi)的任意字節(jié)五、 存儲器的邏輯分段優(yōu)點: 允許程

3、序在存儲器內(nèi)重定位;允許實模式程序在保護(hù)模式下運(yùn)行;有利于程序和數(shù)據(jù)的分離。六、 中央處理器 8086/8088寄存器組:通用寄存器數(shù)據(jù)寄存器:AX,BX,CX,DX變址寄存器:SI、DI 指針寄存器:SP、BP控制寄存器: IP、FLAGS段寄存器:CS、DS、SS、ES七、 標(biāo)志寄存器 ( FLAGS / PSW )條件標(biāo)志位: OF 溢出標(biāo)志 SF符號標(biāo)志 ZF 零標(biāo)志 CF 進(jìn)位標(biāo)志 AF 輔助進(jìn)位標(biāo)志 PF奇偶標(biāo)志控制標(biāo)志位: DF 方向標(biāo)志 IF中斷標(biāo)志 TF 陷阱標(biāo)志八、 寄存器與存儲器的比較:寄存器:在CPU內(nèi)部 ;訪問速度快;容量小,成本高;用名字表示;沒用地址存儲器:在CP

4、U外部;訪問速度慢;容量大,成本低;用地址表示;地址可用各種方式形成第三章尋址方式操作數(shù)所在位置物理地址(PA)格式注意1.立即尋址存儲器的代碼段無MOV AL, 5只能用源操作數(shù)操作數(shù)和源操作數(shù)的長度一致2.寄存器尋址寄存器(唯一)無MOV AX, BX字節(jié)寄存器只有AH AL BH BL CH CL DH DL CS 不能用 MOV 指令改變,源操作數(shù)和目的操作數(shù)的字長一致3.直接尋址存儲器段地址+位移量MOV AX,ES:2000HMOV AX,VALUEMOV AX,2000H默認(rèn)的段地址存儲在DS中遇到BP的段地址存儲在SS可以使用段跨越前綴4.寄存器間接尋址存儲器段地址+基址/變址

5、MOV AX,BXMOV AX,ES:BX可用的寄存器:BX BP SI DI不允許使用AX、CX、DX 存放偏移地址(EA)SRC 和 DST 的字長一致 使用BP時,默認(rèn)的數(shù)據(jù)段是SS,其余都是DS5.寄存器相對尋址存儲器段地址+基址/變址+位移量MOV AX,COUSIMOV AX,ES:COU+SI MOV AX,COU+SI可以使用段跨越前綴6.基址變址尋址存儲器段地址+基址+變址MOV AX,BX+SIMOV AX,BXSI可以使用段跨越前綴7.相對基址變址存儲器段地址+基址+變址+位移量MOV AX,MASKBXSIMOV AX.MASKBX+SI可以使用段跨越前綴九、 數(shù)據(jù)傳送

6、指令傳送指令 MOV CPU內(nèi)部寄存器之間的數(shù)據(jù)傳送指令格式:MOV DST, SRC 執(zhí)行操作:(DST) ¬ (SRC)注意: *DST、SRC 不能同時為段寄存器 MOV DS, ES ´ * DST、SRC 不能同時為存儲單元 *立即數(shù)不能直接送段寄存器 MOV DS, 2000H ´ * DST 不能是立即數(shù)和CS *不影響標(biāo)志位交換指令 XCHG指令格式:XCHG OPR1, OPR2 執(zhí)行操作:(OPR1) « (OPR2)例:XCHG BX, BP+SI XCHG AL, BH注意: * 兩個操作數(shù)字長一致 * 兩個操作數(shù)都不能是段寄存器

7、 * 兩個操作數(shù)都不能是立即數(shù) * 兩個操作數(shù)不能同時是存儲單元 * 可以采用除立即尋址方式外的任何一種尋址方式。 * 不影響標(biāo)志位地址傳送指令 LEA、LDS、LES 1.有效地址送寄存器指令: LEA REG, SRC 執(zhí)行操作: (REG) ¬ SRC2.指針?biāo)图拇嫫骱虳S指令:LDS REG, SRC 執(zhí)行操作: (REG) ¬ (SRC)(DS) ¬ (SRC+2) 相繼二字 ® 寄存器、DS3.指針?biāo)图拇嫫骱虴S指令: LES REG, SRC 執(zhí)行操作: (REG) ¬ (SRC)(ES) ¬ (SRC+2) 相繼二字

8、® 寄存器、ES 注意: * 源操作數(shù)必須為存儲器操作數(shù) * 目的操作數(shù)必須是一個16位通用寄存器,不能是段寄存器 * 源操作數(shù)可以是除立即尋址和寄存器尋址以外的任意一種尋址方式 * 不影響標(biāo)志位堆棧操作指令 PUSH、POP1.進(jìn)棧指令: PUSH SRC執(zhí)行操作: (SP) ¬ (SP) 2 ( (SP)+1, (SP) ) ¬ (SRC)出棧指令: POP DST執(zhí)行操作: (DST) ¬ ( (SP)+1, (SP) ) (SP) ¬ (SP) + 2堆棧:先進(jìn)后出的存儲區(qū),段地址存放在SS中,SP在任何時候都指向棧頂,進(jìn)出棧后自動修改

9、SP。注意: * 堆棧操作必須以字為單位。 * 不影響標(biāo)志位 * 不能用立即尋址方式 PUSH 1234H ´ * DST不能是CS POP CS ´堆棧的用途:臨時保存寄存器的內(nèi)容。PUSH AXPUSH BXPUSH CX ;其間用到AX、BX、CXPOP CX ; 后進(jìn)先出POP BXPOP AX標(biāo)志操作指令 LAHF、SAHF、PUSHF、POPF 、CLC、STC、CMC、CLD、STD、LI、STI標(biāo)志傳送指令: 1.標(biāo)志送AH指令: LAHF 執(zhí)行操作: (AH) ¬ (FLAGS的低字節(jié))2.AH送標(biāo)志寄存器指令:SAHF 執(zhí)行操作: (FLAGS

10、的低字節(jié)) ¬ (AH)注意: * LAHF不影響標(biāo)志位 * SAHF影響CF、PF、AF、ZF、SF標(biāo)志進(jìn)棧指令: PUSHF 執(zhí)行操作:(SP) ¬ (SP) - 2 ( (SP)+1, (SP) ) ¬ (FLAGS)標(biāo)志出棧指令: POPF執(zhí)行操作:(FLAGS) ¬ ( (SP)+1, (SP) ) (SP) ¬ (SP) + 2注意:PUSHF和POPF經(jīng)常一起聯(lián)用,完成保護(hù)、維護(hù)標(biāo)志寄存器的內(nèi)容或改變標(biāo)志位的值。標(biāo)志位操作指令:清進(jìn)位標(biāo)志指令CLC CF 0置進(jìn)位標(biāo)志指令 STC CF 1進(jìn)位標(biāo)志取反指令CMC CF CF清方向標(biāo)

11、志指令CLD DF 0置方向標(biāo)志指令STD DF 1清中斷允許標(biāo)志指令 CLI IF 0 置中斷允許標(biāo)志指令 STI IF 1 注意: * 只影響本指令指定的標(biāo)志十、 加減法指令:加法指令:ADD DST, SRC 執(zhí)行操作: (DST) ¬ (SRC) + (DST)帶進(jìn)位加法指令: ADC DST, SRC 執(zhí)行操作: (DST) ¬ (SRC) + (DST) + CF加1指令: INC OPR 執(zhí)行操作: (OPR) ¬ (OPR) + 1注意: * 除INC指令不影響CF標(biāo)志外,均對狀態(tài)標(biāo)志位有影響。各加法指令對條件標(biāo)志位的影響:SF=1,結(jié)果為負(fù) ZF

12、=1,結(jié)果為0 CF=1,和的最高有效位有向高位的進(jìn)位OF=1,兩個操作數(shù)符號相同,而結(jié)果符號與之相反CF 位表示 無符號數(shù) 相加的溢出。OF 位表示 帶符號數(shù) 相加的溢出。減法指令: SUB DST, SRC 執(zhí)行操作: (DST) ¬ (DST) - (SRC)帶借位減法指令: SBB DST, SRC 執(zhí)行操作: (DST) ¬ (DST) - (SRC) - CF減1指令: DEC OPR 執(zhí)行操作: (OPR) ¬ (OPR) - 1求補(bǔ)指令: NEG OPR 執(zhí)行操作: (OPR) ¬ - (OPR)比較指令: CMP OPR1, OPR2

13、執(zhí)行操作: (OPR1) - (OPR2)各減法指令對條件標(biāo)志位(CF/OF/ZF/SF)的影響:CF=1,被減數(shù)的最高有效位有向高位的借位 或 CF=1減數(shù)轉(zhuǎn)換為加法運(yùn)算時無進(jìn)位OF=1 兩個操作數(shù)符號相反,而結(jié)果的符號與減數(shù)相同CF 位表示 無符號數(shù) 減法的溢出。OF 位表示 帶符號數(shù) 減法的溢出。NEG 指令對CF/OF的影響CF=0,操作數(shù)為0 OF=1,操作數(shù)為-128(字節(jié)運(yùn)算)或-32727(字運(yùn)算十一、 乘除運(yùn)算指令無符號數(shù)乘法指令: MUL SRC 帶符號數(shù)乘法指令: IMUL SRC執(zhí)行操作:字節(jié)操作數(shù) (AX) ¬ (AL) * (SRC) 字操作數(shù) (DX,

14、AX) ¬ (AX) * (SRC)注意: * 目的操作數(shù)必須是累加器 * AL (AX) 為隱含的乘數(shù)寄存器。 * AX (DX,AX) 為隱含的乘積寄存器。 * SRC不能為立即數(shù)。 * 除CF和OF外,對條件標(biāo)志位無乘法指令對 CF/OF 的影響:MUL指令: CF,OF =00乘積的高一半為零 11否則IMUL指令: CF,OF =00乘積的高一半是低一半的符號擴(kuò)展 11否則例:(AX) = 16A5H,(BX) = 0611H(1) MUL BX ; (DX, AX) ¬ (AX) * (BX) ; 16A5*0611=0089 5EF5 ; (DX)=0089H

15、 (AX)=5EF5H CF=OF=1(2) IMUL BL ; (AX) ¬ (AL) * (BL) ; A5*11 Þ 5B*11=060B Þ F9F5 ; (AX) = 0F9F5H CF=OF=1無符號數(shù)除法指令: DIV SRC帶符號數(shù)除法指令: IDIV SRC執(zhí)行操作:字節(jié)操作 (AL) ¬ (AX) / (SRC) 的商 (AH) ¬ (AX) / (SRC) 的余數(shù) 字操作 (AX) ¬ (DX, AX) / (SRC) 的商 (DX) ¬ (DX, AX) / (SRC) 的余數(shù)注意: * AX (DX

16、,AX) 為隱含的被除數(shù)寄存器。 * AL (AX) 為隱含的商寄存器。 * AH (DX) 為隱含的余數(shù)寄存器。 * SRC不能為立即數(shù)。 * 對所有條件標(biāo)志位均無定義。十二、 類型轉(zhuǎn)換指令CBW AL ® AX執(zhí)行操作: 若(AL)的最高有效位為0,則(AH)= 00H,若(AL)的最高有效位為1,則(AH)= FFHCWD AX ® (DX,AX)執(zhí)行操作:若(AX)的最高有效位為0,則(DX)= 0000H,若(AX)的最高有效位為1,則(DX)= FFFFH例:(AX) = 0BA45HCBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)

17、=0BA45H注意: * 無操作數(shù)指令 * 隱含對AL 或AX 進(jìn)行符號擴(kuò)展* 不影響條件標(biāo)志位十三、 邏輯運(yùn)算指令邏輯非指令:NOT OPR * OPR不能為立即數(shù)執(zhí)行操作: (OPR) ¬ (OPR) * 不影響標(biāo)志位 CFOFSFZFPFAF00*無定義邏輯與指令:AND DST, SRC 執(zhí)行操作: (DST) ¬ (DST) Ù (SRC)邏輯或指令:OR DST, SRC 執(zhí)行操作: (DST) ¬ (DST) Ú (SRC)異或指令: XOR DST, SRC 執(zhí)行操作: (DST) ¬ (DST) " (SR

18、C)測試指令: TEST OPR1, OPR2 執(zhí)行操作: (OPR1) Ù (OPR2) 十四、 移位指令邏輯左移 SHL OPR, CNT 邏輯右移 SHR OPR, CNT 算術(shù)左移 SAL OPR, CNT(同邏輯左移) 算術(shù)右移 SAR OPR, CNT 循環(huán)左移 ROL OPR, CNT 循環(huán)右移 ROR OPR, CNT 帶進(jìn)位循環(huán)左移 RCL OPR, CNT 帶進(jìn)位循環(huán)右移 RCR OPR, CNT 注意: * OPR可用除立即數(shù)以外的任何尋址方式 * CNT=1, SHL OPR, 1 CNT>1,MOV CL, CNT SHL OPR, CL ; 以SHL

19、為例 * 條件標(biāo)志位:CF = 移入的數(shù)值 1 CNT=1時,最高有效位的值發(fā)生變化 0 CNT=1時,最高有效位的值不變移位指令: SF、ZF、PF 根據(jù)移位結(jié)果設(shè)置,AF無定義循環(huán)移位指令:不影響 SF、ZF、PF、AF十五、 控制轉(zhuǎn)移指令:· 無條件轉(zhuǎn)移指令 JMP· 條件轉(zhuǎn)移指令JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、JLE / JNLE、 JCXZ · 循環(huán)指令 LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE &

20、#183; 子程序調(diào)用和返回指令 CALL、RET· 中斷與中斷返回指令 INT、INTO、IRET十六、 與轉(zhuǎn)移地址有關(guān)的尋址方式:用來確定轉(zhuǎn)移指令及轉(zhuǎn)子指令的轉(zhuǎn)向地址段內(nèi)尋址 段內(nèi)直接尋址 JMP NEAR PTR NEXT 段內(nèi)間接尋址 JMP TABLE BX 段間尋址 段間直接尋址 JMP FAR PTR NEXT 段間間接尋址 JMP DWORD PTR BX 無條件轉(zhuǎn)移指令:段內(nèi)直接短轉(zhuǎn)移:JMP SHORT OPR 執(zhí)行操作:(IP) (IP) + 8位位移量段內(nèi)直接近轉(zhuǎn)移:JMP NEAR PTR OPR 執(zhí)行操作:(IP) (IP) + 16位位移量段內(nèi)間接轉(zhuǎn)移:

21、 JMP WORD PTR OPR 執(zhí)行操作:(IP) (EA)段間直接遠(yuǎn)轉(zhuǎn)移:JMP FAR PTR OPR 執(zhí)行操作:(IP) OPR 的段內(nèi)偏移地址 (CS) OPR 所在段的段地址段間間接轉(zhuǎn)移:JMP DWORD PTR OPR 執(zhí)行操作:(IP) (EA) (CS) (EA+2)注意: * 不影響標(biāo)志位十七、 條件轉(zhuǎn)移指令注意: * 只能使用段內(nèi)直接尋址的8 位位移量 * 不影響標(biāo)志位(1) 根據(jù)單個條件標(biāo)志的設(shè)置情況轉(zhuǎn)移 格式 測試條件JZ(JE) OPR ZF = 1JNZ(JNE) OPR ZF = 0JS OPR SF = 1JNS OPR SF = 0JO OPR OF =

22、 1JNO OPR OF = 0JP OPR PF = 1JNP OPR PF = 0JC OPR CF = 1JNC OPR CF = 0(2) 比較兩個無符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移 格式 測試條件 JB (JNAE,JC) OPR CF = 1 JNB (JAE,JNC) OPR CF = 0 JBE (JNA) OPR CFZF = 1 JNBE (JA) OPR CFZF = 0* 適用于地址或雙精度數(shù)低位字的比較(3) 比較兩個帶符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移 * 適用于帶符號數(shù)的比較 格式 測試條件 JL (JNGE) OPR SF"OF = 1 JNL (JGE) OPR

23、SF"OF = 0 JLE (JNG) OPR (SF"OF)ZF = 1 JNLE (JG) OPR (SF"OF)ZF = 0 (4) 測試 CX 的值為 0 則轉(zhuǎn)移 格式 測試條件 JCXZ OPR (CX)=0十八、 循環(huán)指令注意: * CX 中存放循環(huán)次數(shù)* 只能使用段內(nèi)直接尋址的8 位位移量 * 不影響標(biāo)志位LOOPLOOPZ / LOOPELOOPNZ / LOOPNE執(zhí)行步驟: (1) (CX) (CX) 1 (2)檢查是否滿足測試條件,如滿足則 (IP) (IP) + 8位位移量,實行循環(huán); 不滿足則 IP 不變,退出循環(huán)循環(huán)指令:LOOP OP

24、R測試條件:(CX) ¹ 0為零或相等時循環(huán)指令:LOOPZ(LOOPE) OPR測試條件:ZF=1 且 (CX) ¹ 0不為零或不相等時循環(huán)指令:LOOPNZ(LOOPNE) OPR測試條件:ZF=0 且 (CX) ¹ 0十九、 例:求首地址為 ARRAY 的 M 個字之和,結(jié)果存入 TOTALMOV CX, MMOV AX, 0MOV SI, AXAGAIN: ADD AX, ARRAYSIADD SI, 2LOOP AGAINMOV TOTAL, AX二十、 串處理指令· 串處理指令 · 串重復(fù)前綴 LODSB / LODSW REP S

25、TOSB / STOSW REPE / REPZ MOVSB / MOVSW REPNE / REPNZ SCASB / SCASW CMPSB / CMPSWLODS 從串取指令: LODS SRC LODSB (字節(jié)) LODSW (字)執(zhí)行操作: 字節(jié)操作:(AL)(SI), (SI)(SI)±1 字操作:(AX)(SI), (SI)(SI)±2注意: * LODS 指令一般不與 REP 聯(lián)用 * 源串一般在數(shù)據(jù)段中(允許使用段跨越前綴來修改), 目的串必須在附加段中 * 不影響條件標(biāo)志位STOS 存入串指令:STOS DSTSTOSB (字節(jié))STOSW (字)執(zhí)行

26、操作: 字節(jié)操作:(DI)(AL), (DI)(DI)±1 字操作:(DI)(AX), (DI)(DI)±2MOVS 串傳送指令:MOVS DST, SRCMOVSB (字節(jié))MOVSW (字)例:MOVS ES: BYTE PTR DI, DS: SI執(zhí)行操作:(1) (DI) (SI) (2) 字節(jié)操作:(SI)(SI)±1, (DI)(DI)±1 字操作: (SI)(SI)±2, (DI)(DI)±2 方向標(biāo)志 DF=0 時用 + ,DF=1 時用 - 。SCAS 串掃描指令: SCAS DST SCASB (字節(jié)) SCASW

27、 (字)執(zhí)行操作: 字節(jié)操作:(AL) - (DI), (DI)(DI)±1 字操作:(AX) - (DI), (DI)(DI)±2CMPS 串比較指令: CMPS SRC, DSTCMPSB (字節(jié))CMPSW (字)執(zhí)行操作: (1) (SI) - (DI)根據(jù)比較結(jié)果置條件標(biāo)志位:相等 ZF=1;不等 ZF=0 (2) 字節(jié)操作:(SI)(SI)±1, (DI)(DI)±1 字操作: (SI)(SI)±2, (DI)(DI)±2REP (與 MOVS / STOS配合工作)執(zhí)行操作:(1) 如 (CX)=0 則退出 REP,否則

28、轉(zhuǎn)(2) (2) (CX) ¬ (CX) -1 (3) 執(zhí)行 MOVS / STOS / LODS (4) 重復(fù) (1) (3)REP MOVS:將數(shù)據(jù)段中的整串?dāng)?shù)據(jù)傳送到附加段中。源串(數(shù)據(jù)段) 目的串(附加段)執(zhí)行 REP MOVS 之前,應(yīng)先做好:(1) 源串首地址(末地址) SI(2) 目的串首地址(末地址) DI(3) 串長度 CX(4) 建立方向標(biāo)志 ( CLD 使 DF=0,STD 使 DF=1 ) REPE / REPZ REPNE / REPNZ (與CMPS 和 SCAS配合工作)執(zhí)行操作: (1) 如 (CX)=0 或 ZF=0 (ZF=1) 則退出串操作,否則

29、轉(zhuǎn)(2) (2) (CX)(CX) -1 (3) 執(zhí)行 CMPS / SCAS (4) 重復(fù) (1) (3)例:從一個字符串中查找一個指定的字符mess db COMPUTERlea di, mess mov al, T mov cx, 8 cld repne scasb例:比較兩個字符串,找出它們不相匹配的位置lea si, mess1lea di, mess2mov cx, 8cldrepe cmpsb例:反向傳送lea si, mess1+7lea di, mess2+7mov cx, 8STdrep movsb第四章二十一、 標(biāo)號和變量(1)標(biāo)號和變量都是標(biāo)識符。標(biāo)識符組成:字母 az

30、 ,數(shù)字 09,專用字符 ? . _ $標(biāo)識符的組成規(guī)則:最大長度為31,第一個字符不能是數(shù)字,不區(qū)分字母的大小寫,不能是匯編語言的保留字(2)標(biāo)號和變量的異同:不同:標(biāo)號:用于匯編指令語句中,以冒號結(jié)束,在代碼段中定義,經(jīng)常在轉(zhuǎn)移指令或call指令變量:用于偽指令語句中,不允許有冒號,在數(shù)據(jù)段或附加段中定義,經(jīng)常在操作數(shù)字段出現(xiàn)相同:都有三種屬性:段屬性、偏移屬性、類型屬性二十二、 偽操作是匯編程序?qū)υ闯绦蜻M(jìn)行匯編時處理的操作,完成處理器選擇、存儲模式定義、數(shù)據(jù)定義、存儲器分配、指示程序開始結(jié)束等功能。處理器選擇偽操作 段定義偽操作程序開始和結(jié)束偽操作 數(shù)據(jù)定義及存儲器分配偽操作表達(dá)式賦值偽

31、操作 地址計數(shù)器與對準(zhǔn)偽操作基數(shù)控制偽操作二十三、 段定義偽操作data segment ; 定義數(shù)據(jù)段 data ends;-extra segment ; 定義附加段 extra ends;-code segment ; 定義代碼段 assume cs:code, ds:data, es:extrastart: mov ax, data mov ds, ax ; 段地址 ® 段寄存器 code ends end start說明:語句序列段假定偽指令A(yù)SSUME格式: ASSUME 段寄存器名:段名(這里只是一種指明,段寄存器的實際值,必須在程序中使用傳送指令來賦值,cs除外)二十

32、四、數(shù)據(jù)定義及存儲器分配偽操作: 變量 助記符 操作數(shù) , 操作數(shù) , ; 注釋 助記符:DB DW DD DF DQ DT例:DATA_BYTE DB 10,4,10H,?DATA_WORD DW 100,100H,-5,?LABEL 偽操作: name LABEL type例:BYTE_ARRAY LABEL BYTE WORD_ARRAY DW 50 DUP (?) tos LABEL WORD表達(dá)式名 EQU 表達(dá)式ALPHA EQU 9BETA EQU ALPHA+18BB EQU BP+8說明:1、AB EQU DATA_ONE+2 (表達(dá)式中的標(biāo)號和變量要先定義,例如: DATA

33、_ONE) 2、 “ = ” 偽操作 (允許重復(fù)定義) EMP = 7 EMP = EMP+1 數(shù)值回送操作符: OFFSET、SEG、TYPE、 LENGTH、SIZE OFFSET / SEG 變量 / 標(biāo)號功能:回送變量或標(biāo)號的偏址 / 段址TYPE 變量 / 標(biāo)號 / 常數(shù)DBDWDDDFDQDTNEARFAR常數(shù)1246810-1-20LENGTH 變量功能:回送由DUP定義的變量的單元數(shù),其它情況回送1SIZE 變量功能:LENGTH * TYPE例:ARRAY DW 100 DUP (?)TABLE DB ABCDADD SI, TYPE ARRAY ; ADD SI, 2ADD

34、 SI, TYPE TABLE ; ADD SI, 1MOV CX, LENGTH ARRAY ; MOV CX, 100MOV CX, LENGTH TABLE ; MOV CX, 1MOV CX, SIZE ARRAY ; MOV CX, 200MOV CX, SIZE TABLE ; MOV CX, 1屬性操作符: PTR、段操作符、SHORT、 THIS、HIGH、LOW類型 PTR 表達(dá)式 MOV WORD PTR BX, 5段操作符 MOV ES: BX, ALSHORT 標(biāo)號 JMP SHORT NEXTTHIS 類型 TA EQU THIS BYTE TD DW 1234H N

35、EXT EQU THIS FAR MOV AX,2HIGH和LOW CONS EQU 1234H MOV AH, HIGH CONS MOV AL, LOW CONS 第五章二十五、 分支程序設(shè)計(1) 條件控制(2) 邏輯尺控制(3) 地址跳躍表(值與地址有對應(yīng)關(guān)系的表)第六章二十六、 CALL 調(diào)用指令段內(nèi)直接近調(diào)用:CALL DST執(zhí)行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (IP) + 16位位移量段內(nèi)間接近調(diào)用:CALL DST執(zhí)行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (EA)段間直接遠(yuǎn)

36、調(diào)用:CALL DST執(zhí)行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (CS) (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) 偏移地址 (CS) 段地址段間間接遠(yuǎn)調(diào)用:CALL DST執(zhí)行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (CS) (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (EA) (CS) (EA+2)RET 返回指令段內(nèi)近返回:RET執(zhí)行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2段內(nèi)帶立即數(shù)近返回:RET EXP段間遠(yuǎn)返回:RE

37、T執(zhí)行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2 (CS) ( (SP)+1,(SP) ) (SP) (SP) + 2段間帶立即數(shù)遠(yuǎn)返回:RET EXP二十七、 過程定義偽操作 過程名 PROC NEAR ( FAR ) 過程名 ENDP(1)NEAR屬性:調(diào)用程序和子程序在同一代碼段中(段內(nèi)調(diào)用)(2)FAR屬性:調(diào)用程序和子程序不在同一代碼段中(段間調(diào)用)二十八、 子程序調(diào)用與返回子程序調(diào)用:隱含使用堆棧保存返回地址call near ptr subp (1) 保存返回地址 (2) 轉(zhuǎn)子程序call far ptr subp (1) 保存返回地址 (2) 轉(zhuǎn)子程序子程序返回:ret二十九、 保存與恢復(fù)寄存器subt proc far push ax push bx push cx push dx pop dx pop cx pop bx pop ax retsubt endp三十、 子程序參數(shù)傳遞(1) 通過寄存器傳送參數(shù)(2) 通過存儲器傳送參數(shù)(3) 通過地址表傳送參數(shù)地址(4) 通過堆棧傳送參

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論