汇编语言程序设计_第3章_寻址方式与指令系统.ppt

汇编语言程序设计_第3章_寻址方式与指令系统.ppt

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

* (1)80x86系统允许256种中断,每种中断对应0 ~ 255之间唯一的编号,称为中断号或中断类型号。 (2) ① 保护现场 (FR,CS,IP压栈) ② 中断响应准备 a) TF,IF清0 b) 计算中断程序的入口地址 ③ 执行中断服务程序 ④ 中断返回 ⑤ 恢复现场(弹出FR,CD,IP) * 可参照教材第7章 * lds和les是逻辑地址传送指令 lds si,mem ; (mem) → si, (mem+2) → ds (lds,装载数据段指针指令) les di,mem ; (mem) → di, (mem+2) → es (les, 装载附加段指针指令) * (1)对于写法1,因为题目中有说明是无符号数运算,所以可以通过高字节补0来扩展 (2)对于写法2,这样写后,ax中得到的数据是ff20h,bx中得到的是30ff * 这里N1和N2应该是符号,不是变量,类似于C语言中的符号常量 * 对标志位SF、ZF等也有影响,结合P74 习题3.3。 * ptr 属性运算符 格式: 类型 ptr 表达式 功能: 临时改变属性,类似于c中的强制类型转换 * 说明: (1)执行时,系统用零减去操作数,再把结果送回操作数 也可以这么做:取反+1(不论正、负,都是取反+1,这与求补码不一样) (2)因为(1),所以:求补命令和求补码是两回事。 * * * 注意: idiv的操作数只能是mem或reg * 注意:不要与neg指令混淆! (1)neg dst ; -(dst) →dst ,求补指令 (2)not dst ; 按位取反 * (1)对于应用(1)可推定,操作数只能是reg (3) 关于(3)中的“取反”,与使用not取反不同的是,not是对整个操作数取反,而xor可以只对其中的部分位取反 * * (1)注:cnt: 移位次数 若cnt为1,用立即数表示; 若cnt1, 则将移位次数→cl (2)操作数左移一位相当于乘以2,右移一位相当于除以2 * 利用: 操作数左移一位相当于乘以2,右移一位相当于除以2 注意:当移位次数1时,要使用cl寄存器! 复习:mul指令 * 练习: 用指令将该数据右移一位 * (1)汇编中串的构成形式:‘ 字符’ 其中:字符主要包括:0~9, a~z, A~Z, 20h(空格), oah(回车), odh(换行);也包括其它可显示字符,比如’!’等。 * 思考:mov指令和movs指令同为传送指令,它们本质区别在哪儿? * 注:即使是字节传送,设置传送方向也是必须的,因为执行指令后,会根据df自动修改si,di。 * 关于自动修改地址 (1)地址的加减由传送方向决定 (2)可以用debug演示一下。 * 该程序只实现了单个字符的拷贝 * 注:即使是字节传送,设置传送方向也是必须的,因为执行指令后,会自动修改si,di。 * 关于自动修改地址 (1)地址的加减由传送方向决定 (2)可以用debug演示一下。 * 练习: 反向串拷贝 * (1)注意: 比较时是以ASCⅡ码进行比较的。 (2)repz cmpsb通常用于在两个串中查找第一个不匹配的元素 repnz cmpsb通用用于在两个串中查找第一个匹配的元素 * * 两个串相等: (cx)=0且(zf)=1 * 两个串相等: (cx)=0且(zf)=1 * 说明: 1. call – 子程序调用指令 ret – 返回指令 (该指令留待学习子程序内容时讲解) 关于子程序具体内容包括: (1)定义(编写)子程序 ( 4.2.4 伪指令proc、endp ; 3.4.5返回指令 ret ) (2)调用子程序 ( 3.4.5 指令call ) (3)参数传递问题 子程序实例及参数传递 ( 8.1-8.5) 2. int -- 软中断指令(中断调用)iret – 中断返回指令 3.4.5 和 第7章 * 1. 关于转移的不同情形总结: (1)段内转移:转移指令和转移后指令在同一代码段内 1)段内直接转移:指令中直接给出转移后指令地址 ① 段内直接短转移:转移范围在-128字节~+127字节之间(负号表示方向) ② 段内直接近转移:转移范围在-32768~+32767字节之间 2)段内间接转移:指令中给出“存放转移后指令地址”的地址 (2)段间转移:转移指令和转移后指令不在同一代码段内 2.可能的疑问解答 (1)由上述总结可见,段内直接近转移范围为-32768~+32767,包含了段内直接短转移的范围,为什么还要有段内直接短转移? 解答:段内直接近转移在内存要占用3个字节,而短转移占2个字节,在内存空间有限的情况下,尽量使用短转移 * 说明:(cx)-1→cx及判断(cx)≠0是

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档