版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
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ù) 說明:說明:1、算術(shù)運(yùn)算符可用于數(shù)值表達(dá)式或地址表達(dá)式、算術(shù)運(yùn)算符可用于數(shù)值表達(dá)式或
2、地址表達(dá)式2、用于地址表達(dá)式時,只有其結(jié)果有物理意義時才有效、用于地址表達(dá)式時,只有其結(jié)果有物理意義時才有效 常用的是:常用的是: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)在語句的位置出現(xiàn)在語句的位置 指令助記符指令助記符 操作數(shù)字段操作數(shù)字段操作對象操作對象 可以是寄存器或可以是寄存器或 只能是整型常數(shù)只能是整型常數(shù) 存儲器操作數(shù)存儲器操作數(shù)何時計算何時計算 程序運(yùn)行時程序運(yùn)行時 源程序匯編時源程序匯編時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)算符的兩個操作數(shù)必須都是常量或同一段
5、內(nèi)的關(guān)系運(yùn)算符的兩個操作數(shù)必須都是常量或同一段內(nèi)的符號地址,比較結(jié)果為邏輯值:符號地址,比較結(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)算符對變量或標(biāo)號進(jìn)行分析,數(shù)值回送運(yùn)算符對變量或標(biāo)號進(jìn)行分析,回送其地址屬性值或變量特征值。回送其地址屬
6、性值或變量特征值。1. 地址回送操作符地址回送操作符返回的是變量或標(biāo)號的段地址段地址,偏移偏移地址地址及類型類型的屬性值。格式格式:分析操作符分析操作符 變量或標(biāo)號變量或標(biāo)號其運(yùn)算的結(jié)果為一常數(shù)(1) SEG取段址算符取段址算符(2) OFFSET取偏移地址算符取偏移地址算符功能功能:分離出該變量或標(biāo)號的段址 如:MOV AX, SEG BUF功能功能:分離出該變量或標(biāo)號的偏移地址 如:MOV SI, OFFSET BUF12 符號符號 作用對象作用對象 操操 作作 SEG 變量或標(biāo)號變量或標(biāo)號 返回其所在段的段基址值返回其所在段的段基址值OFFSET 變量或標(biāo)號變量或標(biāo)號 返回其在段內(nèi)返回其
7、在段內(nèi)的偏移量的偏移量 SEG: 標(biāo)號標(biāo)號 CS ,變量變量 DS地址:地址: SEG10H+ OFFSET(3) TYPE取類型算符取類型算符(4) LENGTH取變量所含存儲單元的個數(shù)取變量所含存儲單元的個數(shù)功能功能:分離出該變量所含存儲單元的個數(shù)。功能功能:分離出該變量的字節(jié)數(shù)或標(biāo)號的類型。(5) SIZE取變量所含存儲區(qū)的總字節(jié)數(shù)。取變量所含存儲區(qū)的總字節(jié)數(shù)。功能功能: SIZE=LENGTH*TYPE 14 類型屬性類型屬性 運(yùn)算結(jié)果運(yùn)算結(jié)果變量變量 DB 1 DW 2 DD 4 DQ 8 DT 10標(biāo)號標(biāo)號 NEAR -1 FAR -215 符號符號 作用對象作用對象 操操 作作
8、TYPE 變量或標(biāo)號變量或標(biāo)號 用數(shù)字表示其類型屬性用數(shù)字表示其類型屬性 LENGTH 變量變量 用用DUP重復(fù)定義符定義的變量重復(fù)定義符定義的變量 ,返回分配的元素個數(shù);其他,返回分配的元素個數(shù);其他 形式,則返回形式,則返回1 SIZE 變量變量 回送回送LENGTH*TYPE之積之積 格式格式: 類型類型 PTR 表達(dá)式表達(dá)式類型類型:表達(dá)式表達(dá)式:是變量、標(biāo)號或數(shù)值:是變量、標(biāo)號或數(shù)值 變量的類型有:變量的類型有:BYTE、WORD和和DWORD; 標(biāo)號的類型有:標(biāo)號的類型有:NEAR和和FAR; 結(jié)構(gòu)名稱結(jié)構(gòu)名稱屬性修改操作符(屬性修改操作符(PTR、THIS、SHORT) ( 也稱
9、合成操作符號也稱合成操作符號)1. PTR操作符操作符 PTR操作符用于暫時暫時修改變量或標(biāo)號的原有屬性。 功能功能:PTR把它左邊的屬性指派給它右邊的變量、標(biāo)號或數(shù)值,使之產(chǎn)生一個新的存儲器地址操作數(shù)。如:(1) INC BYTE PTR BX (2) ADD DX, WORD PTR FOOB20 新存儲器操作數(shù)的段地址和段內(nèi)偏移量與PTR運(yùn)算符右邊的操作數(shù)的對應(yīng)量相同。 PTR給已分配的存儲器一個另外的定義但并不重新分配存儲器。2. SHORT操作符操作符SHORT用于條件轉(zhuǎn)移、轉(zhuǎn)移和調(diào)用指令中,說明標(biāo)號為短標(biāo)號。 3. THIS操作符操作符 THIS操作符與PTR操作符有類似的功能,但
10、新的屬性放在THIS的右邊右邊。 格式:格式: THIS 類型類型/距離距離其中類型是BYTE、WORD和DWORD,距離是NEAR和FAR屬性。功能功能:與PTR類似建立一個新的存儲器地址操作數(shù),但不分配存儲器,其類型由THIS指定。(1) FOOB EQU THIS BYTE (2) FAR-OUT EQU THIS FAR如:20優(yōu)先級優(yōu)先級 運(yùn)算符運(yùn)算符 類類 別別 1 LENGTH,SIZE 數(shù)值回送運(yùn)算符數(shù)值回送運(yùn)算符 2 PTR,OFFSET,SEG,TYPE, 屬性與數(shù)值回送運(yùn)算符屬性與數(shù)值回送運(yùn)算符 3 +,- 符號運(yùn)算符符號運(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)算符 說明:優(yōu)先級說明:優(yōu)先級1最高,而優(yōu)先級最高,而優(yōu)先級9最低最低 圓括號()可改變執(zhí)行順序圓括號()可改變執(zhí)行順序表達(dá)式表達(dá)式:由運(yùn)算符運(yùn)算符連接起來的式子叫表達(dá)式,按一定的規(guī)則對表達(dá)式進(jìn)行運(yùn)算后得到一個數(shù)值或一個地址。 表達(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ù)的字長而定。數(shù),視參加運(yùn)算的數(shù)的字長而定。 邏輯運(yùn)算指令中可以包含有邏輯表達(dá)式,如邏輯運(yùn)算指令中可以包含有邏輯表達(dá)式,如指令指令 AND AL, 10101010B AND 0FH 左邊第一個左
13、邊第一個AND為邏輯運(yùn)算指令,第二個為邏輯運(yùn)算指令,第二個AND為邏輯運(yùn)算符,為邏輯運(yùn)算符,10101010B AND 0FH 為為邏輯表達(dá)式,其結(jié)果在匯編時即已確定,為邏輯表達(dá)式,其結(jié)果在匯編時即已確定,為00001010B,故上述指令等價于故上述指令等價于 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 等價于等價于 MOV BX, 0FFFFH 多種運(yùn)算符常結(jié)合起來使用多種運(yùn)算符常結(jié)合起來使用, ,有優(yōu)先級有優(yōu)先級( (教材教材: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á)式把存儲器操作數(shù)分析運(yùn)算表達(dá)式把存儲器操作數(shù)分解分解為幾個為幾個部分部分,如分解出如分解出: 段值、偏移量、類型等;段值、偏移量、類型等; 合成運(yùn)算表達(dá)式則把這些組成部分合成運(yùn)算表達(dá)式則把這些組成部分綜合綜合為存為存儲器操作數(shù)。儲器操作數(shù)。分析運(yùn)算表達(dá)式和合成運(yùn)算表達(dá)式的操作對象都為分析運(yùn)算表達(dá)式和合成運(yùn)算表達(dá)式的操作對象都為存儲器操作數(shù)存儲器操作數(shù)。 存儲器操作數(shù)表示變量、符號地址、存儲單元存儲器操作數(shù)表示變量、符號地址、存儲單
15、元等等, ,與存儲器與存儲器地址地址有關(guān)。有關(guān)。 例如, MOV BX, OFFSET ASC OFFSET ASC 即為分析運(yùn)算表達(dá)式,其作用: 取存儲器操作數(shù)(變量)ASC的地址偏移量, 若變量ASC的偏移地址為0001H, 即OFFSET ASC=0001H。該指令等價于MOV BX, 0001H 匯編語言程序的上機(jī)過程匯編語言程序的上機(jī)過程 1 1 匯編語言程序上機(jī)運(yùn)行的軟件環(huán)境匯編語言程序上機(jī)運(yùn)行的軟件環(huán)境 DOS操作系統(tǒng)下,編輯、修改和運(yùn)行匯編語言程序,需要用文本編輯軟件、宏匯編程序、連接程序和調(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(回車)(回車) 2. 匯編源程序匯編源程序 C:ASMTASM HEXTOASC (回車)(回車) 在匯編中,如果有語法錯誤,會給出提示信息,指出錯誤的類型、行號。當(dāng)匯編無錯之后,會自動生成目標(biāo)文件(文件擴(kuò)展名為OBJ)。注:待編輯的文件擴(kuò)展名必須為 ASM。匯編程序通過ASSUME語句了解到運(yùn)行時各段寄存器的設(shè)定值后,就可以對被匯編的指令語句中的變量和標(biāo)號作如下處理。3. 匯編程序?qū)?/p>
17、變量和標(biāo)號的處理匯編程序?qū)ψ兞亢蜆?biāo)號的處理 1. 檢查指令中所引用的變量和標(biāo)號是否合理,即它們的段屬性是否和某個段寄存器的段假設(shè)值相符。2. 檢查是否需要為所引用的變量和標(biāo)號產(chǎn)生跨段前綴字節(jié),即檢查變量和標(biāo)號的段屬性是否與硬件為該指令所規(guī)定的段寄存器的假設(shè)值相符。3 目標(biāo)程序的連接目標(biāo)程序的連接 C:ASMTLINK HEXTOASC (回車)(回車)連接成功后,將生成可執(zhí)行程序HEXTOASC.EXE。4 程序的調(diào)試與運(yùn)行程序的調(diào)試與運(yùn)行 1調(diào)試可執(zhí)行程序調(diào)試可執(zhí)行程序 利用Turbo Debuger(TD)對可執(zhí)行程序進(jìn)行調(diào)試,以檢查程序可能存在的各種錯誤: C:ASMTD HEXTOAS
18、C.EXE (回車)(回車)2運(yùn)行可執(zhí)行程序運(yùn)行可執(zhí)行程序 C:ASMHEXTOASC (回車)(回車)匯編語言的語句格式匯編語言的語句格式(Statement Formats)(Statement Formats) 匯編語言程序的每行語句由匯編語言程序的每行語句由14個部分組成。個部分組成。指令語句和偽指令語句在格式上稍有區(qū)別,指令語句和偽指令語句在格式上稍有區(qū)別,指令指令語句的標(biāo)號后有冒號語句的標(biāo)號后有冒號“:”,而,而偽指令偽指令語句的標(biāo)語句的標(biāo)號后則沒有冒號。號后則沒有冒號。 指令語句的格式為指令語句的格式為 LABEL: OPERATION OPERAND ;COMMENT 標(biāo)號域標(biāo)
19、號域 指令助記符域指令助記符域 操作數(shù)域操作數(shù)域 注釋域注釋域偽指令語句的格式為偽指令語句的格式為 LABEL OPERATION OPERAND ;COMMENT 標(biāo)號域標(biāo)號域 偽指令助記符域偽指令助記符域 操作數(shù)域操作數(shù)域 注釋域注釋域 一行最多可有一行最多可有132132個字符個字符 注注: 指令助記符前面還可以有指令助記符前面還可以有 前綴前綴 。 匯編語言程序語句中的四項,均可以用匯編語言程序語句中的四項,均可以用大寫大寫、小寫小寫或或混合編寫混合編寫。 語句的各部分之間至少用一個語句的各部分之間至少用一個空格空格分開分開 匯編語言源程序的組成匯編語言源程序的組成 匯編語言源程序的結(jié)
20、構(gòu)匯編語言源程序的結(jié)構(gòu)(Program Structure) (Program Structure) 數(shù)據(jù)段數(shù)據(jù)段 說明:說明: 堆棧段堆棧段 1、各段順序無關(guān)、各段順序無關(guān) 2、除代碼段外,可缺省、除代碼段外,可缺省 3、可有若干個數(shù)據(jù)段,、可有若干個數(shù)據(jù)段, 若干代碼段若干代碼段 代碼段代碼段 END 標(biāo)號標(biāo)號 附加段附加段源程序結(jié)構(gòu)概覽簡化段定義完整段定義P71匯編語言源程序由匯編語言源程序由段結(jié)構(gòu)段結(jié)構(gòu)組成。組成。一個段一個段由由 “SEGMENTSEGMENT”(段定義開始段定義開始)和和“ENDSENDS”(段定義結(jié)束段定義結(jié)束)語句來定義語句來定義。每個段都有每個段都有唯一的唯一
21、的段名段名,前后一致。,前后一致。不同不同段段的段名不能相同。的段名不能相同。數(shù)據(jù)段、堆棧段和代碼段的作用各不相同數(shù)據(jù)段、堆棧段和代碼段的作用各不相同。各個段都由一系列各個段都由一系列語句語句組成組成。 語句包括語句包括指令指令語句和語句和偽指令偽指令語句語句。通用指令集通用指令集8086指令按功能分為六大類。指令按功能分為六大類。8086指令系統(tǒng)數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令串操作指令程序控制指令CPU控制指令一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令能夠完成下列操作數(shù)的傳送任務(wù)。立即數(shù)存儲器段寄存器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不能同時為存儲器錯誤指令:MOV BX,SI d不能為立即數(shù) 錯誤指令:MOV 1234H,AX d, s必須同時為字節(jié)型或字型錯誤指令:MOV AX,BL 指令后的分號“;”以后為注釋部分,對指令的執(zhí)行沒有任何影響,主要是便于閱讀或解釋指令的功能。例例: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、代表符號地址符號地址,從該地址單元中取出內(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被保存到堆棧,同時SP=003EH,BX內(nèi)容不變SS1620000HSP=0040H(初值初值)20040H2003EH4023SP=003EH(壓棧后壓棧后)XX23 40BX注注:s和d只能為16位寄存器或存儲器錯誤指令:
25、PUSH 1234HPOP AL(3) XCHG d, s ;交換源和目標(biāo)操作數(shù)注注:d=通用寄存器s=通用寄存器或存儲器例:XCHG AX,SI+400H執(zhí)行后,5678H被送到內(nèi)存單元AX=1234H3412SI+400H5678AH ALAX34127856(4) XLAT ;查表轉(zhuǎn)換 注注:a. 表首相對于段起始地址的偏移量預(yù)先送入BX中;b. 待查找的表內(nèi)表內(nèi)某單元相對于表首的偏移偏移量量送入AL中;c. 以EA=BX+AL在表中(數(shù)據(jù)段)查找,將查得的數(shù)據(jù)再送回AL中。例例:設(shè)表首的偏移地址為2000H,要查找表內(nèi)第4號單元 (從0號算起)的內(nèi)容并送回AL,則程序段如下:MOV B
26、X,2000HMOV AL,04HXLAT設(shè)表中內(nèi)容如下頁圖所示, 則執(zhí)行后,AL=09H 18H34H05H06H09H2000HBX 04HAL(表首)TABLE DS1604 AL09 對于任一個存儲器操作數(shù),由段地址和偏移地址確定了它們在存儲器中的位置。目標(biāo)地址傳送指令就用于獲得存儲器操作數(shù)的段地址或偏移地址。(1) LEA d, s功能功能:取存儲器源操作數(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指向了另外一個數(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)志寄存器壓入堆棧堆棧保存,同時SP2SP。 (4) POPF功能功能:將當(dāng)前當(dāng)前SP所指內(nèi)容(2字節(jié))彈出至標(biāo)志寄存器標(biāo)志寄存器,同時SP+2SP。 功能:從指定端口輸入數(shù)據(jù)至累加器acc (AL或AX) ,port=0255 (1) IN acc, portAH ALacc端口port 16位數(shù)據(jù)時 (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功能功能:該指令通過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ù)可以是無符號數(shù),算術(shù)運(yùn)算指令的操作數(shù)可以是無符號數(shù),也可以是有符號數(shù)。也可以是有符號數(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è)原來(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個個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,則必須在前面添加一個0,以避免混淆。(3) INC d功能功能:將d加1后送回d。注注:INC指令不影響不影響進(jìn)位標(biāo)志CF。該指令經(jīng)常用于修改地址指針寄存器 (BX, BP, SI, DI),使之指向下一
32、個單元。(1) SUB d, s功能功能:dsd,同時影響影響標(biāo)志位。(2) SBB d, s功能功能:dsCFd,同時影響影響標(biāo)志位。(3) DEC d功能功能:d1d 該指令與INC相反操作,也不影不影響響進(jìn)位標(biāo)志CF。(4) NEG d功能功能:對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、個操作數(shù)s (乘數(shù)乘數(shù)),另一個操作數(shù)固定在累加器累加器(AX或AL)中。(1) MUL s功能功能:無符號數(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功能功能:有符號數(shù)乘法指令8086規(guī)定,有符號數(shù)一般采用補(bǔ)碼表示
34、。規(guī)定,有符號數(shù)一般采用補(bǔ)碼表示。故有符號數(shù)作乘法運(yùn)算時,必須先把它們轉(zhuǎn)故有符號數(shù)作乘法運(yùn)算時,必須先把它們轉(zhuǎn)變?yōu)樵a數(shù)相乘,積也為原碼數(shù),再將原碼變?yōu)樵a數(shù)相乘,積也為原碼數(shù),再將原碼數(shù)轉(zhuǎn)變?yōu)檠a(bǔ)碼數(shù)。這個工作由數(shù)轉(zhuǎn)變?yōu)檠a(bǔ)碼數(shù)。這個工作由CPU自動完成。自動完成。例例:MOV AL,88H; 88H為 120的補(bǔ)碼 MOV BL,2IMUL BL結(jié)果:AX=FF10H ;FF10H為240的補(bǔ)碼若直接用MUL BL指令,則AX=0110H(1) DIV s功能功能:無符號數(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ù)太小,使得商超出了一個字節(jié)或字所能表示的范圍,則會產(chǎn)生“被0除”錯誤。例例:MOV AX,800HMOV BL,2DIV BL結(jié)果錯誤,“被0除” (2) IDIV s功能功能:帶符號數(shù)除法采用的固定寄存器與DIV相同。(3) CBW和CWDCBW:字節(jié)除法的符號擴(kuò)展指令功能功能:若AL為正數(shù)正數(shù)(D7=0) 則 AH=00H AL為負(fù)數(shù)負(fù)數(shù)(D7=1) 則 AH=FFH CWD:字除法的符號擴(kuò)展指令功能功能:若AX為正數(shù)正數(shù)(D15=0) 則 DX=0000H AX為負(fù)數(shù)負(fù)數(shù)(D15=1) 則 DX=FFFFH CBW和CWD一般用于帶符號數(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ù),則需要對結(jié)果進(jìn)行調(diào)整。碼數(shù),則需要對結(jié)果進(jìn)行調(diào)整。100010010000100100001000組合組合的BCD碼數(shù)未組合未組合的BCD碼數(shù)899(低位)8(高位)代表89(1) AAA功能功能:對未組合型
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個體員工勞動合同樣本(三篇)
- 產(chǎn)業(yè)園裝修合同終止范例
- 大數(shù)據(jù)中心居間合同
- 醫(yī)藥代表傭金居間合同
- 化工原料居間服務(wù)合同模板
- 圖書快遞批量運(yùn)輸合同樣本
- 服裝面料物流采購協(xié)議
- 服裝店裝修合同樣本及清單
- 便捷電子元器件居間協(xié)議
- 公寓裝修保修協(xié)議樣本
- 《鋼鐵是怎樣煉成的》名著閱讀(精講課件) 初中語文名著導(dǎo)讀
- 縮窄性心包炎課件
- 《工程電磁場》配套教學(xué)課件
- 遼寧省錦州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)及行政區(qū)劃代碼
- 改革開放的歷程(終稿)課件
- 職位管理手冊
- IPQC首檢巡檢操作培訓(xùn)
- 東南大學(xué) 固體物理課件
- 行政人事助理崗位月度KPI績效考核表
- 紀(jì)檢監(jiān)察機(jī)關(guān)派駐機(jī)構(gòu)工作規(guī)則全文詳解PPT
- BP-2C 微機(jī)母線保護(hù)裝置技術(shù)說明書 (3)
評論
0/150
提交評論