汇编语言第3章指令系统和寻址方式

上传人:san****019 文档编号:21710395 上传时间:2021-05-07 格式:PPT 页数:80 大小:783KB
收藏 版权申诉 举报 下载
汇编语言第3章指令系统和寻址方式_第1页
第1页 / 共80页
汇编语言第3章指令系统和寻址方式_第2页
第2页 / 共80页
汇编语言第3章指令系统和寻址方式_第3页
第3页 / 共80页
资源描述:

《汇编语言第3章指令系统和寻址方式》由会员分享,可在线阅读,更多相关《汇编语言第3章指令系统和寻址方式(80页珍藏版)》请在装配图网上搜索。

1、 指 令 简 介 : 操 作 码 操 作 数 1.操 作 码 2.操 作 数 : 无 操 作 数 , 单 操 作 数 , 双 操 作数 , 三 操 作 数 有 效 地 址 ( EA) : 即 上 章 的 偏 移 地 址 段 超 越 寻 址 方 式( 一 ) 与 数 据 有 关 的 寻 址 方 式1.立 即 数 寻 址 ( Immediate addressing) 例 : mov AL, 5 ( AL) =5用 途 : 初 始 化 2.寄 存 器 寻 址 ( Register addressing) 例 : mov AL, DH ( AL) =( DH) mov BX, SI ( BX) =(

2、 SI)寄 存 器 有 : AX, BX, CX, DX, SP, BP, SI, DI AH, AL, BH, BL, CH, CL, DH, DL 用 途 : 单 个 数 据 传 送 以 下 五 种 寻 址 方 式 均 对 内 存 进 行 的物 理 地 址 =段 首 地 址 x16+EAEA=基 址 ( base) +变 址 ( index) +偏 移 量 ( displacement)3.直 接 寻 址 方 式 ( Direct addressing) EA=displacement注 : 默 认 段 是 数 据 段物 理 地 址 =( DS) *16+EA 例 : mov AL, 12

3、00H ( DS) =1000H EA=1200H物 理 地 址 =DS*16+1200=11200H 若 : (11200)=3AH则 , ( AL) =3AH允 许 段 超 越 。例 : mov AL, ES: 1200H用 途 : 处 理 单 个 数 据 4.寄 存 器 间 接 寻 址 方 式 ( register indirect addressing) EA=基 址 ( base) 或 变 址 ( index) 基 址 寄 存 器 有 : BX, BP变 址 寄 存 器 有 : SI, DI注 : 默 认 段 是 数 据 段 和 堆 栈 段 ( SI)物 理 地 址 =( DS) *

4、16+( BX) ( DI) =( SS) *16+( BP) 例 : mov AX, BX ( DS) =1000H ( BX) =1200H物 理 地 址 =DS*16+( BX) =DS*16+1200=11200H 若 : (11200)=34H, ( 11201) =12H则 , ( AX) =1234H允 许 段 超 越 。例 : mov AL, ES: BX用 途 : 处 理 成 组 数 据 (举 例 说 明 ) 5.寄 存 器 相 对 寻 址 方 式 ( register relative addressing) EA=基 址 ( base) 或 变 址 ( index) +偏

5、 移 量 ( displacement)基 址 寄 存 器 有 : BX, BP变 址 寄 存 器 有 : SI, DI注 : 默 认 段 是 数 据 段 和 堆 栈 段 ( SI)物 理 地 址 =( DS) *16+( BX) +displacement ( DI) =( SS) *16+( BP) +displacement 例 : mov AX, VARBX ( DS) =1000H, ( BX) =1200H, VAR=1000H物 理 地 址 =DS*16+( BX) +VAR =DS*16+1200+1000=12200H 若 : (12200)=34H, ( 12201) =1

6、2H则 , ( AX) =1234H允 许 段 超 越 。例 : mov AL, ES: VARBX用 途 : 处 理 成 组 数 据 (举 例 说 明 ) 6.基 址 变 址 寻 址 方 式 ( based indexed addressing) EA=基 址 ( base) +变 址 ( index)基 址 寄 存 器 有 : BX, BP变 址 寄 存 器 有 : SI, DI注 : 默 认 段 是 数 据 段 和 堆 栈 段 物 理 地 址 =( DS) *16+( BX) + ( SI) ( DI) =( SS) *16+( BP) + ( SI) ( DI) 例 : mov AX,

