第2章数据定义与传送祥解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章数据定义与传送祥解.ppt

* 练习 已知数据段定义了下列语句,画出变量在内存单元的分配情况以及数据预置情况。 DATA SEGMENT A1 DB 20H, 52H, 2 DUP(0,?) A2 DB 2 DUP(2, 3 DUP(1,2), 0, 8) A3 DB ‘GOOD!’ A4 DW 1020H,3050H A5 DD A3 DATA ENDS * 采用示意图说明下列变量在内存单元的分配及数据预置。 DATA SEGMENT VAR1 DW 9 VAR2 DW 2 DUP(0) CONT EQU 2 VAR3 DB CONT DUP(?,8) VAR4 DB 2 DUP(?, CONT DUP(0), ‘AB’) DATA ENDS 练习 * 已知3个变量的数据定义如下所示,分析以下指令是否正确。 DATA SEGMENT VAR1 DB ? VAR2 DB 10 VAR3 EQU 100 DATA ENDS MOV VAR1,AX MOV VAR3,AX MOV BX,VAR1 MOV [BX],10 CMP VAR1,VAR2 VAR3 EQU 20 练习 * 假设程序中数据定义如下: LNAME DB 30 DUP(?) ADDRESS DB 30 DUP(?) CITY DW 15 DUP(?) CODE-LIST DB 1,8,4,3,5 (1)用一条MOV指令将LNAME的偏移地址放入AX (2)用一条指令将CODE-LIST的前两个字节内容放入SI (3)用一条伪指令使CITY-LENGTH的值等于CITY域的实 际长度(字节数) 练习 * 已知数据段DATA从存储器物理地址02000H开始,作如下定义: DATA SEGMENT VAR1 DB 2 DUP(0,1,?) VAR2 DW 50 DUP(?) VAR3 DB 10 DUP(0,1,2 DUP(4),5) DATA ENDS 求3个变量经SEG、OFFSET、TYPE、LENGTH和SIZE运算的结果。 练习 * 立即数寻址 * 寄存器寻址 * 直接寻址 * 寄存器间接寻址 * 寄存器相对寻址 基址变址寻址 相对基址变址寻址 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * 见程序举例:程序规模小时段寄存器分配情况 * * 2 分析程序段的功能。 table dw ? mov ax,1234h push ax pushf pop table popf 练 习 * 3. 扩展的堆栈指令 80386开始的微处理器增设了32b的堆栈指令。 PUSH REG32/MEM32 ;32位寄存器、存储器操作数压入堆栈 POP REG32/MEM32 ;从堆栈弹出32位,送入目的操作数 PUSH IMM ;16/32位立即数压入堆栈 例1: PUSH EAX PUSH DWORD PTR[DI] POP ECX POP DWORD PTR[SI] PUSH 0A123H * PUSHAD ;把8个32位通用寄存器顺序压栈 POPAD ;从堆栈中弹出8个32b数据顺序存入通用寄存器 80386增加了8个32位通用寄存器的入、出栈指令,顺序同上。 80286微处理器增加了在一条指令中把8个通用寄存器压入、 弹出堆栈的指令,压入的顺序是:AX、CX、DX、BX、 SP、BP、SI、DI。 注意: 这里的SP代表指令执行之前的值。弹出的顺序相反。 PUSHA ;把8个16位通用寄存器顺序压栈 POPA ;从堆栈中弹出8个16b数据,顺序存入通用寄存器 上述指令执行都不影响标志位。 * 80386开始新增加了压入、弹出32位EFLAGS寄存器指令. PUSHFD ;把32位EFLAGS寄存器内容压入堆栈,原寄存器内容不变 POPFD ;

文档评论(0)

光光文挡 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档