版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第3章章 80X86指令系統(tǒng)指令系統(tǒng) 3.1 指令格式與尋址方式指令格式與尋址方式 3.2 8086/8088指令系統(tǒng)指令系統(tǒng) 3.1 指令格式與尋址方式指令格式與尋址方式 3.1.1 指令格式指令格式 指令指令 操作碼:指示計(jì)算機(jī)執(zhí)行什么樣的操作,如數(shù)據(jù)傳送、算術(shù)運(yùn)操作碼:指示計(jì)算機(jī)執(zhí)行什么樣的操作,如數(shù)據(jù)傳送、算術(shù)運(yùn) 算等;算等; 操作數(shù):指令執(zhí)行操作的過程中所需要的數(shù)據(jù),如加法指令中操作數(shù):指令執(zhí)行操作的過程中所需要的數(shù)據(jù),如加法指令中 的加數(shù)和被加數(shù)等。的加數(shù)和被加數(shù)等。 指令的操作數(shù):可以是參加操作的數(shù)的本身(立即數(shù))指令的操作數(shù):可以是參加操作的數(shù)的本身(立即數(shù)) 或是微處理器內(nèi)
2、部寄存器的內(nèi)容(寄存器操作數(shù))或是微處理器內(nèi)部寄存器的內(nèi)容(寄存器操作數(shù)) 還可以是操作數(shù)在存儲器中的地址。還可以是操作數(shù)在存儲器中的地址。 如何尋址操作數(shù)就是尋址問題。如何尋址操作數(shù)就是尋址問題。 3.1.2 尋址方式尋址方式 一、尋址方式與有效地址的概念一、尋址方式與有效地址的概念 尋址方式尋址方式尋找操作數(shù)的方式。尋找操作數(shù)的方式。 操作數(shù)位置:操作數(shù)位置: 操作數(shù)在指令中,與代碼存放在一起,稱為立即操作數(shù)。 立即尋址立即尋址 操作數(shù)在Reg.中,指令中操作數(shù)部分是對應(yīng)Reg.的編碼。 Reg.Reg.尋址尋址 操作數(shù)在MEM中,指令中操作數(shù)部分是操作數(shù)所在的內(nèi)存地址。 存貯器尋址存貯器
3、尋址 任何內(nèi)存單元實(shí)際地址都由兩部分組成:段基址和段內(nèi)偏移地址任何內(nèi)存單元實(shí)際地址都由兩部分組成:段基址和段內(nèi)偏移地址 有效地址有效地址EAEA: 存儲器尋址時(shí),指令的操作數(shù)部分給出的地址是段內(nèi)偏移地址。 為了適應(yīng)要處理的各種數(shù)據(jù)結(jié)構(gòu)的需要,這個(gè)段內(nèi)偏移量可以由 幾個(gè)基本部分組合而成,所以也把它稱作有效地址EAEA。 3.1.2 尋址方式尋址方式 有效地址的基本組成部分有效地址的基本組成部分 基址寄存器的內(nèi)容;基址寄存器的內(nèi)容;變址寄存器內(nèi)容變址寄存器內(nèi)容 位移量;位移量;比例因子比例因子 EAEA 基址基址RegReg( 變址變址RegReg比例因子)位移量比例因子)位移量 0,8,32 0
4、,8,16 位移量位移量 1,2,4,8 1 比例因子比例因子 除除ESP外任何外任何32位通用寄存器位通用寄存器 SI,DI 變址寄存器變址寄存器 任何任何32位通用寄存器位通用寄存器 BX,BP 基址寄存器基址寄存器 32位尋址位尋址 16位尋址位尋址 有效地址分量有效地址分量 表表3-1 16位和位和32位尋址時(shí)的四分量定義位尋址時(shí)的四分量定義 3.1.2 尋址方式尋址方式 二、各種尋址方式二、各種尋址方式 3.1.2 尋址方式尋址方式 1.立即數(shù)尋址(立即尋址)立即數(shù)尋址(立即尋址) 指令所用的操作數(shù)直接包含在指令中,指令所用的操作數(shù)直接包含在指令中,不需要運(yùn)行總線周期不需要運(yùn)行總線周
5、期,立即,立即 尋址主要用于給存儲器或寄存器賦初值。尋址主要用于給存儲器或寄存器賦初值。操作數(shù)與操作碼一起存放操作數(shù)與操作碼一起存放 在代碼段中,與代碼一起被取入在代碼段中,與代碼一起被取入CPU的指令隊(duì)列,在指令執(zhí)行時(shí)不的指令隊(duì)列,在指令執(zhí)行時(shí)不 需要再訪問存貯器。需要再訪問存貯器。 注意:注意: 立即操作數(shù)可以是立即操作數(shù)可以是8、16、32位,位, 若是若是16或或32位的,則存放時(shí)必須滿足位的,則存放時(shí)必須滿足低對低,高對高低對低,高對高的原則。的原則。 此指令中的立即數(shù)只能是此指令中的立即數(shù)只能是源源,不能是,不能是目的目的。 常用于給常用于給Reg.賦初值。賦初值。 3.1.2 尋
6、址方式尋址方式 操作碼操作碼 立即數(shù)低字節(jié)立即數(shù)低字節(jié) 立即數(shù)高字節(jié)立即數(shù)高字節(jié) 高址高址 0AH 08H AH ALAX 【例】【例】 MOV AXMOV AX,080AH080AH,其尋址如下圖所示。,其尋址如下圖所示。 立即尋址示意圖立即尋址示意圖 3.1.2 尋址方式尋址方式 3.1.2 尋址方式尋址方式 l舉例:舉例: MOV AX, 1234H MOV AL,12H MOV DH,34H 下列語句錯(cuò)誤:下列語句錯(cuò)誤: MOV AL,1234H MOV 1234H,AL 3.1.2 尋址方式尋址方式 2.寄存器尋址寄存器尋址 操作數(shù)在內(nèi)部寄存器中。對操作數(shù)在內(nèi)部寄存器中。對16位操作
7、數(shù),寄存器可以是位操作數(shù),寄存器可以是AX、 BX、CX、DX、SI、DI、SP或或BP;對;對8位操作數(shù),寄存器可位操作數(shù),寄存器可 以是以是AH、AL、BH、BL、CH、CL、DH、DL。 在一條指令中,可以對源操作數(shù)采用寄存器尋址方式,也可在一條指令中,可以對源操作數(shù)采用寄存器尋址方式,也可 以對目的操作數(shù)采用寄存器尋址方式,還可以兩者都用寄存以對目的操作數(shù)采用寄存器尋址方式,還可以兩者都用寄存 器尋址方式。器尋址方式。 該方式的操作在該方式的操作在CPU內(nèi)部進(jìn)行,不需要使用總線周期。內(nèi)部進(jìn)行,不需要使用總線周期。 3.1.2 尋址方式尋址方式 舉例舉例 3.1.2 尋址方式尋址方式 l
8、例例 2 注意下列語句錯(cuò)誤:注意下列語句錯(cuò)誤: MOV AX,BX MOV AX,BL MOV AH,BH MOV BL,AX MOV BL,AL MOV SI,AX l例例3 下列程序執(zhí)行后,(下列程序執(zhí)行后,(AX)=?,(?,(BX)=? MOV AX,1234H MOV BX,5678H 執(zhí)行:執(zhí)行: 1234HAX 5678HBX 3.1.2 尋址方式尋址方式 3.存儲器尋址方式存儲器尋址方式 對于各種存儲器尋址方式,指令的操作數(shù)部分是此操作數(shù)的有效對于各種存儲器尋址方式,指令的操作數(shù)部分是此操作數(shù)的有效 地址地址EA。 (1)直接尋址)直接尋址 操作數(shù)的有效地址(操作數(shù)的有效地址(
9、EA)直接包含在指令中,它與操作碼一起存)直接包含在指令中,它與操作碼一起存 放在代碼段中。放在代碼段中。 操作數(shù)一般在數(shù)據(jù)段中操作數(shù)一般在數(shù)據(jù)段中DS,這是默認(rèn)方式,這是默認(rèn)方式 操作數(shù)存放的物理地址操作數(shù)存放的物理地址=DS16 + 16位地址偏移量。位地址偏移量。 如果不在數(shù)據(jù)段中,則要增加段前綴,指出段寄存器名。如果不在數(shù)據(jù)段中,則要增加段前綴,指出段寄存器名。 例:例:MOV AXMOV AX,ESES:2000H2000H 3.1.2 尋址方式尋址方式 例例1: MOV AX,22A0H 執(zhí)行過程如圖所示執(zhí)行過程如圖所示 322A0H 322A1H 32H 48H 操作碼操作碼 偏
10、移量偏移量A0HA0H 偏移量偏移量22H22H 代碼段代碼段 數(shù)據(jù)段數(shù)據(jù)段 3 0 0 0 +) 2 2 A 0 3 2 2 A 0 H DS AX 48 32 3.1.2 尋址方式尋址方式 例例2 MOV AL,2000H; 4000H 56H A AX X D DS S 40000H 2000H 操作碼 操作碼 00H 20H 56H 42000H 3.1.2 尋址方式尋址方式 例例3 寄存器和存儲器內(nèi)容為:(寄存器和存儲器內(nèi)容為:(AX)=1212H, BUF為數(shù)據(jù)段定義的變量,其偏移地址是為數(shù)據(jù)段定義的變量,其偏移地址是2000H, (DS)=3000H,(,(32000H)=454
11、5H。 執(zhí)行指令:執(zhí)行指令:MOV AX ,BUF 執(zhí)行后:(執(zhí)行后:(AX)=? 執(zhí)行:(執(zhí)行:(32000H)AX 執(zhí)行后:(執(zhí)行后:(AX)=4545H 3.1.2 尋址方式尋址方式 直接尋址中直接尋址中EA可以以變量名的形式給出。可以以變量名的形式給出。 例:例:VALUE DB 12H MOV AL,VALUE 或或 MOV AL,VALUE ;VALUE又稱為符號地址又稱為符號地址 3.1.2 尋址方式尋址方式 (2)寄存器間接尋址寄存器間接尋址 寄存器間接尋址方式中,寄存器的內(nèi)容為操作數(shù)的偏移地址寄存器間接尋址方式中,寄存器的內(nèi)容為操作數(shù)的偏移地址EAEA, 操作數(shù)在存儲器中,寄
12、存器可以為操作數(shù)在存儲器中,寄存器可以為BXBX,BPBP,SISI和和DIDI。 分成了兩種情況:分成了兩種情況: 若以若以SI、DI、BX間接尋址,操作數(shù)通常在現(xiàn)行數(shù)據(jù)段中,即間接尋址,操作數(shù)通常在現(xiàn)行數(shù)據(jù)段中,即DS中中 的值左移四位加上的值左移四位加上SI、DI或或BX中的有效地址即為操作數(shù)的物理中的有效地址即為操作數(shù)的物理 地址地址。見例子見例子1。 若以若以BP間接尋址,則操作數(shù)在堆棧段中,即操作數(shù)的物理地址為間接尋址,則操作數(shù)在堆棧段中,即操作數(shù)的物理地址為 堆棧段寄存器堆棧段寄存器SS中的值左移四位與中的值左移四位與BP相加。見例子相加。見例子2。 3.1.2 尋址方式尋址方式
13、 50 3.1.2 尋址方式尋址方式 B0 3.1.2 尋址方式尋址方式 寄存器間接尋址示意圖寄存器間接尋址示意圖 例例3:MOV AX, BX 設(shè)設(shè)DS4000H,BX=0100H 寄存器間接尋址示意寄存器間接尋址示意 圖如下。圖如下。 3.1.2 尋址方式尋址方式 (3)寄存器相對尋址寄存器相對尋址 操作數(shù)的有效地址:操作數(shù)的有效地址: EA(基址(基址RegReg)位移量,其中位移量在)位移量,其中位移量在 指令中給出,并與操作碼一起放在代碼段中。指令中給出,并與操作碼一起放在代碼段中。 16位尋址時(shí) BPBP、BXBX作基址作基址RegReg,其中,其中BPBP默認(rèn)在默認(rèn)在SSSS段,
14、段,BXBX默認(rèn)在默認(rèn)在DSDS段段, 位位移量是8或16位,且跟在操作碼之后存放在代碼段中。 EA 位移量 BX BP 8位 16位 物理地址 DS16BX8位或16位位移量 SS16BP8位或16位位移量 3.1.2 尋址方式尋址方式 (MOV AL,BX+05) 3.1.2 尋址方式尋址方式 30 3.1.2 尋址方式尋址方式 (4)基址加變址,基址加變址加相對尋址)基址加變址,基址加變址加相對尋址 EA(基址(基址Reg)(變址)(變址RegReg ) 基址、變址寄存器的使用規(guī)定和段寄存器的默認(rèn)規(guī)定與前面同,當(dāng)基址、變址寄存器的使用規(guī)定和段寄存器的默認(rèn)規(guī)定與前面同,當(dāng) 一種尋址方式中基
15、址、變址寄存器默認(rèn)段寄存器不同時(shí),一般由一種尋址方式中基址、變址寄存器默認(rèn)段寄存器不同時(shí),一般由 基址寄存器來決定默認(rèn)那一個(gè)段寄存器作為段基址指針,若在指基址寄存器來決定默認(rèn)那一個(gè)段寄存器作為段基址指針,若在指 令中規(guī)定了段超越,則可用其他段寄存器作為段基地址。令中規(guī)定了段超越,則可用其他段寄存器作為段基地址。 3.1.2 尋址方式尋址方式 例:例:MOVAX,BXSI (或(或MOVAX,BXSI) 默認(rèn)默認(rèn)DS為段為段Reg 基址加變址尋址示意圖基址加變址尋址示意圖 3.1.2 尋址方式尋址方式 3.1.2 尋址方式尋址方式 三、存儲器尋址時(shí)的段約定三、存儲器尋址時(shí)的段約定 存儲器操作類型
16、存儲器操作類型默認(rèn)段寄默認(rèn)段寄 存器存器 允許超過的段寄存允許超過的段寄存 器器 偏移地址寄存偏移地址寄存 器器 取指令代碼取指令代碼 CS (E)IP 堆棧操作堆棧操作 SS (E)SP 源串?dāng)?shù)據(jù)訪問源串?dāng)?shù)據(jù)訪問 DSCS,ES,SS,F(xiàn)S, GS (E)SI 目的串?dāng)?shù)據(jù)訪問目的串?dāng)?shù)據(jù)訪問 ES (E)DI 通用數(shù)據(jù)訪問通用數(shù)據(jù)訪問 DSCS,ES,SS,F(xiàn)S, GS 偏移地址偏移地址EA 以(以(E)BP,(,(E) SP間接間接 尋址的指令尋址的指令 SSCS,ES,SS,F(xiàn)S, GS 偏移地址偏移地址EA 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 8086/8088指令系統(tǒng)是指令系
17、統(tǒng)是80X86的基本指令集。的基本指令集。 指令的操作數(shù)寬度是指令的操作數(shù)寬度是8位或位或16位,偏移地址寬度是位,偏移地址寬度是16位。位。 數(shù)據(jù)傳送類、算術(shù)運(yùn)算類、邏輯運(yùn)算與移位類、串操作數(shù)據(jù)傳送類、算術(shù)運(yùn)算類、邏輯運(yùn)算與移位類、串操作 類、控制轉(zhuǎn)移類、處理器控制類。類、控制轉(zhuǎn)移類、處理器控制類。 共分為共分為6類類 指令的助記符指令的助記符 操作數(shù)的正確書寫格式操作數(shù)的正確書寫格式 指令執(zhí)行后對標(biāo)志位的影響。指令執(zhí)行后對標(biāo)志位的影響。 要求掌握要求掌握 16位立即數(shù)位立即數(shù) imm16 8位立即數(shù)位立即數(shù) imm8 立即數(shù),長度可以是立即數(shù),長度可以是8位或位或16位。位。 imm 16
18、位存儲器位存儲器 mem16 8位存儲器位存儲器 mem8 存儲器,長度可以是存儲器,長度可以是8位或位或16位。位。 mem 16位通用寄存器位通用寄存器 reg16 8位通用寄存器位通用寄存器 reg8 段寄存器段寄存器 Sreg 通用寄存器,長度可以是通用寄存器,長度可以是8位或位或16位。位。 reg 在多操作數(shù)指令中,在多操作數(shù)指令中,OPRD1為目標(biāo)操作數(shù),為目標(biāo)操作數(shù),OPRD2源操作數(shù)源操作數(shù)OPRD1,OPRD2 操作數(shù)操作數(shù) OPRD 意義意義 符號符號 指令操作數(shù)符號說明指令操作數(shù)符號說明 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 3.2.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類
19、指令 最基本、最重要、最常用的一類操作最基本、最重要、最常用的一類操作 存儲器與寄存器存儲器與寄存器 寄存器與寄存器寄存器與寄存器 3. 累加器與累加器與I/O端口端口 4. 立即數(shù)到立即數(shù)到Reg或存儲器或存儲器 源地址源地址指令中必須指明數(shù)據(jù)起始地址:源地址,指令中必須指明數(shù)據(jù)起始地址:源地址, 目標(biāo)地址目標(biāo)地址傳送到什么地方:目標(biāo)地址傳送到什么地方:目標(biāo)地址 共有共有14條指令,分為條指令,分為4組,見表組,見表3-4。 指令類型 指令功能 指令書寫格式 通用數(shù)據(jù)通用數(shù)據(jù) 傳送傳送 字節(jié)或字傳送字節(jié)或字傳送 字壓入堆棧字壓入堆棧 字彈出堆棧字彈出堆棧 字節(jié)或字交換字節(jié)或字交換 字節(jié)翻譯字
20、節(jié)翻譯 MOV 目標(biāo),源目標(biāo),源 PUSH 源源 POP 目標(biāo)目標(biāo) XCHG 目標(biāo),源目標(biāo),源 XLAT 地址傳地址傳 送送 裝入有效地址裝入有效地址 裝入裝入DS寄存器寄存器 裝入裝入ES寄存器寄存器 LEA 目標(biāo),源目標(biāo),源 LDS 目標(biāo),源目標(biāo),源 LES 目標(biāo),源目標(biāo),源 標(biāo)志位標(biāo)志位 傳送傳送 將將FR低字節(jié)裝入低字節(jié)裝入AH寄存器寄存器 將將AH內(nèi)容裝入內(nèi)容裝入FR低字節(jié)低字節(jié) 將將FR內(nèi)容壓入堆棧內(nèi)容壓入堆棧 從堆棧彈出從堆棧彈出FR內(nèi)容內(nèi)容 LAHF SAHF PUSHF POPF I/O數(shù)據(jù)數(shù)據(jù) 傳送傳送 輸入字節(jié)或字輸入字節(jié)或字 輸出字節(jié)或字輸出字節(jié)或字 IN 累加器,端口
21、累加器,端口 OUT 端口,累加器端口,累加器 除了 SAHF和 POPF指 令外,其 余指令執(zhí) 行后對標(biāo) 志位都沒沒 有有影響。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 一、通用數(shù)據(jù)傳送指令一、通用數(shù)據(jù)傳送指令 共5條,它們(除XCHG外)是唯一允許以段Sreg作為操作數(shù)的指令。 1、MOV 指令指令 指令格式:指令格式:MOV MOV OPRD1,OPRD2 指令功能:將源操作數(shù)傳送到指令功能:將源操作數(shù)傳送到 目的操作數(shù)中。目的操作數(shù)中。 OPRD1表示目的操作數(shù),表示目的操作數(shù), 可以是寄存器、存儲器。可以是寄存器、存儲器。 OPRD2源表示源操作數(shù),源表示源操作數(shù), 可以是寄存
22、器、存儲器可以是寄存器、存儲器 和立即數(shù)。和立即數(shù)。 通用寄存器通用寄存器 (AX,BX,CX,DX,BP SP,SI,DI) 存存 儲儲 器器 立立 即即 數(shù)數(shù) 段寄存器段寄存器 (CS,SS,DS,ES) 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例:例: MOVAL,CH ;通用寄存器之間傳送字節(jié)數(shù)據(jù)通用寄存器之間傳送字節(jié)數(shù)據(jù) MOVDS,AX ;通用寄存器通用寄存器段寄存器(段寄存器(CS不能是目標(biāo))不能是目標(biāo)) MOVAX,0FF3BH ;立即數(shù)立即數(shù)通用寄存器通用寄存器 MOVAL,BUFFER ;存儲器存儲器通用寄存器通用寄存器 MOVDATBP+DI,ES;段寄存器段寄存器
23、存儲器存儲器 MOV1000H,25H ;立即數(shù)立即數(shù)存儲器存儲器 MOVCX, 1000H ;存儲器存儲器通用寄存器通用寄存器 使用使用MOV指令傳送數(shù)據(jù)時(shí)應(yīng)該注意:指令傳送數(shù)據(jù)時(shí)應(yīng)該注意: 立即數(shù)和段寄存器立即數(shù)和段寄存器CS不能作為目標(biāo)操作數(shù);不能作為目標(biāo)操作數(shù); 立即數(shù)不能直接傳送到段寄存器;(立即數(shù)不能直接傳送到段寄存器;( MOVDS,1000H) 兩個(gè)存儲單元之間不能直接傳送數(shù)據(jù)(兩個(gè)存儲單元之間不能直接傳送數(shù)據(jù)(可通過Reg做中介);); 兩個(gè)段寄存器之間不能直接傳送數(shù)據(jù)(兩個(gè)段寄存器之間不能直接傳送數(shù)據(jù)( MOV DS,ES) 。 ( MOV AX,ES MOV DS,AX)
24、 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 2、堆棧操作指令堆棧操作指令PUSH和和POP 堆棧是按照堆棧是按照FILO原則組織的一段原則組織的一段內(nèi)存區(qū)域。內(nèi)存區(qū)域。 80X86規(guī)定堆棧設(shè)置在堆棧段(規(guī)定堆棧設(shè)置在堆棧段(SS)內(nèi),用)內(nèi),用SP始終指向堆棧的頂部。始終指向堆棧的頂部。 堆棧用于在子程序調(diào)用或處理中斷時(shí),堆棧用于在子程序調(diào)用或處理中斷時(shí),保存當(dāng)前的斷點(diǎn)地址(在保存當(dāng)前的斷點(diǎn)地址(在 8086/8088中為中為CS和和IP)和現(xiàn)場數(shù)據(jù))和現(xiàn)場數(shù)據(jù),以便子程序執(zhí)行完畢后,正確,以便子程序執(zhí)行完畢后,正確 返回到主程序。返回到主程序。 斷點(diǎn)地址的保存由斷點(diǎn)地址的保存由子程序調(diào)用
25、指令子程序調(diào)用指令或中斷響應(yīng)來完成;現(xiàn)場數(shù)據(jù)?;蛑袛囗憫?yīng)來完成;現(xiàn)場數(shù)據(jù)保 存可存可通過堆棧操作指令通過堆棧操作指令來實(shí)現(xiàn)。來實(shí)現(xiàn)。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 指令格式:指令格式:PUSHOPRD2 POP OPRD1 堆棧操作時(shí),一定是堆棧操作時(shí),一定是16位操作。位操作。 壓棧指令壓棧指令PUSH 指令格式:指令格式:PUSH OPPUSH OP 指令功能:將寄存器或存儲器單元的內(nèi)容送入堆棧指令功能:將寄存器或存儲器單元的內(nèi)容送入堆棧 OPOP為為1616位的通用寄存器、段寄存器或存儲器。位的通用寄存器、段寄存器或存儲器。 操作過程:操作過程:1 1)SPSP-2 SP
26、SP-2 ;先;先SPSP減減 2 2 2 2)棧)棧內(nèi)容內(nèi)容 ;內(nèi)容進(jìn)棧,;內(nèi)容進(jìn)棧,低字節(jié)在低地低字節(jié)在低地 址,高字節(jié)在高地址址,高字節(jié)在高地址 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 出棧指令出棧指令POP 指令格式:指令格式:POP OPPOP OP 指令功能:將指令功能:將SPSP所指向的堆棧棧頂?shù)囊粋€(gè)字彈到寄存器所指向的堆棧棧頂?shù)囊粋€(gè)字彈到寄存器 或存儲單元中?;虼鎯卧小?OPOP為為1616位操作,可以是寄存器或存儲器操作數(shù)。位操作,可以是寄存器或存儲器操作數(shù)。 操作過程:操作過程:1 1)OPLSP OPLSP ;先棧頂內(nèi)容;先棧頂內(nèi)容 2 2)SPSPSPSP2
27、2 ;修改;修改SPSP,使,使SPSP加加2 2 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例例1: 建棧建棧 80868086通過賦值通過賦值SSSS和和SPSP建棧建棧 MOV AX MOV AX ,1050H1050H MOV SS MOV SS , AXAX MOV SP MOV SP ,000 EH 000 EH 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 壓棧操作:先壓棧操作:先SPSP減減 2 2,再內(nèi)容進(jìn)棧,再內(nèi)容進(jìn)棧 PUSH AX PUSH AX (設(shè)(設(shè) AX=1234HAX=1234H) PUSH BX PUSH BX (設(shè)(設(shè) BX=5CF8HBX=5CF8H
28、) 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 出棧操作:出棧操作:先棧頂內(nèi)容出棧,再修改先棧頂內(nèi)容出棧,再修改SP,使,使SP加加2。(字操作)。(字操作) POP CX POP DS 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例例2:設(shè):設(shè)SS=0100 H, SP=0009H,AX=12C3H, BX = 5070 H PUSH AX ;1 SP SP-2 2 4100841007H AX SP(原棧頂原棧頂) SP - 2(新棧頂新棧頂)SP 0100 0009 SS SP 16 -2 C3 12 01006H 01007H 01008H 01009H 3. 2 8086/808
29、8指令系統(tǒng)指令系統(tǒng) POP AX ;將棧頂兩單元內(nèi)容送;將棧頂兩單元內(nèi)容送AX ;SP SP+2 0100 0007 SS SP 16 +2 SP+2 (新棧頂新棧頂)SP 12C3AX SP(原棧頂原棧頂) C3 12 01006H 01007H 01008H 01009H 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例例 3 : PUSH AX PUSH BX . POP BX POP AX 注:注: 1 1)8086 8086 的堆棧操作是按字進(jìn)行的。的堆棧操作是按字進(jìn)行的。 2 2)每執(zhí)行一條推入堆棧指令,每執(zhí)行一條推入堆棧指令,SP SP 減減 2 2。執(zhí)行彈出指令時(shí),剛好相反,。
30、執(zhí)行彈出指令時(shí),剛好相反, 每彈出每彈出 1 1 個(gè)字,個(gè)字,SPSP的值加的值加 2 2。 3 3)堆棧中的內(nèi)容是按后進(jìn)先出的原則進(jìn)行傳的。堆棧中的內(nèi)容是按后進(jìn)先出的原則進(jìn)行傳的。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 3、交換指令、交換指令 交換可在交換可在CPU的內(nèi)部寄存器之間進(jìn)行,也可以在內(nèi)部的內(nèi)部寄存器之間進(jìn)行,也可以在內(nèi)部 寄存器和存儲器之間進(jìn)行。寄存器和存儲器之間進(jìn)行。 但是段寄存器不能作為本指令的操作數(shù),而且兩個(gè)存但是段寄存器不能作為本指令的操作數(shù),而且兩個(gè)存 儲單元之間不能直接交換數(shù)據(jù)。儲單元之間不能直接交換數(shù)據(jù)。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例例1
31、: XCHG ALXCHG AL,BL BL ;ALAL與與BLBL進(jìn)行字節(jié)互換進(jìn)行字節(jié)互換 XCHG BXXCHG BX,CX CX ;BXBX與與CXCX進(jìn)行字互換進(jìn)行字互換 例例2 2: 寄存器與存儲器之間數(shù)據(jù)交換寄存器與存儲器之間數(shù)據(jù)交換。 MOVMOV AX AX,5678H5678H ;(;(AXAX)=5678H=5678H MOV MOV BX BX,F(xiàn)FFFHFFFFH ;(;(BXBX)=FFFFH=FFFFH XCHG AX XCHG AX,BXBX;(;(AXAX)=FFFFH =FFFFH ,(,( BXBX)=5678H=5678H 3. 2 8086/8088指令
32、系統(tǒng)指令系統(tǒng) 4、換碼指令換碼指令XLAT 格式:格式:XLAT (XLAT (無參數(shù)無參數(shù)) ) ;ALALBX+ALBX+AL 功能:使累加器中的一個(gè)值變換為內(nèi)存表格中的某一個(gè)值。功能:使累加器中的一個(gè)值變換為內(nèi)存表格中的某一個(gè)值。 用來實(shí)現(xiàn)編用來實(shí)現(xiàn)編 碼制的轉(zhuǎn)換。碼制的轉(zhuǎn)換。 要求:要求:BX 寄存器指向表的首地址,寄存器指向表的首地址,AL中為位移量。中為位移量。 將將 BX+AL做為有效地址做為有效地址EA,在一個(gè)表格中找出相應(yīng)單元內(nèi)容放,在一個(gè)表格中找出相應(yīng)單元內(nèi)容放 入入AL。此指令常用來將一種代碼轉(zhuǎn)換為另一種代碼。此指令常用來將一種代碼轉(zhuǎn)換為另一種代碼。 + BX AL BX
33、+AL BX+0 BX+1 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 使用此指令時(shí),應(yīng)首先在數(shù)據(jù)段中預(yù)置一個(gè)表格。該表格使用此指令時(shí),應(yīng)首先在數(shù)據(jù)段中預(yù)置一個(gè)表格。該表格 的最大長度不能超過的最大長度不能超過256256字節(jié)。表的起始地址的偏移量應(yīng)事先字節(jié)。表的起始地址的偏移量應(yīng)事先 裝入裝入BXBX寄存器,寄存器,ALAL中存放查找對象在表中地址與表的起始地址中存放查找對象在表中地址與表的起始地址 相差的字節(jié)數(shù),相差的字節(jié)數(shù),指令執(zhí)行后,指令執(zhí)行后,BX+AL AL ,BX內(nèi)容不變。內(nèi)容不變。 例例1:P102 將數(shù)字09的BCD碼轉(zhuǎn)換為7段LED顯示器的顯示代碼。 數(shù)字?jǐn)?shù)字09的的BC
34、D碼碼對應(yīng)的對應(yīng)的7 7段段LEDLED顯示代碼為:顯示代碼為: 40H,79H,24H,30H,19H,12H,02H,78H40H,79H,24H,30H,19H,12H,02H,78H,00H,18H00H,18H。 十進(jìn)制數(shù)十進(jìn)制數(shù) g f e d c b a 0 0 1 0 0 0 0 0 0 40H 1 0 1 1 1 1 0 0 1 79H 2 0 0 1 0 0 1 0 0 24H 3 0 0 1 1 0 0 0 0 30H a f g b e c d 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 將它們依次存放在偏移地址為將它們依次存放在偏移地址為0800H0800H開始的內(nèi)
35、存區(qū)域。開始的內(nèi)存區(qū)域。 則實(shí)現(xiàn)則實(shí)現(xiàn)BCDBCD碼碼0100B0100B轉(zhuǎn)換的程序段為:轉(zhuǎn)換的程序段為: MOV BX,0800H MOV AL,4 XLAT ;AL19H 0800h 40 79 24 30 19 12 02 78 00 10 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 通用數(shù)據(jù)傳送類指令的總結(jié)通用數(shù)據(jù)傳送類指令的總結(jié) 指令名稱指令名稱操作碼(助記符)操作碼(助記符)操作數(shù)操作數(shù)例子例子 最基本的傳送指令最基本的傳送指令MOV目標(biāo),源目標(biāo),源MOV ARRASI,AL 堆棧指令堆棧指令 把字壓入棧把字壓入棧PUSH源源PUSH AX 把字彈出棧把字彈出棧POP目標(biāo)目標(biāo)PO
36、P DX 交換指令交換指令XCHG目標(biāo),源目標(biāo),源XCHG AX,BX 換碼指令換碼指令XLAT存儲器存儲器XLAT 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 二、地址傳送指令二、地址傳送指令 指令中的源操作數(shù)都必須是存儲器操作數(shù)指令中的源操作數(shù)都必須是存儲器操作數(shù) (1)取有效地址指令()取有效地址指令(LEA) (2)將地址指針?biāo)蛯⒌刂分羔標(biāo)虳S和另一和另一 個(gè)寄存器指令(個(gè)寄存器指令(LDS) (3)將地址指針?biāo)蛯⒌刂分羔標(biāo)虴S和另一和另一 個(gè)寄存器指令(個(gè)寄存器指令(LES) 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) (1 1)取有效地址指令)取有效地址指令(LEA) 格式:格
37、式:LEA OPLEA OP目,目,OPOP源源 功能:將源操作數(shù)的有效地址功能:將源操作數(shù)的有效地址EAEA送到目的操作數(shù)。送到目的操作數(shù)。 要求:要求:源操作數(shù)必須為內(nèi)存單元的地址,目的操作數(shù)必須源操作數(shù)必須為內(nèi)存單元的地址,目的操作數(shù)必須 為一個(gè)為一個(gè)1616位的通用寄存器位的通用寄存器。 例:例:LEA AX,2728H ;AX=2728H LEA BX,BP+SI ;BX=BP+SI的值。 LEA SP ,0482H ;SP=0482H 注:注:MOVMOV指令與指令與LEALEA的不同:的不同: 前者傳送操作數(shù)的內(nèi)容,后者傳送操作數(shù)的地址。前者傳送操作數(shù)的內(nèi)容,后者傳送操作數(shù)的地址
38、。 例:例:MOV DI ,TABLE ;DI TABLE LEA DI ,TABLE ; DI TABLE所在單元的所在單元的EA 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例:比較例:比較 LEA BX,BUFFER MOV BX, BUFFER 兩指令的不同兩指令的不同 存儲單元內(nèi)容如右圖所示。存儲單元內(nèi)容如右圖所示。 DS:093AH,BUFFER 物理地址物理地址 093C3H 則則 LEA BX,BUFFER后,后,BX=0023H MOV BX,BUFFER后,后,BX=0045H 093A0H 093C3H . 差23H 45H 00H 3. 2 8086/8088指令系統(tǒng)
39、指令系統(tǒng) (2 2)將地址指針裝到)將地址指針裝到DSDS和另一個(gè)寄存器指令和另一個(gè)寄存器指令(LDS) 格式:格式: LDS OPLDS OP目,目,OPOP源源 功能:功能: 把把4 4個(gè)字節(jié)地址指針(包括一個(gè)段地址和一個(gè)個(gè)字節(jié)地址指針(包括一個(gè)段地址和一個(gè) 偏移地址)從源操作數(shù)指定的偏移地址)從源操作數(shù)指定的4 4個(gè)存儲單元取出,個(gè)存儲單元取出, 低地址的兩字節(jié)送目的操作數(shù),高地址的兩字節(jié)送低地址的兩字節(jié)送目的操作數(shù),高地址的兩字節(jié)送 DSDS段寄存器。段寄存器。 例例1: LDS DI,2100H 1C H 20 H 21 H B5 H DI=201CH DS=B521H 2100H
40、2101H 2102H 2103H 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例例2:LDS SI,10H 設(shè)指令執(zhí)行前,設(shè)指令執(zhí)行前, DS=C000H,C0010H=0180H,C0012H=2000H 則執(zhí)行后,則執(zhí)行后,SI=0180H,DS=2000H 例例3:LDS BX,DI+1008H 程序執(zhí)行前,程序執(zhí)行前, DS=2500H,DI=2400H, 28408H=3344H, 2840AH=1122H 執(zhí)行后,執(zhí)行后,BX=3344H,DS=1122H 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) (2 2)將地址指針裝到)將地址指針裝到ESES和另一個(gè)寄存器指令和另一個(gè)寄
41、存器指令(LES) n 格式:格式: LES OPLES OP目,目,OPOP源源 n 功能:功能: 把把4 4個(gè)字節(jié)地址指針(包括一個(gè)段地址和一個(gè)個(gè)字節(jié)地址指針(包括一個(gè)段地址和一個(gè) 偏移地址)從源操作數(shù)指定的偏移地址)從源操作數(shù)指定的4 4個(gè)存儲單元取出,個(gè)存儲單元取出, 低地址的兩字節(jié)送目的操作數(shù),高地址的兩字節(jié)送低地址的兩字節(jié)送目的操作數(shù),高地址的兩字節(jié)送 ESES段寄存器。段寄存器。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 三、標(biāo)志位傳送指令三、標(biāo)志位傳送指令 標(biāo)志位傳送指令專門用于對標(biāo)志寄存器(標(biāo)志位傳送指令專門用于對標(biāo)志寄存器(FR)的保護(hù)和更新操)的保護(hù)和更新操 作。作。
42、指令的操作數(shù)隱含。指令的操作數(shù)隱含。 (1)讀取標(biāo)志指令)讀取標(biāo)志指令 (2)設(shè)置標(biāo)志指令設(shè)置標(biāo)志指令 (3)標(biāo)志寄存器壓棧指令標(biāo)志寄存器壓棧指令 (4)標(biāo)志寄存器出棧指令)標(biāo)志寄存器出棧指令 標(biāo)志位傳送指令標(biāo)志位傳送指令 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 回顧標(biāo)志寄存器回顧標(biāo)志寄存器FR: 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) (1)讀取標(biāo)志指令)讀取標(biāo)志指令LAHF(Load AH with Flag ) 格式:格式:LAHFLAHF 功能:將標(biāo)志寄存器的低功能:將標(biāo)志寄存器的低8 8位送入位送入AHAH寄存器,寄存器, 即(即(FLAGFLAG)7-0AH7-0AH。
43、該指令的執(zhí)行對標(biāo)志位無影響。該指令的執(zhí)行對標(biāo)志位無影響。 (2)設(shè)置標(biāo)志指令)設(shè)置標(biāo)志指令SAHF(Save AH into Flag ) 格式:格式:SAHFSAHF 功能:將功能:將AHAH的內(nèi)容送入標(biāo)志寄存器的低的內(nèi)容送入標(biāo)志寄存器的低8 8位,高位,高8 8位不變,位不變, 即(即(AHAH)(FLAGFLAG)7-07-0,從該指令功能可看出,從該指令功能可看出, SAHFSAHF為為LAHFLAHF的逆過程。的逆過程。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) (3)標(biāo)志寄存器壓棧指令標(biāo)志寄存器壓棧指令PUSHF 指令格式:指令格式:PUSHFPUSHF 指令功能:堆棧指針指令
44、功能:堆棧指針SPSP減減2 2,將,將1616位標(biāo)志寄存器入棧,標(biāo)志寄位標(biāo)志寄存器入棧,標(biāo)志寄 存器的值不變。存器的值不變。 (4)標(biāo)志寄存器彈出堆棧指令標(biāo)志寄存器彈出堆棧指令POPF 指令格式:指令格式:POPFPOPF 指令功能:將棧頂?shù)囊粋€(gè)字送標(biāo)志寄存器,同時(shí)修改棧指針指令功能:將棧頂?shù)囊粋€(gè)字送標(biāo)志寄存器,同時(shí)修改棧指針SPSP, SPSP2 2。 PUSHF POP AX OR AH,01H PUSH AX POPF 利用這兩條指令還可以方便的利用這兩條指令還可以方便的 修改修改FR中某一位。如,中某一位。如,86/8088 系統(tǒng)中無直接能修改系統(tǒng)中無直接能修改TF標(biāo)志位標(biāo)志位 的指
45、令,可用右邊程序?qū)崿F(xiàn):的指令,可用右邊程序?qū)崿F(xiàn): 在子程序調(diào)用或中斷子程序中,常用此保護(hù)和恢復(fù)需要的標(biāo)志位。在子程序調(diào)用或中斷子程序中,常用此保護(hù)和恢復(fù)需要的標(biāo)志位。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 四、輸入四、輸入/輸出數(shù)據(jù)傳送指令輸出數(shù)據(jù)傳送指令 IN/OUT 當(dāng)端口地址當(dāng)端口地址256(8根地址線)根地址線)時(shí)時(shí),該地址直接出現(xiàn)在指令中。,該地址直接出現(xiàn)在指令中。 當(dāng)端口地址當(dāng)端口地址256(816根地址線)根地址線)時(shí)時(shí),該地址置于,該地址置于DX并將并將DX 放在放在 指令中。指令中。 指令格式:指令格式: IN 累加器,累加器, 外設(shè)端口地址外設(shè)端口地址 OUT 外設(shè)
46、端口地址,外設(shè)端口地址, 累加器累加器 具體指令有:具體指令有: INAL,imm8 OUTimm8,AL INAX,imm8 OUTimm8,AX INAL,DX OUTDX, AL INAX,DX OUTDX, AX 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 1 1、 IN IN 指令指令 IN指令的四種形式:指令的四種形式: 語句格式:語句格式:INAL,PORT 功能:(功能:(PORT)AL 語句格式:語句格式:INAX,PORT 功能:(功能:(PORT)AX 語句格式:語句格式:INAL,DX 功能:(功能:(DX)AL 語句格式:語句格式:INAX,DX 功能:(功能:(D
47、X)AL IN AL, 20H IN AX, 30H IN AL,DX IN AX,DX IN指令的例子:指令的例子: 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 2 2、OUT OUT 指令指令 語句格式:語句格式:OUTPORT,AL 功能:(功能:(AL)PORT 語句格式:語句格式:OUTPORT,AX 功能:(功能:(AX)PORT 語句格式:語句格式:OUTDX,AL 功能:(功能:(AL)DX 語句格式:語句格式:OUTDX,AX 功能:(功能:(AX)DX OUT 46H,AL OUT 80H,AX OUT DX,AL OUT DX, AX OUT指令的四種形式:指令的四種形
48、式: OUT指令的例子:指令的例子: 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例:例: IN AX,20H ;從端口20H20H輸入1616位數(shù)到AXAX MOV DX,3F0H IN AL ,DX ;從端口03F0H03F0H輸入8 8位數(shù)到ALAL OUT 27H,AL ;將8 8位數(shù)從ALAL輸出到端口27H27H OUT DX ,AX ;將1616位數(shù)從AXAX輸出到DXDX指定的端口 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 3.2.1 3.2.1 數(shù)據(jù)傳送類指令小節(jié)數(shù)據(jù)傳送類指令小節(jié) 指令類型指令類型指令功能指令功能指令書寫格式指令書寫格式 通用數(shù)據(jù)傳送通用數(shù)據(jù)傳送 字節(jié)
49、或字傳送字節(jié)或字傳送 字壓入堆棧字壓入堆棧 字彈出堆棧字彈出堆棧 字節(jié)或字交換字節(jié)或字交換 換碼指令換碼指令 MOV MOV 目標(biāo),源目標(biāo),源 PUSH PUSH 源源 POP POP 目標(biāo)目標(biāo) XCHG XCHG 目標(biāo),源目標(biāo),源 XLATXLAT 目標(biāo)地址傳送目標(biāo)地址傳送 裝入有效地址裝入有效地址 裝入裝入DSDS寄存器寄存器 裝入裝入ESES寄存器寄存器 LEA LEA 目標(biāo),源目標(biāo),源 LDS LDS 目標(biāo),源目標(biāo),源 LES LES 目標(biāo),源目標(biāo),源 標(biāo)志位傳送標(biāo)志位傳送 將將FRFR低字節(jié)裝入低字節(jié)裝入AHAH寄存器寄存器 將將AHAH內(nèi)容裝入內(nèi)容裝入FRFR低字節(jié)低字節(jié) 將將FR
50、FR內(nèi)容壓棧內(nèi)容壓棧 從堆棧中彈出一個(gè)字給從堆棧中彈出一個(gè)字給FRFR LAHFLAHF SAHFSAHF PUSHFPUSHF POPFPOPF 輸入輸入/ /輸出數(shù)據(jù)傳送輸出數(shù)據(jù)傳送 從端口讀入到從端口讀入到ALAL或或AXAX 從從ALAL或或AXAX輸出到端口輸出到端口 IN AL/AXIN AL/AX,PORTPORT OUT PORTOUT PORT,AL/AXAL/AX 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 3.2.2 3.2.2 算術(shù)運(yùn)算類指令(共算術(shù)運(yùn)算類指令(共2020條)條) 1.算術(shù)運(yùn)算的數(shù)據(jù)類型算術(shù)運(yùn)算的數(shù)據(jù)類型 加加 減減 乘乘 除除 ( (帶 帶 不帶進(jìn)位
51、加)不帶進(jìn)位加) ( (帶 帶 不帶借位減)不帶借位減) 加加 減減加加 減減 乘乘 除除 壓縮壓縮BCDBCD數(shù)數(shù) ( (無符號)無符號) 非壓縮非壓縮BCDBCD數(shù)數(shù) ( (無符號)無符號) 二進(jìn)制數(shù)二進(jìn)制數(shù) ( (無、有符號)無、有符號) 壓縮BCD數(shù):一個(gè)字節(jié) 099 非壓縮BCD數(shù):一個(gè)字節(jié) 09 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 2.2.算術(shù)運(yùn)算指令與標(biāo)志算術(shù)運(yùn)算指令與標(biāo)志 特征:特征:所有的算術(shù)類指令都影響所有的算術(shù)類指令都影響Flag,Flag,這些標(biāo)志可用于測試,以決定這些標(biāo)志可用于測試,以決定 程序的走向。程序的走向。 注:除注:除CBWCBW、CWDCWD 不
52、影響標(biāo)志,不影響標(biāo)志,INCINC、 DECDEC不改變不改變CFCF外。外。 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 一、二進(jìn)制算術(shù)運(yùn)算指令一、二進(jìn)制算術(shù)運(yùn)算指令 1、不帶進(jìn)位的加法指令不帶進(jìn)位的加法指令 格式:格式: ADD OPADD OP目,目,OPOP源源 功能:功能: 將源操作數(shù)和目的操作數(shù)相加,結(jié)果保留在目的操作數(shù)將源操作數(shù)和目的操作數(shù)相加,結(jié)果保留在目的操作數(shù) 中,并根據(jù)結(jié)果設(shè)置標(biāo)志。中,并根據(jù)結(jié)果設(shè)置標(biāo)志。 源源(Reg,mem,imm),(Reg,mem,imm),目標(biāo)目標(biāo)(Reg,mem),(Reg,mem),且兩個(gè)操作數(shù)不能同時(shí)為且兩個(gè)操作數(shù)不能同時(shí)為mem.me
53、m. 例:求例:求 12345H+65400H,和存入,和存入DATA0中中 MOV AX,1234 ADD AX,65400 MOV DATA0,AX 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例例 設(shè)設(shè)AXAX65A0H65A0H,BX=B79EHBX=B79EH 執(zhí)行執(zhí)行 ADD BXADD BX,AX AX 具體執(zhí)行情況如下:具體執(zhí)行情況如下: 0110010110100000 +) 1011011110011110 1 0001110100111110 有進(jìn)位,有進(jìn)位,CF=1 最高位最高位0,SF=0 最高,次高位都有進(jìn)位,最高,次高位都有進(jìn)位, OF=0 CF=1,CF=1,
54、若若BX,AXBX,AX中存放的是無符號數(shù),則結(jié)果中存放的是無符號數(shù),則結(jié)果 65535 65535 OF=0,OF=0,若若BX,AXBX,AX中存放的是帶符號數(shù)中存放的是帶符號數(shù), ,則結(jié)果在則結(jié)果在1616位補(bǔ)位補(bǔ) 碼所能表示的范圍碼所能表示的范圍(-32768(-3276832767)32767)內(nèi)。內(nèi)。 由以上結(jié)果知:由以上結(jié)果知: 結(jié)果非結(jié)果非0,ZF0 無進(jìn)位,無進(jìn)位,AF=0 低低8位位5個(gè)個(gè)1,PF=0 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 2、 格式:格式: ADC OP目,目,OP源源 功能:功能: 將源操作數(shù)、目的操作數(shù)及將源操作數(shù)、目的操作數(shù)及CF的值相加,結(jié)
55、果保留在目的值相加,結(jié)果保留在目 的操作數(shù)中,并根據(jù)結(jié)果設(shè)置標(biāo)志。的操作數(shù)中,并根據(jù)結(jié)果設(shè)置標(biāo)志。 例:例:無符號雙字加法運(yùn)算。無符號雙字加法運(yùn)算。 MOVAX,4652H;(;(AX)=4652H ADDAX,F(xiàn)0F0H;(;(AX)=3742H,CF=1 MOVDX,0234H;(;(DX)=0234H ADCDX,F(xiàn)0F0H;(;(DX)=0F325H,CF=0 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 例例:有兩個(gè):有兩個(gè)4字節(jié)無符號數(shù)放在字節(jié)無符號數(shù)放在2000H和和3000H單元中,低位在單元中,低位在 前,高位在后,將兩個(gè)數(shù)相加,結(jié)果放前,高位在后,將兩個(gè)數(shù)相加,結(jié)果放200
56、0H開始的單元。開始的單元。 10008432H+20007F00H = ? 算法分析算法分析: 可以將兩個(gè)可以將兩個(gè)4字節(jié)無符號數(shù)相加字節(jié)無符號數(shù)相加 看成看成2個(gè)字相加個(gè)字相加; 兩個(gè)數(shù)的低位字相加后,將可能兩個(gè)數(shù)的低位字相加后,將可能 產(chǎn)生進(jìn)位產(chǎn)生進(jìn)位CF; 高位字相加,應(yīng)再加上進(jìn)位位高位字相加,應(yīng)再加上進(jìn)位位; 3000H 32 84 00 10 00 7F 00 20 SI DI 2000H 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 程序程序: CLC ;清進(jìn)位清進(jìn)位 MOV SI , 2000H ;取第一個(gè)數(shù)的首地址取第一個(gè)數(shù)的首地址 MOV AX, SI ;第一個(gè)數(shù)的低第一個(gè)
57、數(shù)的低16位送到位送到AX MOV DI , 3000H ;取第二個(gè)字的首地址取第二個(gè)字的首地址 ADD AX , DI ;第一個(gè)數(shù)和第二個(gè)數(shù)相加第一個(gè)數(shù)和第二個(gè)數(shù)相加 MOV SI, AX ;送低送低16位結(jié)果倒位結(jié)果倒2000H單元單元 MOV AX, SI+2 ; 第二個(gè)數(shù)的高第二個(gè)數(shù)的高16位送位送AX ADC AX , DI+2 ;高高16位數(shù)據(jù)相加位數(shù)據(jù)相加 MOV SI+2,AX 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 3、減指令減指令SUB(Subtraction) 格式格式:SUB OP目,目,OP源;(源;( OP目)目)( OP目)目)-( OP源)源) OP源:立
58、即數(shù),寄存器,存儲器。源:立即數(shù),寄存器,存儲器。 OP目:寄存器,存儲器。目:寄存器,存儲器。 源源(Reg,mem,imm),(Reg,mem,imm),目標(biāo)目標(biāo)(Reg,mem),(Reg,mem),且兩個(gè)操作數(shù)不能同時(shí)為且兩個(gè)操作數(shù)不能同時(shí)為mem.mem. 例:例: SUB AL,37H;寄存器寄存器-立即數(shù)立即數(shù) SUB BX,DX;寄存器寄存器-寄存器寄存器 SUB CX, VAR1;寄存器寄存器-存儲器存儲器 SUB ARRAYSI, AX;存儲器存儲器-寄存器寄存器 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 4、帶進(jìn)位減法指令帶進(jìn)位減法指令 SBB( Subtractio
59、n with borrow) 格式格式:SBB OP目,目,OP源;(源;(OP目)目)(OP目)目)-(OP源)源)-CF CF: 進(jìn)位標(biāo)志進(jìn)位標(biāo)志CF的現(xiàn)行值的現(xiàn)行值(上條指令上條指令CF值值) OP源:立即數(shù),寄存器,存儲器。源:立即數(shù),寄存器,存儲器。 OP目:寄存器,存儲器目:寄存器,存儲器。 用途用途:用于多字節(jié)數(shù)相加:用于多字節(jié)數(shù)相加 例:例:SBB BX,100H;寄存器寄存器-立即數(shù)立即數(shù) -CF SBB CX,DX;寄存器寄存器-寄存器寄存器-CF SBB AL, DATA1SI;寄存器寄存器-存儲器存儲器-CF SBB DISPBP, BL;存儲器存儲器-寄存器寄存器-C
60、F 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 5、 格式:格式: INC OPINC OP 功能:功能: 將操作數(shù)加將操作數(shù)加1 1,再送回該操作數(shù)。這條指令一般用于循環(huán)程,再送回該操作數(shù)。這條指令一般用于循環(huán)程 序的指針修改。操作數(shù)可以是序的指針修改。操作數(shù)可以是8 8位位/16/16位通過寄存器或存儲位通過寄存器或存儲 器,不能為立即數(shù)。器,不能為立即數(shù)。 此指令不影響此指令不影響CF.CF. 例:例: INC INC CXCX ;CXCX寄存器中的內(nèi)容加寄存器中的內(nèi)容加1 1 3. 2 8086/8088指令系統(tǒng)指令系統(tǒng) 6、減減 1 指令指令DEC (Decrement by 1
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療廢棄物的分類處理
- 2024年09月北京中國郵政儲蓄銀行總行社會招考筆試歷年參考題庫附帶答案詳解
- 2024年09月北京中國郵政儲蓄銀行總行信息科技社會招考筆試歷年參考題庫附帶答案詳解
- 《推拿學(xué)》第一章概論課件
- 2024年09月云南2024屆廣發(fā)銀行昆明分行校園招考筆試歷年參考題庫附帶答案詳解
- 2024年09月2024華夏銀行紹興分行校園招聘筆試歷年參考題庫附帶答案詳解
- 2024年08月江蘇省姜堰農(nóng)村商業(yè)銀行度社會招考3名科技專業(yè)人才筆試歷年參考題庫附帶答案詳解
- 2024年08月恒豐銀行濟(jì)南分行社會招考工作人員筆試歷年參考題庫附帶答案詳解
- 2024年08月中國光大銀行深圳分行大堂經(jīng)理招聘筆試歷年參考題庫附帶答案詳解
- 2024年08月中國光大銀行烏魯木齊分行信用審批部專職審批人招聘筆試歷年參考題庫附帶答案詳解
- 2025福建中閩海上風(fēng)電限公司招聘14人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 智能網(wǎng)聯(lián)汽車技術(shù)應(yīng)用專業(yè)國家技能人才培養(yǎng)工學(xué)一體化課程標(biāo)準(zhǔn)
- 漢字文化解密學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 大數(shù)據(jù)平臺及風(fēng)險(xiǎn)預(yù)警系統(tǒng)采購項(xiàng)目需求說明書天津?yàn)I海農(nóng)村商業(yè)銀行【模板】
- 清華抬頭信紙
- 八年級心理健康教育《自控力——成功的標(biāo)尺》課件
- 施工現(xiàn)場節(jié)電方法
- 水利工程安全生產(chǎn)組織機(jī)構(gòu)
- 廣東省佛山市南海區(qū)人民法院
- 我縣教育發(fā)展面臨的問題及對策建議
- 口腔修復(fù)學(xué)專業(yè)英語詞匯整理
評論
0/150
提交評論