7、 BXDI ( DS) =1000H, ( BX) =1200H, ( DI) =1000H物 理 地 址 =DS*16+( BX) +( DI) =DS*16+1200+1000=12200H 若 : (12200)=34H, ( 12201) =12H则 , ( AX) =1234H允 许 段 超 越 。例 : mov AL, ES: BXDI用 途 : 处 理 成 组 数 据 (举 例 说 明 ) 7.相 对 基 址 变 址 寻 址 方 式 ( relative based indexed addressing) EA=基 址 ( base) +变 址 ( index) +偏 移 量 (

8、 displacement) 基 址 寄 存 器 有 : BX, BP变 址 寄 存 器 有 : SI, DI注 : 默 认 段 是 数 据 段 和 堆 栈 段 物 理 地 址 =( DS) *16+( BX) + ( SI) +displacement ( DI) =( SS) *16+( BP) + ( SI) +displacement ( DI) 例 : mov AX, ARRAYBXDI ( DS) =1000H, ( BX) =1200H, ( DI) =1000H, ARRAY=1000H物 理 地 址 =DS*16+( BX) +( DI) +ARRAY =DS*16+1200

9、+1000+1000=13200H 若 : (13200)=34H, ( 13201) =12H则 , ( AX) =1234H允 许 段 超 越 。例 : mov AL, ES: ARRAYBXDI用 途 : 处 理 成 组 数 据 (举 例 说 明 ) ( 二 ) 与 转 移 地 址 有 关 的 寻 址 方 式 -寻 找 指 令 位 置物 理 地 址 =CS*16+IP段 内 寻 址 : 修 改 IP段 间 寻 址 : 修 改 CS, IP1.段 内 直 接 寻 址 ( intrasegment direct addressing) ( IP) 新 = EA=( IP) 旧 +D8或 16

10、 分 类 : 短 跳 转 D8 例 : JMP SHORT next 近 跳 转 D 16 例 : JMP NEAR PTR AGAIN 2.段 内 间 接 寻 址 ( intrasegment indirect addressing) ( IP) 新 =EA=寄 存 器 或 存 储 单 元 的 内 容寄 存 器 : 所 有 寄 存 器 寻 址 方 式 可 用 的 寄 存 器存 储 单 元 : 所 有 存 储 单 元 寻 址 方 式 均 适 用例 : JMP SI ( IP) =( SI) JMP WORD PTR VAR或 简 写 JMP VAR ( DS) =1000H, VAR=2000

11、H 存 储 单 元 的 物 理 地 址 =( DS) *16+VAR=12000H ( 12000H) =1234H 则 , ( IP) 新 =1234H 3.段 间 直 接 寻 址 ( intersegment direct addressing) ( IP) 新 和 ( CS) 新 来 源 当 前 指 令例 : JMP FAR PTR NEXT 4.段 间 间 接 寻 址 ( intersegment indirect addressing) ( IP) 新 和 ( CS) 新 来 源 存 储 单 元 的 内 容存 储 单 元 : 所 有 存 储 单 元 寻 址 方 式 均 适 用例 :

12、JMP DWORD PTR VAR ( DS) =1000H, VAR=2000H 存 储 单 元 的 物 理 地 址 =( DS) *16+VAR=12000H ( 12000H) =1234H, ( 12002H) =2000H 则 , ( IP) 新 =1234H ( CS) 新 =2000H 一 、 数 据 传 送 指 令1.通 用 数 据 传 送 指 令 MOV 传 送 ( move)格 式 : MOV DST, SRC ; B/W/DW操 作 : ( DST) ( SRC) MOV mem/reg1,mem/reg2 MOV reg/mem, data MOV segreg, me

13、m/reg MOV mem/reg, segreg *双 操 作 数 要 求 : 除 源 操 作 数 是 立 即 数 以 外 ,两 个 操 作 数 中 必 须 有 一 个 是 寄 存 器 。 不 允 许 向 CS传 送 数 据 立 即 数 不 能 向 段 寄 存 器 传 送 数 据 不 允 许 在 两 个 段 寄 存 器 之 间 传 送 数 据 立 即 数 不 能 作 目 的 操 作 数 双 操 作 数 , 类 型 要 匹 配 1.指 出 下 列 指 令 源 操 作 数 的 寻 址 方 式 :(1) MOV SI,10 (2) MOV SI,DI+2(3) MOV SI,DI (4) MOV

14、SI,10 (5) MOV SI,BX (6) MOV SI,5BX+DI(7)MOV SI,BP+DI 2. 判 断 下 列 指 令 对 错 :(1) MOV SS,1000H (2) MOV DS, ES(3) MOV CS, AX (4) MOV 5, AL (5) MOV AX, BL (6) MOV BX,SI PUSH 入 栈 指 令 ( push onto the stack) 格 式 : PUSH SRC ; W*单 操 作 数 : 除 立 即 数 以 外 的 其 他 寻 址 方 式 push ax POP 出 栈 ( pop from the stack) 格 式 : POP

