第11章80x86汇编语言程序设计内容摘要:
25H 524FEH 31H 524FFH SP 52500H SP 52500H 3125H 3125H 低地址 低地址 进栈方向 现代微机原理与接口技术 05:47 36 POP 出栈指令 格式: POP DST 操作: 16位指令: DST((SP)+1,(SP)) SP(SP)+2 32位指令: DST((ESP)+3,(ESP)+2,(ESP)+1,(ESP)) (ESP)(ESP)+4 举例: POP AX POP DAT[BX][SI] POP DS POP ECX 现代微机原理与接口技术 05:47 37 出栈指令示例 POP BX 执行前 执行后 BX BX 75C1H 低地址 低地址 SP 6Bh 51000H 6Bh 51000H 48h 1H 48h 1H 9Ah 2H SP 9Ah 2H 28h 3H 28h 3H 48h 6Bh 出栈方向 现代微机原理与接口技术 05:47 38 PUSHA/PUSHAD 所有寄存器进栈 格式: PUSHA PUSHAD PUSHAD: ( 386及其后继机型) 32位通用寄存器依次进栈,次序为: EAX, ECX, EDX, EBX,指令执行前的 ESP, EBP, ESI, EDI 指令执行后 ESP(ESP)32 仍指向栈顶 PUSHA: ( 286及其后继机型) 16位通用寄存器依次进栈,次序为: AX, CX , DX, BX,指令执行前的 SP, BP, SI, DI 指令执行后 SP(SP)16 仍指向栈顶 操作: 现代微机原理与接口技术 05:47 39 PUSHAD指令示例 (SDI) 32 (ESI) 28 (EBP) 24 (ESP)原 20 (EBX) 16 (EDX) 12 (ECX) 8 (EAX) 4 0 (ESP)原 (ESP) 执行前 执行后 现代微机原理与接口技术 05:47 40 POPA/POPAD 所有寄存器出栈 格式: POPA POPAD POPAD: ( 386及其后继机型) 32位通用寄存器依次出栈,次序为: EDI, ESI, EBP, ESP, EBX, EDX, ECX , EAX 指令执行后 ESP(ESP) +32 仍指向栈顶 POPA: ( 286及其后继机型) 16位通用寄存器依次出栈,次序为: DI, SI, BP, SP, BX, DX, CX , AX 指令执行后 SP(SP) +16 仍指向栈顶 操作: 现代微机原理与接口技术 05:47 41 XCHG 交换指令 格式: XCHG OPR1, OPR2 操作: (OPR1) (OPR2) 说明: 1)操作数不允许为段寄存器 2)两个操作数长度必须相同 3)本指令不影响状态标志位 如: XCHG EAX, EBX ;寄存器之间交换 XCHG BX, [BP+DI] ;寄存器与存储器之间交换 XCHG [SI], DX 现代微机原理与接口技术 05:47 42 交换指令示例 XCHG DX, DATA[BP] 设 (SS)=5000H, (BP)=0400H, DATA=1800H 物理地址 =5000H*16+0400H+1800H=51C00H 执行前 执行后 DX DX 37CDH 51C00H 42H 51C00H 1 6DH 1 CDH 37H 6D42H 现代微机原理与接口技术 05:47 43 XLAT查表指令(换码指令) 格式: XLAT TABLE 或 XLAT 操作: AL((BX)+(AL)) 或 AL((EBX)+(AL)) 将 AL中的当前内容转换为表中某一种代码。 执行前一定要将表的首址 (TABLE)赋给 BX(或 EBX)寄存器,将代码在表中距首址的偏移放在 AL寄存器中。 XLAT指令示例 TABLE 30H LEA BX, TABLE +1 31H ;表首址给 BX +2 32H MOV AL, 4 +3 33H ;待转换内容到 AL +4 34H XLAT +5 35H +6 36H +7 37H 34H AL 现代微机原理与接口技术 05:47 44 LDS (load DS with pointer) 指针送寄存器和 DS LES (load ES with pointer) 指针送寄存器和 ES LFS (load FS with pointer) 指针送寄存器和 FS LGS (load GS with pointer) 指针送寄存器和 GS LSS (load SS with pointer) 指针送寄存器和 SS 地址传送指令 LEA (load effective address) 有效地址送寄存器 现代微机原理与接口技术 05:47 45 LEA指令示例 LEA SI, [BX] LEA DI, BUFFER 设 (DS)=2020H, (BX)=1234H。 将变量 BUFFER的 执行后。 地址送到 DI,而 SI。 不是将 BUFFER变 21234H 78H。 量的值送 DI 5 56H 1234H1234H BX LEA 装载有效地址指令 格式: LEA DST, SRC 操作: DSTSRC的有效地址 EA 说明: SRC必须是存储器操作数,而 DST则必须是一个 16位或 32位 的通用寄存器 (AX..DI..) 现代微机原理与接口技术 05:47 46 LDS 装载数据段指针指令 格式: LDS DST, SRC 操作: DST(SRC) DS(SRC+2) 或 DS(SRC+4) LES 、 LFS、 LGS、 LSS 格式:同 LDS 说明: 1) 源操作数必须是存储器操作数 2) 目的操作数必须是寄存器 3) 完成一个逻辑地址的传送,该逻辑地址须用伪指令预先定义在当前数据段中 现代微机原理与接口技术 05:47 47 7659H 2020H 21000H 45H 21001H D6H 21002H 00H 21003H 50H D645H 5000H DS DI DI DS LDS指令示例 LDS DI, [BX] 设 (DS)=2020H, (BX)=1000H 执行前 执行后 再比如: LDS BX, BUFF[SI] LDS DI, BUFF 现代微机原理与接口技术 05:47 48 LEA与 LDS的区别 LEA SI, BUFF LDS DI, BUFF BUFF(21000H) 45H +1 D6H +2 00H +3 50H 设 (DS)=2020H EABUFF=1000H 执行后: SI=1000H DI=D645H DS=5000H 思考 : LDS DI, BX是合法指令吗。 现代微机原理与接口技术 05:47 49 LAHF(load AH with flags) 标志送 AH SAHF(store AH into flags) AH送标志寄存器 标志寄存器传送指令 PUSHF/PUSHFD(push the flags or eflags) 标志进栈 POPF/POPFD(pop the flags or eflags) 标志出栈 现代微机原理与接口技术 05:47 50 LAHF 标志寄存器送 AH指令 格式: LAHF 操作: AHFLAGS 70 即将标志寄存器的最低 8位送 AH中 SAHF 送标志寄存器指令 格式: SAHF 操作: FLAGS 70(AH) 即将 AH寄存器内容送 FLAGS低 8位 说明。第11章80x86汇编语言程序设计
相关推荐
DAC0832的三种工作方式( 2) Digital Electronics Technology 2020/11/17 D/A转换器 ( 3) DAC0832的三种工作方式( 3) Digital Electronics Technology 2020/11/17 由于模拟量时间和(或)数值上是连续的,而数字量在时间和数值上都是离散的,所以转换时要在时间上对模拟信号离散化(采样)
越强大吗。 软件的删除 据统计,安装在我们电脑上的很多软件占用着宝贵的系统资源却很少甚至从不使用。 常用的软件卸载方法 流氓软件的应对策略 “ 流氓软件”是指在未经用户许可,在计算机或其他终端上安装运行,侵犯用户合法权益的软件,具有强制安装、难以卸载、浏览器劫持、广告弹出、恶意捆绑等特征。 “流氓软件”对 用户的计算机运行产生了干扰和影响,比如大量流氓软件的安装将占用计算机内存存储空间
AFTER触发器 INSTEAD OF触发器 本章首页 10. 2 创建触发器 10. 2. 1 使用企业管理器创建触发器 在企业管理器中 , 展开指定的服务器和数据库 , 右击某个表 , 从弹出的快捷菜单中依次选择 “ 所有任务 |管理触发器 ” 选项 , 会出现触发器属性对话框。 10. 2 创建触发器 10. 2. 2 使用 Transact
、教育信息 — 教育者、教育信息 — 学习者、计算机网络 — 教育者 教育者 学习者 计算机网络 教育信息 六种关系又可以分为下列三种情况: 1.关系的作用方式 2.关系的程度 3.不同环境的影响 网络教育过程中的教师和学生 网络教育过程中的教师 网络教育过程中教师起到引导学生学习的作用,但是同传统的课堂教学过程不一样,教师不再主宰整个课堂教学过程中教学信息的传播