版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2 運(yùn)算符運(yùn)算符 格格 式式 運(yùn)運(yùn) 算算 + +表達(dá)式表達(dá)式 取表達(dá)式正值取表達(dá)式正值 - -表達(dá)式表達(dá)式 取表達(dá)式負(fù)值取表達(dá)式負(fù)值 + 表達(dá)式表達(dá)式1+表達(dá)式表達(dá)式2 求表達(dá)式求表達(dá)式1、表達(dá)式、表達(dá)式2之和之和 - 表達(dá)式表達(dá)式1-表達(dá)式表達(dá)式2 求表達(dá)式求表達(dá)式1、表達(dá)式、表達(dá)式2之差之差 * 表達(dá)式表達(dá)式1*表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式1、表達(dá)式、表達(dá)式2之積之積 / 表達(dá)式表達(dá)式1/表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式1、表達(dá)式、表達(dá)式2之商之商 MOD 表達(dá)式表達(dá)式1 MOD 表達(dá)式表達(dá)式2 取余數(shù)取余數(shù) 說(shuō)明:說(shuō)明:1、算術(shù)運(yùn)算符可用于數(shù)值表達(dá)式或地址表達(dá)式、算術(shù)運(yùn)算符可用于數(shù)值表達(dá)式或
2、地址表達(dá)式2、用于地址表達(dá)式時(shí),只有其結(jié)果有物理意義時(shí)才有效、用于地址表達(dá)式時(shí),只有其結(jié)果有物理意義時(shí)才有效 常用的是:常用的是:3(1) 雙目雙目 MOV AL, 8+4 ;MOV AX, 0CH (000CH 16位)位)相當(dāng)于相當(dāng)于 MOV BL, 08H MOV CL, 04H ADD BL, CL MOV AL, BL(2) 單目單目MOV AX,-4;-4補(bǔ)碼補(bǔ)碼 100H-04H 相當(dāng)于相當(dāng)于 MOV AX, 0FCH MOV AX, 0FFCH (16位)位) 算術(shù)運(yùn)算符示例算術(shù)運(yùn)算符示例4 運(yùn)算符運(yùn)算符 格格 式式 運(yùn)運(yùn) 算算 NOT NOT 表達(dá)式表達(dá)式 按位取反按位取反
3、AND 表達(dá)式表達(dá)式1 AND 表達(dá)式表達(dá)式2 按位按位“與與”運(yùn)算運(yùn)算 OR 表達(dá)式表達(dá)式1 OR 表達(dá)式表達(dá)式2 按位按位“或或”運(yùn)算運(yùn)算 XOR 表達(dá)式表達(dá)式1 XOR 表達(dá)式表達(dá)式2 按位按位“異或異或”運(yùn)算運(yùn)算 邏輯運(yùn)算指令邏輯運(yùn)算指令 邏輯運(yùn)算符邏輯運(yùn)算符出現(xiàn)在語(yǔ)句的位置出現(xiàn)在語(yǔ)句的位置 指令助記符指令助記符 操作數(shù)字段操作數(shù)字段操作對(duì)象操作對(duì)象 可以是寄存器或可以是寄存器或 只能是整型常數(shù)只能是整型常數(shù) 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)何時(shí)計(jì)算何時(shí)計(jì)算 程序運(yùn)行時(shí)程序運(yùn)行時(shí) 源程序匯編時(shí)源程序匯編時(shí)5 運(yùn)算符運(yùn)算符 運(yùn)運(yùn) 算算 SHL 左移左移 SHR 右移右移 算術(shù)移位例. 算術(shù)左移C
4、F0101101010CF0011010101邏輯左移CFCF101101010CF10110101117運(yùn)算符運(yùn)算符 格格 式式 運(yùn)運(yùn) 算算 EQ 表達(dá)式表達(dá)式1 EQ 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式1=表達(dá)式表達(dá)式2為真為真 NE 表達(dá)式表達(dá)式1 NE 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2為真為真 LT 表達(dá)式表達(dá)式1 LT 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2為真為真 LE 表達(dá)式表達(dá)式1 LE 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式1表達(dá)式表達(dá)式2為真為真 GE 表達(dá)式表達(dá)式1 GE 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式1=表達(dá)式表達(dá)式2為真為真 關(guān)系運(yùn)算符的兩個(gè)操作數(shù)必須都是常量或同一段
5、內(nèi)的關(guān)系運(yùn)算符的兩個(gè)操作數(shù)必須都是常量或同一段內(nèi)的符號(hào)地址,比較結(jié)果為邏輯值:符號(hào)地址,比較結(jié)果為邏輯值:8邏輯運(yùn)算符示例邏輯運(yùn)算符示例 MOV AH, ;0FH-AH MOV CH, ;保留最后一位;保留最后一位-CH(AND 常用置零,常用置零,OR 常用于置常用于置1)關(guān)系運(yùn)算符示例關(guān)系運(yùn)算符示例 N1 EQU 10 N2 EQU 20 . MOV BX, ; 0-BX MOV CX, ;0FFFFH-CX MOV AX, ;0FFFFH-AX MOV DI, ;0-DI9 數(shù)值回送運(yùn)算符對(duì)變量或標(biāo)號(hào)進(jìn)行分析,數(shù)值回送運(yùn)算符對(duì)變量或標(biāo)號(hào)進(jìn)行分析,回送其地址屬性值或變量特征值?;厮推涞刂穼?/p>
6、性值或變量特征值。1. 地址回送操作符地址回送操作符返回的是變量或標(biāo)號(hào)的段地址段地址,偏移偏移地址地址及類(lèi)型類(lèi)型的屬性值。格式格式:分析操作符分析操作符 變量或標(biāo)號(hào)變量或標(biāo)號(hào)其運(yùn)算的結(jié)果為一常數(shù)(1) SEG取段址算符取段址算符(2) OFFSET取偏移地址算符取偏移地址算符功能功能:分離出該變量或標(biāo)號(hào)的段址 如:MOV AX, SEG BUF功能功能:分離出該變量或標(biāo)號(hào)的偏移地址 如:MOV SI, OFFSET BUF12 符號(hào)符號(hào) 作用對(duì)象作用對(duì)象 操操 作作 SEG 變量或標(biāo)號(hào)變量或標(biāo)號(hào) 返回其所在段的段基址值返回其所在段的段基址值OFFSET 變量或標(biāo)號(hào)變量或標(biāo)號(hào) 返回其在段內(nèi)返回其
7、在段內(nèi)的偏移量的偏移量 SEG: 標(biāo)號(hào)標(biāo)號(hào) CS ,變量變量 DS地址:地址: SEG10H+ OFFSET(3) TYPE取類(lèi)型算符取類(lèi)型算符(4) LENGTH取變量所含存儲(chǔ)單元的個(gè)數(shù)取變量所含存儲(chǔ)單元的個(gè)數(shù)功能功能:分離出該變量所含存儲(chǔ)單元的個(gè)數(shù)。功能功能:分離出該變量的字節(jié)數(shù)或標(biāo)號(hào)的類(lèi)型。(5) SIZE取變量所含存儲(chǔ)區(qū)的總字節(jié)數(shù)。取變量所含存儲(chǔ)區(qū)的總字節(jié)數(shù)。功能功能: SIZE=LENGTH*TYPE 14 類(lèi)型屬性類(lèi)型屬性 運(yùn)算結(jié)果運(yùn)算結(jié)果變量變量 DB 1 DW 2 DD 4 DQ 8 DT 10標(biāo)號(hào)標(biāo)號(hào) NEAR -1 FAR -215 符號(hào)符號(hào) 作用對(duì)象作用對(duì)象 操操 作作
8、TYPE 變量或標(biāo)號(hào)變量或標(biāo)號(hào) 用數(shù)字表示其類(lèi)型屬性用數(shù)字表示其類(lèi)型屬性 LENGTH 變量變量 用用DUP重復(fù)定義符定義的變量重復(fù)定義符定義的變量 ,返回分配的元素個(gè)數(shù);其他,返回分配的元素個(gè)數(shù);其他 形式,則返回形式,則返回1 SIZE 變量變量 回送回送LENGTH*TYPE之積之積 格式格式: 類(lèi)型類(lèi)型 PTR 表達(dá)式表達(dá)式類(lèi)型類(lèi)型:表達(dá)式表達(dá)式:是變量、標(biāo)號(hào)或數(shù)值:是變量、標(biāo)號(hào)或數(shù)值 變量的類(lèi)型有:變量的類(lèi)型有:BYTE、WORD和和DWORD; 標(biāo)號(hào)的類(lèi)型有:標(biāo)號(hào)的類(lèi)型有:NEAR和和FAR; 結(jié)構(gòu)名稱(chēng)結(jié)構(gòu)名稱(chēng)屬性修改操作符(屬性修改操作符(PTR、THIS、SHORT) ( 也稱(chēng)
9、合成操作符號(hào)也稱(chēng)合成操作符號(hào))1. PTR操作符操作符 PTR操作符用于暫時(shí)暫時(shí)修改變量或標(biāo)號(hào)的原有屬性。 功能功能:PTR把它左邊的屬性指派給它右邊的變量、標(biāo)號(hào)或數(shù)值,使之產(chǎn)生一個(gè)新的存儲(chǔ)器地址操作數(shù)。如:(1) INC BYTE PTR BX (2) ADD DX, WORD PTR FOOB20 新存儲(chǔ)器操作數(shù)的段地址和段內(nèi)偏移量與PTR運(yùn)算符右邊的操作數(shù)的對(duì)應(yīng)量相同。 PTR給已分配的存儲(chǔ)器一個(gè)另外的定義但并不重新分配存儲(chǔ)器。2. SHORT操作符操作符SHORT用于條件轉(zhuǎn)移、轉(zhuǎn)移和調(diào)用指令中,說(shuō)明標(biāo)號(hào)為短標(biāo)號(hào)。 3. THIS操作符操作符 THIS操作符與PTR操作符有類(lèi)似的功能,但
10、新的屬性放在THIS的右邊右邊。 格式:格式: THIS 類(lèi)型類(lèi)型/距離距離其中類(lèi)型是BYTE、WORD和DWORD,距離是NEAR和FAR屬性。功能功能:與PTR類(lèi)似建立一個(gè)新的存儲(chǔ)器地址操作數(shù),但不分配存儲(chǔ)器,其類(lèi)型由THIS指定。(1) FOOB EQU THIS BYTE (2) FAR-OUT EQU THIS FAR如:20優(yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符運(yùn)算符 類(lèi)類(lèi) 別別 1 LENGTH,SIZE 數(shù)值回送運(yùn)算符數(shù)值回送運(yùn)算符 2 PTR,OFFSET,SEG,TYPE, 屬性與數(shù)值回送運(yùn)算符屬性與數(shù)值回送運(yùn)算符 3 +,- 符號(hào)運(yùn)算符符號(hào)運(yùn)算符 4 *,/,MOD,SHL,SHR 算術(shù)運(yùn)
11、算算術(shù)運(yùn)算,移位運(yùn)算符移位運(yùn)算符 5 +,- 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 6 EQ,NE,LT,LE,GT,GE 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 7 NOT 邏輯運(yùn)算符邏輯運(yùn)算符 8 AND 邏輯運(yùn)算符邏輯運(yùn)算符 9 OR,XOR 邏輯運(yùn)算符邏輯運(yùn)算符 說(shuō)明:優(yōu)先級(jí)說(shuō)明:優(yōu)先級(jí)1最高,而優(yōu)先級(jí)最高,而優(yōu)先級(jí)9最低最低 圓括號(hào)()可改變執(zhí)行順序圓括號(hào)()可改變執(zhí)行順序表達(dá)式表達(dá)式:由運(yùn)算符運(yùn)算符連接起來(lái)的式子叫表達(dá)式,按一定的規(guī)則對(duì)表達(dá)式進(jìn)行運(yùn)算后得到一個(gè)數(shù)值或一個(gè)地址。 表達(dá)式可分為算術(shù)表達(dá)式算術(shù)表達(dá)式、邏輯表達(dá)式邏輯表達(dá)式、關(guān)關(guān)系運(yùn)算表達(dá)式系運(yùn)算表達(dá)式、分析運(yùn)算表達(dá)式分析運(yùn)算表達(dá)式和合成運(yùn)算合成運(yùn)算表達(dá)式。
12、表達(dá)式。用算術(shù)運(yùn)算符+、-、*、/和MOD連接的表達(dá)式。 算術(shù)表達(dá)式算術(shù)表達(dá)式用邏輯運(yùn)算符AND、OR、XOR和NOT連接的表達(dá)式。 邏輯表達(dá)式邏輯表達(dá)式例如:例如:5 5* *8+308+30, 128/100128/100,206 MOD 128 206 MOD 128 等算術(shù)等算術(shù)表達(dá)式。表達(dá)式。 邏輯表達(dá)式的結(jié)果可能為邏輯表達(dá)式的結(jié)果可能為8 8位或位或1616位二進(jìn)制位二進(jìn)制數(shù),視參加運(yùn)算的數(shù)的字長(zhǎng)而定。數(shù),視參加運(yùn)算的數(shù)的字長(zhǎng)而定。 邏輯運(yùn)算指令中可以包含有邏輯表達(dá)式,如邏輯運(yùn)算指令中可以包含有邏輯表達(dá)式,如指令指令 AND AL, 10101010B AND 0FH 左邊第一個(gè)左
13、邊第一個(gè)AND為邏輯運(yùn)算指令,第二個(gè)為邏輯運(yùn)算指令,第二個(gè)AND為邏輯運(yùn)算符,為邏輯運(yùn)算符,10101010B AND 0FH 為為邏輯表達(dá)式,其結(jié)果在匯編時(shí)即已確定,為邏輯表達(dá)式,其結(jié)果在匯編時(shí)即已確定,為00001010B,故上述指令等價(jià)于故上述指令等價(jià)于 AND AL, 00001010B用EQ、NE、LT、GT、GE和LE連接的表達(dá)式。若條件成立,其值為11,否則為0。 關(guān)系運(yùn)算表達(dá)式關(guān)系運(yùn)算表達(dá)式例如:指令例如:指令 MOV BX, 5 GT 3 等價(jià)于等價(jià)于 MOV BX, 0FFFFH 多種運(yùn)算符常結(jié)合起來(lái)使用多種運(yùn)算符常結(jié)合起來(lái)使用, ,有優(yōu)先級(jí)有優(yōu)先級(jí)( (教材教材:P70)
14、:P70)例如: ADD AX, (port GT 60) AND 50) OR (port LE 60) AND 70) 分析運(yùn)算表達(dá)式和合成運(yùn)算表達(dá)式分析運(yùn)算表達(dá)式把存儲(chǔ)器操作數(shù)分析運(yùn)算表達(dá)式把存儲(chǔ)器操作數(shù)分解分解為幾個(gè)為幾個(gè)部分部分,如分解出如分解出: 段值、偏移量、類(lèi)型等;段值、偏移量、類(lèi)型等; 合成運(yùn)算表達(dá)式則把這些組成部分合成運(yùn)算表達(dá)式則把這些組成部分綜合綜合為存為存儲(chǔ)器操作數(shù)。儲(chǔ)器操作數(shù)。分析運(yùn)算表達(dá)式和合成運(yùn)算表達(dá)式的操作對(duì)象都為分析運(yùn)算表達(dá)式和合成運(yùn)算表達(dá)式的操作對(duì)象都為存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)。 存儲(chǔ)器操作數(shù)表示變量、符號(hào)地址、存儲(chǔ)單元存儲(chǔ)器操作數(shù)表示變量、符號(hào)地址、存儲(chǔ)單
15、元等等, ,與存儲(chǔ)器與存儲(chǔ)器地址地址有關(guān)。有關(guān)。 例如, MOV BX, OFFSET ASC OFFSET ASC 即為分析運(yùn)算表達(dá)式,其作用: 取存儲(chǔ)器操作數(shù)(變量)ASC的地址偏移量, 若變量ASC的偏移地址為0001H, 即OFFSET ASC=0001H。該指令等價(jià)于MOV BX, 0001H 匯編語(yǔ)言程序的上機(jī)過(guò)程匯編語(yǔ)言程序的上機(jī)過(guò)程 1 1 匯編語(yǔ)言程序上機(jī)運(yùn)行的軟件環(huán)境匯編語(yǔ)言程序上機(jī)運(yùn)行的軟件環(huán)境 DOS操作系統(tǒng)下,編輯、修改和運(yùn)行匯編語(yǔ)言程序,需要用文本編輯軟件、宏匯編程序、連接程序和調(diào)試程序。 文本編輯軟件:EDIT.EXE等 宏匯編程序:MASM.EXE,TASM.E
16、XE等 連接程序:LINK.EXE,TLINK.EXE等 調(diào)試程序:CV.EXE,TD.EXE等 2 源程序的編輯與匯編源程序的編輯與匯編1. 編輯源程序編輯源程序 C:ASMEDIT HEXTOASC.ASM(回車(chē))(回車(chē)) 2. 匯編源程序匯編源程序 C:ASMTASM HEXTOASC (回車(chē))(回車(chē)) 在匯編中,如果有語(yǔ)法錯(cuò)誤,會(huì)給出提示信息,指出錯(cuò)誤的類(lèi)型、行號(hào)。當(dāng)匯編無(wú)錯(cuò)之后,會(huì)自動(dòng)生成目標(biāo)文件(文件擴(kuò)展名為OBJ)。注:待編輯的文件擴(kuò)展名必須為 ASM。匯編程序通過(guò)ASSUME語(yǔ)句了解到運(yùn)行時(shí)各段寄存器的設(shè)定值后,就可以對(duì)被匯編的指令語(yǔ)句中的變量和標(biāo)號(hào)作如下處理。3. 匯編程序?qū)?/p>
17、變量和標(biāo)號(hào)的處理匯編程序?qū)ψ兞亢蜆?biāo)號(hào)的處理 1. 檢查指令中所引用的變量和標(biāo)號(hào)是否合理,即它們的段屬性是否和某個(gè)段寄存器的段假設(shè)值相符。2. 檢查是否需要為所引用的變量和標(biāo)號(hào)產(chǎn)生跨段前綴字節(jié),即檢查變量和標(biāo)號(hào)的段屬性是否與硬件為該指令所規(guī)定的段寄存器的假設(shè)值相符。3 目標(biāo)程序的連接目標(biāo)程序的連接 C:ASMTLINK HEXTOASC (回車(chē))(回車(chē))連接成功后,將生成可執(zhí)行程序HEXTOASC.EXE。4 程序的調(diào)試與運(yùn)行程序的調(diào)試與運(yùn)行 1調(diào)試可執(zhí)行程序調(diào)試可執(zhí)行程序 利用Turbo Debuger(TD)對(duì)可執(zhí)行程序進(jìn)行調(diào)試,以檢查程序可能存在的各種錯(cuò)誤: C:ASMTD HEXTOAS
18、C.EXE (回車(chē))(回車(chē))2運(yùn)行可執(zhí)行程序運(yùn)行可執(zhí)行程序 C:ASMHEXTOASC (回車(chē))(回車(chē))匯編語(yǔ)言的語(yǔ)句格式匯編語(yǔ)言的語(yǔ)句格式(Statement Formats)(Statement Formats) 匯編語(yǔ)言程序的每行語(yǔ)句由匯編語(yǔ)言程序的每行語(yǔ)句由14個(gè)部分組成。個(gè)部分組成。指令語(yǔ)句和偽指令語(yǔ)句在格式上稍有區(qū)別,指令語(yǔ)句和偽指令語(yǔ)句在格式上稍有區(qū)別,指令指令語(yǔ)句的標(biāo)號(hào)后有冒號(hào)語(yǔ)句的標(biāo)號(hào)后有冒號(hào)“:”,而,而偽指令偽指令語(yǔ)句的標(biāo)語(yǔ)句的標(biāo)號(hào)后則沒(méi)有冒號(hào)。號(hào)后則沒(méi)有冒號(hào)。 指令語(yǔ)句的格式為指令語(yǔ)句的格式為 LABEL: OPERATION OPERAND ;COMMENT 標(biāo)號(hào)域標(biāo)
19、號(hào)域 指令助記符域指令助記符域 操作數(shù)域操作數(shù)域 注釋域注釋域偽指令語(yǔ)句的格式為偽指令語(yǔ)句的格式為 LABEL OPERATION OPERAND ;COMMENT 標(biāo)號(hào)域標(biāo)號(hào)域 偽指令助記符域偽指令助記符域 操作數(shù)域操作數(shù)域 注釋域注釋域 一行最多可有一行最多可有132132個(gè)字符個(gè)字符 注注: 指令助記符前面還可以有指令助記符前面還可以有 前綴前綴 。 匯編語(yǔ)言程序語(yǔ)句中的四項(xiàng),均可以用匯編語(yǔ)言程序語(yǔ)句中的四項(xiàng),均可以用大寫(xiě)大寫(xiě)、小寫(xiě)小寫(xiě)或或混合編寫(xiě)混合編寫(xiě)。 語(yǔ)句的各部分之間至少用一個(gè)語(yǔ)句的各部分之間至少用一個(gè)空格空格分開(kāi)分開(kāi) 匯編語(yǔ)言源程序的組成匯編語(yǔ)言源程序的組成 匯編語(yǔ)言源程序的結(jié)
20、構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu)(Program Structure) (Program Structure) 數(shù)據(jù)段數(shù)據(jù)段 說(shuō)明:說(shuō)明: 堆棧段堆棧段 1、各段順序無(wú)關(guān)、各段順序無(wú)關(guān) 2、除代碼段外,可缺省、除代碼段外,可缺省 3、可有若干個(gè)數(shù)據(jù)段,、可有若干個(gè)數(shù)據(jù)段, 若干代碼段若干代碼段 代碼段代碼段 END 標(biāo)號(hào)標(biāo)號(hào) 附加段附加段源程序結(jié)構(gòu)概覽簡(jiǎn)化段定義完整段定義P71匯編語(yǔ)言源程序由匯編語(yǔ)言源程序由段結(jié)構(gòu)段結(jié)構(gòu)組成。組成。一個(gè)段一個(gè)段由由 “SEGMENTSEGMENT”(段定義開(kāi)始段定義開(kāi)始)和和“ENDSENDS”(段定義結(jié)束段定義結(jié)束)語(yǔ)句來(lái)定義語(yǔ)句來(lái)定義。每個(gè)段都有每個(gè)段都有唯一的唯一
21、的段名段名,前后一致。,前后一致。不同不同段段的段名不能相同。的段名不能相同。數(shù)據(jù)段、堆棧段和代碼段的作用各不相同數(shù)據(jù)段、堆棧段和代碼段的作用各不相同。各個(gè)段都由一系列各個(gè)段都由一系列語(yǔ)句語(yǔ)句組成組成。 語(yǔ)句包括語(yǔ)句包括指令指令語(yǔ)句和語(yǔ)句和偽指令偽指令語(yǔ)句語(yǔ)句。通用指令集通用指令集8086指令按功能分為六大類(lèi)。指令按功能分為六大類(lèi)。8086指令系統(tǒng)數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令串操作指令程序控制指令CPU控制指令一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令能夠完成下列操作數(shù)的傳送任務(wù)。立即數(shù)存儲(chǔ)器段寄存器CS,DS,ES,SS通用寄存器組AX,BX,CX,DXBP,SP,SI,DI(CS
22、不能作目的)(1) MOV d, s功能功能:將源操作數(shù)s復(fù)制到目標(biāo)操作數(shù)d,源保持不變,目標(biāo)被源代替。注注: d, s不能同時(shí)為存儲(chǔ)器錯(cuò)誤指令:MOV BX,SI d不能為立即數(shù) 錯(cuò)誤指令:MOV 1234H,AX d, s必須同時(shí)為字節(jié)型或字型錯(cuò)誤指令:MOV AX,BL 指令后的分號(hào)“;”以后為注釋部分,對(duì)指令的執(zhí)行沒(méi)有任何影響,主要是便于閱讀或解釋指令的功能。例例:MOV AX,0 ; AX0,AX清0 執(zhí)行后,AX=0MOV SI,BP ; SIBP,BP內(nèi)容送SI 執(zhí)行后,SI=BP,BP不變不變MOV AL,BUFFERS ;BUFFERS內(nèi)存單元內(nèi)容送入AL這里,BUFFERS
23、代表符號(hào)地址符號(hào)地址,從該地址單元中取出內(nèi)容送AL寄存器。相當(dāng)于直接尋址方式。相當(dāng)于直接尋址方式。EA=BUFFERS偏移量偏移量3030HBUFFERSALMOV AX,DATA SI+BXEA=SI+BX+DATA,在數(shù)據(jù)段中尋找字單元,取出該字單元的內(nèi)容送入AX。設(shè)DS=3000H,SI=200H,BX=1000H,DATA的偏移量為100H,則EA=SI+BX+DATA=200H+1000H+100H=1300H物理地址=DS16+EA=30000H+1300H=31300H 即從31300H和31301H兩單元中取出內(nèi)容送AX。DS1630000H123434H12HAXAH ALE
24、A=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BX(2) PUSH s;SP2 SP, 源 操 作 數(shù)源 操 作 數(shù) 壓 入 堆 棧堆 棧 保 存POP d;SP所指堆棧所指堆棧的內(nèi)容內(nèi)容送目 標(biāo), SP+2 SP例:PUSH BX;把BX內(nèi)容壓入堆棧設(shè) SS=2000H,SP=0040H,BX=2340H則執(zhí)行后,2340H被保存到堆棧,同時(shí)SP=003EH,BX內(nèi)容不變SS1620000HSP=0040H(初值初值)20040H2003EH4023SP=003EH(壓棧后壓棧后)XX23 40BX注注:s和d只能為16位寄存器或存儲(chǔ)器錯(cuò)誤指令:
25、PUSH 1234HPOP AL(3) XCHG d, s ;交換源和目標(biāo)操作數(shù)注注:d=通用寄存器s=通用寄存器或存儲(chǔ)器例:XCHG AX,SI+400H執(zhí)行后,5678H被送到內(nèi)存單元AX=1234H3412SI+400H5678AH ALAX34127856(4) XLAT ;查表轉(zhuǎn)換 注注:a. 表首相對(duì)于段起始地址的偏移量預(yù)先送入BX中;b. 待查找的表內(nèi)表內(nèi)某單元相對(duì)于表首的偏移偏移量量送入AL中;c. 以EA=BX+AL在表中(數(shù)據(jù)段)查找,將查得的數(shù)據(jù)再送回AL中。例例:設(shè)表首的偏移地址為2000H,要查找表內(nèi)第4號(hào)單元 (從0號(hào)算起)的內(nèi)容并送回AL,則程序段如下:MOV B
26、X,2000HMOV AL,04HXLAT設(shè)表中內(nèi)容如下頁(yè)圖所示, 則執(zhí)行后,AL=09H 18H34H05H06H09H2000HBX 04HAL(表首)TABLE DS1604 AL09 對(duì)于任一個(gè)存儲(chǔ)器操作數(shù),由段地址和偏移地址確定了它們?cè)诖鎯?chǔ)器中的位置。目標(biāo)地址傳送指令就用于獲得存儲(chǔ)器操作數(shù)的段地址或偏移地址。(1) LEA d, s功能功能:取存儲(chǔ)器源操作數(shù)有效地址有效地址送入目標(biāo)dd=通用寄存器 例:LEA BX,COUNTER; 取COUNTER地址偏移量BX 若COUNTER地址偏移量為0002H,則執(zhí)行后BX=0002H(2) LDS d, s功能功能:裝入地址指針,段地址D
27、S,偏移地址d這條指令往往改變了段寄存器段寄存器DS的內(nèi)容,使得DS指向了另外一個(gè)數(shù)據(jù)段。例例:LDS SI,BASE設(shè)執(zhí)行前,DS=1000H,SI=0000H,BASE偏移地址為0004H,10004H10007H單元內(nèi)容依次為00H,30H,00H,20H,則執(zhí)行后,DS=2000H,SI=3000H003000200004HSI=3000H原DS所指向的數(shù)據(jù)段新DS所指向的數(shù)據(jù)段1000H1610000HDS BASE30002000SIDS2000H1620000HDS (3) LES d, s功能功能:裝入地址指針,段地址 ES,偏移地址d(1) LAHF功能功能:將標(biāo)志寄存器低低
28、8位位裝入AH寄存器 SF ZFAFPFCFFR70 AH(2) SAHF功能功能:把AH的內(nèi)容送入標(biāo)志寄存器的低低8位位。(3) PUSHF功能功能:把16位的標(biāo)志寄存器壓入堆棧堆棧保存,同時(shí)SP2SP。 (4) POPF功能功能:將當(dāng)前當(dāng)前SP所指內(nèi)容(2字節(jié))彈出至標(biāo)志寄存器標(biāo)志寄存器,同時(shí)SP+2SP。 功能:從指定端口輸入數(shù)據(jù)至累加器acc (AL或AX) ,port=0255 (1) IN acc, portAH ALacc端口port 16位數(shù)據(jù)時(shí) (2) IN acc, DX功能功能:從DX指示的端口輸入數(shù)據(jù)至累加器acc , DX=065535(3) OUT port, ac
29、c功能:將累加器的數(shù)據(jù)輸出至指定端口。(4) OUT DX,acc功能功能:將累加器的數(shù)據(jù)輸出到DX所指示的端口。注注: 16位端口地址必須送入DX中。 若采用AX,則表示16位數(shù)據(jù)傳送(輸入/輸出)(4) 換碼指令XLAT功能功能:該指令通過(guò)AL和BX寄存器進(jìn)行表格查找,將8位數(shù)裝入AL中。它完成的操作為:AL BX+AL,XLAT指令常用于查表操作,即BX寄存器含有表格的起始地址,而AL中的值是作進(jìn)入表格中的偏移量,查出表格中的內(nèi)容送入AL中。 二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令 算術(shù)運(yùn)算指令的操作數(shù)可以是無(wú)符號(hào)數(shù),算術(shù)運(yùn)算指令的操作數(shù)可以是無(wú)符號(hào)數(shù),也可以是有符號(hào)數(shù)。也可以是有符號(hào)數(shù)。 算
30、術(shù)運(yùn)算指令一般影響標(biāo)志位,而數(shù)據(jù)傳算術(shù)運(yùn)算指令一般影響標(biāo)志位,而數(shù)據(jù)傳送指令一般不影響標(biāo)志位。送指令一般不影響標(biāo)志位。(1) ADD d, s功能功能:將s與d相加,結(jié)果在d中。根據(jù)操作結(jié)果設(shè)置標(biāo)志位標(biāo)志位。例例:ADD BX+106BH,1234H設(shè)DS=2000H,BX=1200H,EA=1200H+106BH=226BH物理地址:2000H16+226BH=2226BH 又設(shè)原來(lái)(2226BH)=90H,(2226CH)=30H則指令執(zhí)行后:3090H+1234H=42C4H即(2226BH)=C4H,(2226CH)=42H又 42C4H=0100,0010,1100,0100B 標(biāo)志
31、位:CF=0,ZF=0,SF=0 AF=0,PF=0 (3個(gè)個(gè)1),OF=0 (2) ADC d, s功能功能:將s與d再與進(jìn)位CF相加,結(jié)果留在d中,ADC指令主要用于多字節(jié)相加。例例:MOV AX,0FH ;AX=000FHADD AL,0F1H ;AL+F1HAL ADC AH,0 ;AH+0+CFAH 最后結(jié)果:最后結(jié)果:AH=01H,AL=00H注注:若是立即數(shù),且最高位為數(shù)碼AF,則必須在前面添加一個(gè)0,以避免混淆。(3) INC d功能功能:將d加1后送回d。注注:INC指令不影響不影響進(jìn)位標(biāo)志CF。該指令經(jīng)常用于修改地址指針寄存器 (BX, BP, SI, DI),使之指向下一
32、個(gè)單元。(1) SUB d, s功能功能:dsd,同時(shí)影響影響標(biāo)志位。(2) SBB d, s功能功能:dsCFd,同時(shí)影響影響標(biāo)志位。(3) DEC d功能功能:d1d 該指令與INC相反操作,也不影不影響響進(jìn)位標(biāo)志CF。(4) NEG d功能功能:對(duì)d進(jìn)行求補(bǔ)運(yùn)算后送回 (按位求反再加1)。例例:MOV AL,7FHNEG AL結(jié)果:結(jié)果:AL=7F按位求反按位求反+1=80H+1=81H(5) 比較指令 CMP d, s功能功能:作一次減法運(yùn)算ds,但不回送結(jié)果,只根據(jù)結(jié)果設(shè)置設(shè)置標(biāo)志位。比較指令往往用于判斷兩數(shù)是否相等,或兩數(shù)大小關(guān)系。若相等,則零標(biāo)志ZF=1。乘法指令在指令中只出現(xiàn)一
33、個(gè)操作數(shù)s (乘數(shù)乘數(shù)),另一個(gè)操作數(shù)固定在累加器累加器(AX或AL)中。(1) MUL s功能功能:無(wú)符號(hào)數(shù)乘法指令a. 8位乘法被乘數(shù)=AL,乘數(shù)=s積(16位)=AH:AL中,即在AX中 AH為高8位,AL為低8位。AL(8位)s(8位) AHAL(16位)b. 16位乘法被乘數(shù)=AX,乘數(shù)=s積(32位)=DX:AXDX為高16位,AX為低16位。AX(16位)s(16位) DXAX(32位)例例:MUL BX 若執(zhí)行前 AX=0012H,BX=0066H 則執(zhí)行后 DX=0000H,AX=072CH (2) IMUL s功能功能:有符號(hào)數(shù)乘法指令8086規(guī)定,有符號(hào)數(shù)一般采用補(bǔ)碼表示
34、。規(guī)定,有符號(hào)數(shù)一般采用補(bǔ)碼表示。故有符號(hào)數(shù)作乘法運(yùn)算時(shí),必須先把它們轉(zhuǎn)故有符號(hào)數(shù)作乘法運(yùn)算時(shí),必須先把它們轉(zhuǎn)變?yōu)樵a數(shù)相乘,積也為原碼數(shù),再將原碼變?yōu)樵a數(shù)相乘,積也為原碼數(shù),再將原碼數(shù)轉(zhuǎn)變?yōu)檠a(bǔ)碼數(shù)。這個(gè)工作由數(shù)轉(zhuǎn)變?yōu)檠a(bǔ)碼數(shù)。這個(gè)工作由CPU自動(dòng)完成。自動(dòng)完成。例例:MOV AL,88H; 88H為 120的補(bǔ)碼 MOV BL,2IMUL BL結(jié)果:AX=FF10H ;FF10H為240的補(bǔ)碼若直接用MUL BL指令,則AX=0110H(1) DIV s功能功能:無(wú)符號(hào)數(shù)相除a. 字節(jié)除 被除數(shù)=AX,除數(shù)=s (s0)結(jié)果:商=AL,余數(shù)=AHALAHAL(8位)(16位).AH(8位)s
35、(8位)商余數(shù)b. 字除 被除數(shù)=DX:AX,除數(shù)= s (s0)結(jié)果:商=AX,余數(shù)=DXAXDXAX(16位)(32位).DX(16位)s (16位)商余數(shù)注注:如果除數(shù)太小,使得商超出了一個(gè)字節(jié)或字所能表示的范圍,則會(huì)產(chǎn)生“被0除”錯(cuò)誤。例例:MOV AX,800HMOV BL,2DIV BL結(jié)果錯(cuò)誤,“被0除” (2) IDIV s功能功能:帶符號(hào)數(shù)除法采用的固定寄存器與DIV相同。(3) CBW和CWDCBW:字節(jié)除法的符號(hào)擴(kuò)展指令功能功能:若AL為正數(shù)正數(shù)(D7=0) 則 AH=00H AL為負(fù)數(shù)負(fù)數(shù)(D7=1) 則 AH=FFH CWD:字除法的符號(hào)擴(kuò)展指令功能功能:若AX為正數(shù)正數(shù)(D15=0) 則 DX=0000H AX為負(fù)數(shù)負(fù)數(shù)(D15=1) 則 DX=FFFFH CBW和CWD一般用于帶符號(hào)數(shù)除法指令之前。運(yùn)算器按二進(jìn)制規(guī)律進(jìn)行運(yùn)算,如果參與運(yùn)算器按二進(jìn)制規(guī)律進(jìn)行運(yùn)算,如果參與運(yùn)算的是運(yùn)算的是BCDBCD碼數(shù),則需要對(duì)結(jié)果進(jìn)行調(diào)整。碼數(shù),則需要對(duì)結(jié)果進(jìn)行調(diào)整。100010010000100100001000組合組合的BCD碼數(shù)未組合未組合的BCD碼數(shù)899(低位)8(高位)代表89(1) AAA功能功能:對(duì)未組合型
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)軌道交通裝備用涂料行業(yè)發(fā)展運(yùn)行現(xiàn)狀及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025年全球及中國(guó)數(shù)據(jù)中心交換機(jī)行業(yè)發(fā)展前景與投資戰(zhàn)略規(guī)劃分析報(bào)告
- 湖北醫(yī)藥學(xué)院藥護(hù)學(xué)院《土壤肥料學(xué)通論實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年新型環(huán)保材料行紀(jì)服務(wù)合同規(guī)范3篇
- 秦皇島2025年河北秦皇島市人民檢察院招聘聘用制書(shū)記員16人筆試歷年參考題庫(kù)附帶答案詳解
- 滁州2025年安徽滁州來(lái)安縣部分學(xué)校幼兒園選調(diào)教師221人筆試歷年參考題庫(kù)附帶答案詳解
- 晉中山西晉中市太谷區(qū)面向2025屆公費(fèi)師范生招聘教師18人筆試歷年參考題庫(kù)附帶答案詳解
- 成都2024年四川成都中醫(yī)藥大學(xué)藥學(xué)院/現(xiàn)代中藥產(chǎn)業(yè)學(xué)院招聘科研助理3人筆試歷年參考題庫(kù)附帶答案詳解
- 廣州2025年廣東廣州中醫(yī)藥大學(xué)第三附屬醫(yī)院招聘(第二批)筆試歷年參考題庫(kù)附帶答案詳解
- 2025年度肉雞供應(yīng)鏈管理:物流協(xié)調(diào)與合同執(zhí)行2篇
- GB/T 34241-2017卷式聚酰胺復(fù)合反滲透膜元件
- GB/T 12494-1990食品機(jī)械專(zhuān)用白油
- 運(yùn)輸供應(yīng)商年度評(píng)價(jià)表
- 成熙高級(jí)英語(yǔ)聽(tīng)力腳本
- 北京語(yǔ)言大學(xué)保衛(wèi)處管理崗位工作人員招考聘用【共500題附答案解析】模擬試卷
- 肺癌的診治指南課件
- 人教版七年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)完整版課件
- 商場(chǎng)裝修改造施工組織設(shè)計(jì)
- 統(tǒng)編版一年級(jí)語(yǔ)文上冊(cè) 第5單元教材解讀 PPT
- 加減乘除混合運(yùn)算600題直接打印
- ASCO7000系列GROUP5控制盤(pán)使用手冊(cè)
評(píng)論
0/150
提交評(píng)論