15、 DST ; W * CS 不 能 作 操 作 数 POP word ptr BX XCHG 交 换 指 令 格 式 : XCHG OPR1,OPR2 * 不 能 用 于 段 寄 存 器 , 立 即 数 或 存 储 单 元 之 间 1.下 列 寄 存 器 组 中 在 段 内 寻 址 时 可 以 提 供 偏 移 地 址的 是 ( ) A. AX, BX, CX, DX C. SP,IP,BP,DX B. BX, BP, SI, DI D. CS,DS,ES,SS2. 8086/8088确 定 下 一 条 执 行 指 令 物 理 地 址 的 计 算表 达 式 是 ( ) A. (DS) 16+EA

16、 B. (ES) 16+EA C. (SS) 16+EA D. (CS) 16+EA 3. 下 列 pop指 令 中 错 误 的 是 ( ) A. POP CS B. POP BETABX C. POP AX D. POP CX 2. 累 加 器 专 用 传 送 指 令 IN 输 入 ( input) 长 格 式 : ( 00H FFH) IN AL , PORT ;B IN AX , PORT ;W 短 格 式 : (0000H FFFFH) IN AL , DX ;B IN AX , DX ;W OUT 输 出 ( output) 长 格 式 : ( 00H FFH) OUT PORT ,

17、 AL ;B OUT PORT , AX ;W 短 格 式 : (0000H FFFFH) OUT DX , AL ;B OUT DX , AX ;W 例 : 某 接 口 的 命 令 寄 存 器 ( port=126) 的 D7位 控 制 成 组数 据 传 送 。 发 送 成 组 传 送 命 令 。 MOV DX, 126H IN AL, DX OR AL, 80H OUT DX, AL XLAT 换 码 指 令 ( translate) *专 用 AL,BX 表 长 不 超 过 256例 : LEA BX, TABLE ; (BX)=0040H MOV AL, 3 XLAT 指 令 执 行

18、后 (AL)=33H (BX) 30 H F004031 H F0041 (AL) = 3 32 H F0042 33 H F0043TABLE(DS)=F000H 3. 地 址 传 送 指 令 LEA 有 效 地 址 送 寄 存 器 ( load effective address)格 是 : LEA REG , SRC *REG 不 能 用 段 寄 存 器 (以 下 两 个 指 令 均 是 ) 例 : LEA BX, LIST MOV BX, LIST LEA AX, BX AHFLAGS LDS REG , SRC 指 针 送 寄 存 器 和 DS(load DS with pointe

19、r) LES REG , SRC 指 针 送 寄 存 器 和 ES(load ES with pointer)例 : LDS BX, VAR以 上 指 令 均 不 影 响 标 志 位4.标 志 寄 存 器 传 送 指 令 SAHF AH送 标 志 寄 存 器 ( store AH into flags) LAHF 标 志 送 AH (load AH with flags)AH FLAGS PUSHF push the flags POPF pop the flags 例 : 令 flags中 的 TF=1 PUSHF POP AX OR AX,0100H PUSH AX POPF 5.类 型

20、转 换 CBW 字 节 字 ( convert byte to word) AL AX CWD 字 双 字 ( convert word to doubleword) (AX)(DX,AX)*以 上 指 令 除 SAHF和 POPF其 他 指 令 均 不 影 响标 志 位m1010100 mmmmmmmmm1010100 一 、 程 序 开 始 和 结 束 开 始 : NAME 模 块 名或 title 结 束 : END 标 号 二 、 段 的 定 义1. 格 式 : 段 名 segment . 段 名 ends2. ASSUME 段 名 与 段 寄 存 器 的 关 系 格 式 : ASSU

21、ME 段 寄 存 器 : 段 名 , 段 寄 存 器 : 段 名 .3. 取 消 段 与 段 寄 存 器 的 关 系 ASSUME NOTHING或 ASSUME 段 寄 存 器 : nothing, 段 寄 存 器 : nothing.4. 给 段 寄 存 器 赋 值 三 、 数 据 定 义 与 存 储 单 元 分 配格 式 :变 量 名 操 作 码 操 作 数 , 操 作 数 , 操 作 码 : DB, DW, DD, DQ, DT操 作 数 :1. 可 以 是 常 数 , 表 达 式 或 地 址例 : VAR1 DW 1234H, 5678H VAR2 DB 12*4+5 VAR3 DW

22、 VAR1 VAR4 DD VAR1 2.是 字 符 串 例 : STR1 DB A, B STR2 DW AB STR3 DB ABCDEF3.是 空 单 元 ? 例 : array dw ? , ?4. 复 制 操 作 符 DUP 格 式 : 重 复 次 数 dup ( 内 容 )例 : DW 100 DUP( ? ) DW 10 DUP( 1, 2, 3 DUP( 4, 5) , 6) 允 许 嵌 套 5.操 作 数 类 型 匹 配 例 : VAR1 DB 12H, 34H VAR2 DW 5678H MOV AX, VAR1+1( 错 ) MOV AL, VAR2+1 ( 错 ) MO

23、V AX, WORD PTR VAR1+1 ( AX) =7834H MOV AL, BYTE PTR VAR2+1 ( AL) =56H 1. 将 数 据 37H定 义 为 字 节 变 量 X1的 是 ( ) ; 将 其定 义 为 字 变 量 X2的 是 ( ) 。 A.X1 DB 37 B. X2 DB 37 C. X1 DW 37H D.X2 DW 37H E. X1 DB 37H F. X2 DB 37H2. 若 要 求 不 产 生 汇 编 错 误 , 则 字 符 串 “ ABC”只 能 出现 在 伪 指 令 ( ) 中 。 A.DB B. DW C.DD D.DQ3.用 一 条 指

24、令 实 现 (AX) (BX)+(SI)的 方 法 是 ( ) A. XCHG BX,BXSI B.MOV AX,BXSI C. MOV AX,BX+SI D.LEA AX,BXSI 二 、 算 术 指 令1.加 法 指 令 ADD 加 法 ( add) 格 式 : ADD DST , SRC ;B/W ( DST) ( SRC) +( DST) ADC 带 进 位 加 法 ( add with carry) 格 式 : ADC DST , SRC ;B/W ( DST) ( SRC) +( DST) +CF*ADD,ADC影 响 所 有 条 件 标 志 位CF,OF的 表 示 含 义 0 2

25、55 -128 127 二 进 制 看 作 无 符 号 看 作 有 符 号(1) 0000 0100 4 +4 + 0000 1011 + 11 +(+11) 0000 1111 15 15 CF=0 OF=0(2) 0000 0111 7 +7 +1111 1011 +251 + (-5) 10000 0010 258 +2 CF=1 OF=0(3) 0000 1001 9 +9 +0111 1100 +124 +(+124) 1000 0101 133 +133 CF=0 OF=1(-123) (4) 1000 0111 135 (-121) +1111 0101 +245 + (-11)

26、 10111 1100 380 -132 CF=1 (124) OF=1(124)结 论 : CF用 来 表 示 无 符 号 溢 出 ; OF用 来 表 示 有 符 号 溢 出 例 : 双 字 加 ( DX,AX) +( BX,CX) ( DX,AX) =0001804FH ( BX,CX) =0002D123H ADD AX,CX ADC DX,BX 1000 0000 0100 1111 0001H +1101 0001 0010 0011 0002H 10101 0001 0111 0010 + CF SF=0, OF=1,CF=1,ZF=0 4H SF=0,OF=0,CF=0,ZF=0

27、 INC 加 1指 令 ( increment)格 式 : INC OPR ;B/W ( OPR) ( OPR) +1*该 指 令 除 CF标 志 位 外 , 影 响 其 他 所 有 标 志 位 2.减 法 指 令 SUB 减 法 ( subtract )格 式 : SUB DST , SRC ;B/W ( DST) ( DST) -( SRC) SBB 带 借 位 减 法 ( subtract with borrow)格 式 : SBB DST , SRC ;B/W ( DST) ( DST) -( SRC) -CFSub,sbb影 响 所 有 条 件 标 志 位 DEC 减 1指 令 (

28、decrement)格 式 : DEC OPR ;B/W ( OPR) ( OPR) -1*该 指 令 除 CF标 志 位 外 , 影 响 其 他 所 有 标 志 位 NEG 求 补 指 令 格 式 : NEG OPR ;B/W ( OPR) 0-( OPR) CMP 比 较 ( compare)格 式 : CMP OPR1 ,OPR2 ;B/W ( OPR1) -( OPR2)neg,cmp影 响 所 有 条 件 标 志 位 例 : 双 字 减 ( DX,AX) -( BX,CX) ( DX,AX) =0005404FH ( BX,CX) =00029123H SUB AX,CX SBB D

29、X,BX 1 0100 0000 0100 1111 0005H - 1001 0001 0010 0011 0002H 1010 1111 0010 1100 - CF SF=1, OF=1, CF=1, ZF=0 2H SF=0,OF=0,CF=0,ZF=0 例 : 编 程 X-Y+Z-80W,其 中 X,Y,Z,W 均 为 双 字 存 于 数 据 段 DATA SEGMENT X DW 34H,12H Y DW 78H,56H Z DW 11H ,77H W DW 2 DUP( ? ) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA MOV

30、AX,DATA MOV DS,AX MOV AX, X SUB AX, Y MOV DX, X+2 SBB DX, Y+2 ; (DX,AX) X-Y ADD AX, Z ADC DX, Z+2 ;(DX,AX) X-Y+Z SUB AX, 80 SBB DX, 0 ;(DX,AX) X-Y+Z-80 MOV W, AX MOV W+2, DX MOV AH, 4CH INT 21H CODE ENDS END 3.乘 法 指 令 MUL 无 符 号 乘 ( unsigned multiple) 格 式 : MUL SRC ;B/W ( AX) ( AL) *( SRC) B ( DX,AX)

31、 ( AX) *( SRC) W IMUL 带 符 号 乘 ( signed multiple) 格 式 : IMUL SRC ;B/W ( AX) ( AL) *( SRC) B ( DX,AX) ( AX) *( SRC) W*只 影 响 of和 cf, 其 他 标 志 位 无 定 义 4.除 法 指 令 DIV 无 符 号 除 ( unsigned divide) 格 式 : DIV SRC ;B/W ( AL) ( AX) /( SRC) B的 商 ( AH) ( AX) /( SRC) B的 余 数 ( AX) ( DX,AX) /( SRC) W的 商 ( DX) ( DX,AX)

32、 /( SRC) W的 余 数 IDIV 带 符 号 除 ( signed divide) 格 式 : IDIV SRC ;B/W ( AL) ( AX) /( SRC) B的 商 ( AH) ( AX) /( SRC) B的 余 数 ( AX) ( DX,AX) /( SRC) W的 商 ( DX) ( DX,AX) /( SRC) W的 余 数*对 所 有 标 志 位 无 定 义 , 余 数 符 号 与 被 除 数 相 同 例 : 编 程 (W-(X*Y-Z+40)/X ,其 中 W,X,Y,Z为 带 符 号 字 数 据 MOV AX, X IMUL Y ;(DX,AX) X*Y MOV

33、CX, DX MOV BX, AX ; (CX,BX) X*Y MOV AX, Z CWD ;(DX,AX) Z(32位 ) SUB BX, AX SBB CX, DX ; (CX,BX) X*Y-Z ADD BX, 40 ADC CX, 0 ; (CX,BX) X*Y-Z+40 MOV AX, W CWD ;(DX,AX) W(32位 ) SUB AX, BX SBB DX, CX ; (DX,AX) W-(X*Y-Z+40) IDIV X 5.十 进 制 调 整 指 令 概 念 : 压 缩 BCD码 ( packed BCD format) 非 压 缩 BCD码 ( unpacked BC

34、D format)调 整 原 理 : A F之 间 的 数 据 最 高 位 有 进 位 原 值 +( -) 6进 行 调 整( 1) 压 缩 BCD码 调 整 指 令 DAA 加 法 调 整 指 令 ( decimal adjust after addition) 操 作 : 先 做 加 法 , 和 放 在 AL;对 AL调 整 后 把 结 果 放 回 AL。 例 : ( BCD1) +( BCD2) =( BCD3) MOV AL, BCD1 ADD AL, BCD2 DAA MOV BCD3, AL DAS 减 法 调 整 指 令 ( decimal adjust after substr

35、action) 操 作 : 先 做 减 法 , 差 放 在 AL;对 AL调 整 后 把 结 果 放 回 AL。*以 上 两 个 指 令 除 对 OF无 定 义 以 外 , 影 响 所 有 其 他 标 志 位( 2) 非 压 缩 BCD码 调 整 指 令 AAA 加 法 调 整 指 令 ( ASCII adjust after addition) 操 作 : 先 做 加 法 , 和 放 在 AL;对 AL调 整 后 把 结 果 放 回 AL。 AAS 减 法 调 整 指 令 ( ASCII adjust after substraction) 操 作 : 先 做 减 法 , 差 放 在 AL;

36、对 AL调 整 后 把 结 果 放 回 AL。*以 上 两 个 指 令 只 对 AF和 CF有 影 响 例 : MOV AH, 0 MOV AL, 8 ADD AL, 2 AAA ;(AX)=0100H AAM 乘 法 调 整 指 令 ( ASCII adjust after multiplication)操 作 : 先 做 乘 法 , 积 放 在 AL;对 AL调 整 后 把 结 果 放 回 AX。调 整 过 程 : AL/10, 商 放 在 AH中 , 余 数 放 在 AL中 。要 求 : 乘 之 前 , BCD码 高 四 位 清 零例 : VAR DB 05,06 MOV BL, VAR

37、 MOV AL, VAR+1 MUL BL AAM AAD 除 法 调 整 指 令 ( ASCII adjust after division)操 作 : 先 调 整 , 后 做 除 法 。调 整 过 程 : ( AL) 10*( AH) +(AL), AH0。 例 : MOV AX, 0307H AAD ;(AX)=0025H MOV BL, 5 DIV BL*以 上 两 个 指 令 , 对 CF、 OF和 AF均 无 定 义 1.执 行 下 面 指 令 序 列 后 , 结 果 是 ( ) Mov al,82h cbw A.(AX)=0FF82H B.(AX)=8082H C.(AX)=00

38、82H C.(AX)=0F82H2.下 列 指 令 中 错 误 的 是 ( ) A.ADD BX, A B.MUL 24 C.IN AL,DX D.SUB AX,05H3.下 列 4条 指 令MUL BX DIV BLIN AX, 20H OUT 21H, AL中 , 有 ( ) 条 指 令 需 要 使 用 DX寄 存 器 。A.1 B.2 C.3 D.4 三 、 逻 辑 指 令1.逻 辑 运 算 指 令 ( Boolean and Comparison Instructions) AND 逻 辑 与 ( and)格 式 : AND DST, SRC ;B/W操 作 : (DST) (DST)

39、 (SRC)用 于 : 屏 蔽 某 些 位 OR 逻 辑 或 ( or)格 式 : OR DST, SRC ;B/W操 作 : (DST) (DST) (SRC)用 于 : 某 些 位 置 1或 数 据 组 合 XOR 逻 辑 异 或 ( xor)格 式 : XOR DST, SRC ;B/W操 作 : (DST) (DST) (SRC)用 于 : 某 些 位 取 反 ; 初 始 化 寄 存 器 TEST 测 试 ( test)格 式 : TEST OPR1,OPR2 ;B/W操 作 : (OPR1) (OPR2)用 于 : 用 于 条 件 转 移 的 判 定 条 件*以 上 所 有 指 令

40、, 除 对 AF无 定 义 外 , 影 响 所 有 标 志位 , 且 CF=OF=0 NOT OPR 非 操 作 : (OPR) ( OPR)*该 指 令 不 影 响 标 志 位 例 : 屏 蔽 AL的 0、 1两 位 AND AL, 0FCH例 : 置 AL的 D5位 为 1 OR AL, 20H 例 : 使 AL的 0、 1位 变 反 XOR AL, 3例 : 测 试 某 些 位 是 0是 1 TEST AL, 1 JZ EVEN * * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0 * * * * * * * * OR 0 0 1 0 0

41、 0 0 0 * * 1 * * * * * * * * * * * * * XOR 0 0 0 0 0 0 1 1 * * * * * * * * 2.移 位 指 令 ( shift and rotate Instructions) SHL 逻 辑 左 移 ( shift logical left)格 式 : SHL OPR,CNT ;B/W 0 SHR 逻 辑 右 移 ( shift logical right)格 式 : SHR OPR,CNT ;B/W 0 SAL 算 术 左 移 ( shift arithmetic left)格 式 : SAL OPR,CNT ;B/W(同 SHL)

42、 SAR 算 术 右 移 ( shift arithmetic right)格 式 : SAR OPR,CNT ;B/WCF CF CF *以 上 四 个 指 令 , 除 AF无 定 义 , 影 响 所 有 标 志 位例 : 编 程 实 现 Z=X*10分 析 : X *10=X*23+X*2 DATA SEGMENT X DW 30 Z DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX, X SHL AX, 1 MOV BX, AX ;BX=AX=X*2 MOV CL,

43、2 SHL BX,CL ;BX=X*8 ADD AX,BX MOV Z,AX MOV AH,4CH INT 21H CODE ENDS END START ROL OPR, CNT 循 环 左 移 ( rotate left) ROR OPR, CNT 循 环 右 移 (rotate right) RCL OPR, CNT 带 进 位 循 环 左 移 (rotate left through carry) RCR OPR, CNT (带 进 位 循 环 右 移 rotate right through carry)*以 上 四 个 指 令 , 除 CF和 OF外 , 不 影 响 其 他 标 志

44、 位 CF CF CF CF 指 出 下 列 指 令 中 哪 些 是 非 法 的 , 并 说 明 原 因1. MOV SS,2000H 2. PUSH CS3. XCHG AL,100 4. SHL AH,45. IN AL, 21H 6. OUT 300H,AX7. OR AX,CS 8. SUB SI,BP9. CMP 20BX,VARSI10.MUL 10011.IDV BX12.LEA VAR ,AX 四 、 串 操 作 指 令1.与 REP配 合 工 作 的 MOVS / STOS / LODS REP 重 复 ( repeat) 格 式 : REP MOVS / STOS / LO

45、DS 操 作 : (1) 如 (CX)= 0则 退 出 REP, 否 则 转 (2) (2) (CX) (CX) -1 (3) 执 行 MOVS / STOS / LODS (4) 重 复 (1) (3) MOVS 串 传 送 指 令 ( move string)格 式 : MOVS DST, SRC MOVSB ( 字 节 ) MOVSW ( 字 ) 操 作 : (1) (DI) (SI) (2) 字 节 操 作 : (SI)(SI) 1, (DI)(DI) 1 字 操 作 : (SI)(SI) 2, (DI)(DI) 2 方 向 标 志 DF=0时 用 +, DF=1时 用 - 。DF=0

46、 DF=1 ( SI) 低 地 址高 地 址数 据 段 附 加 段( SI) ( DI)( DI) 执 行 REP MOVS之 前 , 应 先 做 好 :( 1) 源 串 首 地 址 ( 末 地 址 ) SI( 2) 目 的 串 首 地 址 ( 末 地 址 ) DI( 3) 串 长 度 CX( 4) 建 立 方 向 标 志 ( CLD使 DF=0, STD使 DF=1)例 : datarea segment mess1 db personal_computerdatarea endsextra segment mess2 db 17 dup (?)extra endscode segment

47、lea di, mess2 lea si, mess1 mov cx, 17 cld rep movsb code ends lea si, mess1+16 lea di, mess2+16 mov cx, 17 std rep movsb STOS 存 入 串 指 令 (store into string) 格 式 : STOS DST STOSB ( 字 节 ) STOSW ( 字 ) 操 作 : 字 节 操 作 : (DI)(AL),(DI)(DI) 1 字 操 作 : (DI)(AX),(DI)(DI) 2例 : 把 附 加 段 中 的 5个 字 节 缓 冲 区 置 为 20Hlea

48、 di, mess2mov al, 20Hmov cx, 5cldrep stosb LODS 从 串 取 指 令 (load from string) 格 式 : LODS SRC LODSB ( 字 节 ) LODSW ( 字 ) 操 作 : 字 节 操 作 : (AL)(SI), (SI)(SI) 1 字 操 作 : (AX)(SI), (SI)(SI) 2注 意 : * LODS指 令 一 般 不 与 REP联 用 * 源 串 必 须 在 数 据 段 中 , 目 的 串 必 须 在 附 加段 中 , 但 源 串 允 许 使 用 段 跨 越 前 缀 来 修 改 。 * 串 长 度 送 到

49、 CX中 * 不 影 响 条 件 标 志 位 2.与 REPE/REPZ和 REPNE/REPNZ配 合 工 作的 CMPS和 SCAS REPE/REPZ (REPNE/REPNZ) 格 式 : REPE/REPZ (REPNE/REPNZ) CMPS / SCAS 操 作 : (1) 如 (CX)=0或 ZF=0 (ZF=1)则 退 出 , 否 则 转 (2) (2) (CX)(CX)-1 (3) 执 行 CMPS / SCAS (4) 重 复 (1) (3) CMPS 串 比 较 指 令 ( compare string) 格 式 : CMPS SRC, DST CMPSB ( 字 节

50、) CMPSW ( 字 ) 操 作 : (1) (SI) - (DI) 根 据 比 较 结 果 设 置 条 件 标 志 位 : 相 等 ZF=1, 不 等 ZF=0 (2) 字 节 操 作 : (SI)(SI) 1, (DI)(DI) 1 字 操 作 : (SI)(SI) 2, (DI)(DI) 2例 : 比 较 两 个 字 符 串 , 找 出 它 们 不 相 匹 配 的 位 置 lea si, mess1 lea di, mess2 mov cx, 8 cld repe cmpsb SCAS 串 扫 描 指 令 ( scan string) 格 式 : SCAS DST SCASB ( 字

51、节 ) SCASW ( 字 ) 操 作 : 字 节 操 作 : (AL) - (DI), (DI)(DI) 1 字 操 作 : (AX) - (DI), (DI)(DI) 2例 : 从 一 个 字 符 串 中 查 找 一 个 指 定 的 字 符 , 找 出 它 的 位 置 mess db COMPUTERlea di, messmov al, Tmov cx, 8cldrepne scasb(DI): 相 匹 配 字 符 的 下 一 个 地 址 (CX): 剩 下 还 未 比 较 的 字 符 个 数*这 两 条 指 令 影 响 所 有 标 志 位 COMPUTER(di) COMPUTER(d

52、i) 1. 串 操 作 指 令 中 , 目 的 串 操 作 数 一 定 放 在( ) 段 中 。2. 在 串 操 作 指 令 前 使 用 REPE, 终 止 串 的 重复 操 作 条 件 是 ( ) A. CX=0且 ZF=0 B.CX=0且 ZF=1 C. CX=0或 ZF=0 D.CX=0或 ZF=13.说 明 下 列 程 序 段 的 功 能 : SHL DX,1 SHL AX,1 ADC DX,0 SHL BX,1 ADC AX,0 五 、 控 制 转 移 指 令 ( 都 不 影 响 标 志 位 )1.无 条 件 转 移 指 令 (unconditional jump instructi

53、on) JMP ( 与 转 移 地 址 有 关 的 寻 址 方 式 相 同 )2.条 件 转 移 指 令 (conditional jump instructions) (1) 根 据 单 个 条 件 标 志 的 设 置 情 况 转 移 : 格 式 测 试 条 件 JZ(JE) OPR ZF=1 JNZ(JNE) OPR ZF=0 JS OPR SF=1 JNS OPR SF=0 JO OPR OF=1 JNO OPR OF=0 JP OPR PF=1 JNP OPR PF=0 JC OPR CF=1 JNC OPR CF=0*只 能 使 用 段 内 直 接 寻 址 的 8位 位 移 量 (

54、-128127) ( 2) 两 个 无 符 号 数 比 较 , 并 根 据 比 较 结 果 转 移 : A-B 格 式 测 试 条 件 JB(JNAE,JC) OPR CF=1 JNB(JAE,JNC) OPR CF=0 JBE(JNA) OPR CF ZF=1 JNBE(JA) OPR CF ZF=0( 3) 两 个 带 符 号 数 比 较 , 并 根 据 比 较 结 果 转 移 : * A-B 格 式 测 试 条 件 JL(JNGE) OPR SFOF=1 JNL(JGE) OPR SFOF=0 JLE(JNG) OPR (SFOF) ZF=1 JNLE(JG) OPR (SFOF) ZF

55、=0 测 试 CX的 值 为 0则 转 移 : 格 式 : JCXZ OPR 测 试 条 件 : (CX)=0例 : X50,转 到 TOO_HIGH; 计 算 X-Y,溢 出 转 到OVERFLOW,否 则 |X-Y|RESULT, X、 Y为 字 。 MOV AX, XCMP AX, 50JG TOO_HIGHSUB AX, YJO OVERFLOWJNS NONNEGNEG AX NONNEG: MOV RESULT, AX TOO_HIGH: OVERFLOW: 例 : 、 是 双 精 度 数 , 分 别 存 于 ( DX,AX)及 ( BX,CX) 中 , 时 转 X, 否 则 转

56、Y。CMP DX, BXJG XJL YCMP AX, CXJA XY: .X: . 4.循 环 指 令 LOOP 指 令 格 式 : LOOP OPR 操 作 : 在 进 行 循 环 次 数 的 计 数 ,即 CX = (CX)-1 后 , 若( CX) 0,则 转 移 到 OPR, 否 则 顺 序 执 行 。 该 指 令 相 当 于 : DEC CX JNE 短 标 号 LOOPE LOOPZ指 令 格 式 : LOOPE OPR 或 者 LOOPZ OPR 操 作 : 在 进 行 循 环 次 数 的 计 数 ,即 CX= (CX)-1后 ,若 (CX)0且 ZF 1, 则 转 移 到 目

57、 标 单 元 , 否 则 顺 序 执 行 。 LOOPNE LOOPNZ指 令 格 式 : LOOPNE OPR 或 者 LOOPNZ OPR 操 作 : 在 进 行 循 环 次 数 的 计 数 , 即 CX= (CX)-1后 , 如(CX)0且 ZF 0, 则 转 移 到 目 标 单 元 , 否 则 顺 序 执 行 。 例 : 在 L个 字 符 的 字 符 串 ( ASCII_STR) 中 ,查 找 “ 空 格 ” , 没 找 到 转 到 NOT_FOUND。 MOV CX, L MOV SI, 0 MOV AL, 20H NEXT: CMP AL, ASCII_STRSI INC SI L

58、OOPNE NEXT JNZ NOT_FOUND .NOT_FOUND: 例 : 在 L个 字 符 的 字 符 串 ( ASCII_STR) 中 ,查 找 “ 空 格 ” , 没 找 到 转 到 NOT_FOUND。 MOV CX, L MOV SI, -1 MOV AL, 20H NEXT: INC SI CMP AL, ASCII_STRSI LOOPNE NEXT JNZ NOT_FOUND .NOT_FOUND: 六 、 处 理 机 控 制 指 令CLC CF0CMC CFCFSTC CF1CLD DF0STD DF1CLI IF0 STI IF1 本 章 小 结 : 主 要 掌 握 六 大 类 指 令 以 及 它 们对 标 志 位 影 响 的 实 际 意 义

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!