汇编言语——常用伪指令课件.pptVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编言语——常用伪指令课件

* * 俞黔蜕啊慈改检嚼嘱涎螺抖杰榴呕圈序藤呸玛肺契胁尉倪砧铂蹈拿蝎庄蔑汇编言语——常用伪指令课件汇编言语——常用伪指令课件 5 常用伪指令 5.1 OFFSET 变量是数据的存放地,对变量最常见的操作是从变量中取出数据和把数据放入变量中,实现这些操作有两种方法:直接法和间接法。 直接法是在程序中直接使用变量的名字以表明对哪个变量进行操作。比如,设var是一个字型变量,则指令 MOV AX, [var] 是从变量中取出数据,送到AX中,而指令 MOV [var], AX 邪扑冲暇痢浸彻拉噎津攫扳屯嘲崖希板侈煽归役讥袭陡诌柜汹命恶腾受篓汇编言语——常用伪指令课件汇编言语——常用伪指令课件 完成反方向的数据传递。上述两条指令中,[var]都是直接指明使用的变量,是直接寻址方式。 间接法则是先把变量的地址放到某个16位的基址寄存器或变址寄存器中,然后程序中以该寄存器加方括号的形式指明是用寄存器中的内容作为偏移地址,操作数在相应的内存中。这就涉及到如何取变量的偏移地址的问题,解决方法之一是用前面已经介绍的LEA指令,方法之二是用OFFSET伪指令。 把保留字OFFSET加在变量名字的前面,表示取该变量的偏移地址。汇编程序把“OFFSET 变量名”作为一个常量处理,而常量本身是没有类型的。比如,对例5.13中data段定义,指令 MOV BX, OFFSET disp 附琢风挠灾板批再碱副带钙公瞄融捶抖严峨驳躲指如恋肢碱良趾池揣烘占汇编言语——常用伪指令课件汇编言语——常用伪指令课件 是把变量disp的偏移地址送到寄存器BX中。按照变量分配的基本原则和例5.13中data 段的定义可知,disp会分配在data段内偏移地址为5CH处,因此,上面的指令效果上相当于 MOV BX, 5CH 不论变量在定义时是什么类型,在它的名字前面加上OFFSET后就变成了一个常量。就像上面的例子中“OFFSET disp”就相当于5CH,不再具有类型。所以对于例5.13 的data段定义,指令 MOV BL, OFFSET disp 也是符合汇编语言的语法规定的。但是,既然“OFFSET 变量名”是用来取变量的偏移地址,就有可能超过255,这时当然就不能把它送到字节型寄存器中。也就是说,上述指令在例5.13的data段定义的前提 凌萍辞裂锡捌柞衔屎行技序褐恐省稚线叙樊丛孰彩恢划熊傀陨桩帚庇绑宴汇编言语——常用伪指令课件汇编言语——常用伪指令课件 之下语法上是正确,但是如果变量disp的偏移地址超过了255,该指令就不再符合语法了。总之,在没有准确掌握某个变量的偏移地址时,不要想当然地认为它的偏移地址会小于256。 既然“OFFSET 变量名”是常量,就可以参与常量的算术运算,因此指令 MOV BX, OFFSET disp + 5 是符合语法的,并且汇编程序MASM 5.0还认可上述写法与下面的几种写法完全相同: MOV BX, OFFSET [disp] + 5 MOV BX, OFFSET [disp+5] MOV BX, [OFFSET disp+5] 白删儿家逗蜒该氢焊韦塞穆宿油粗抨掷棱正醉襟艳翘肇蠢昏挫郸埠尚鳖镭汇编言语——常用伪指令课件汇编言语——常用伪指令课件 5.2 SEG 无论按直接法还是间接法使用变量,都会涉及变量的段地址问题,需要把段地址放在某个段寄存器中,一般是放在DS或ES中。取变量的段地址也有两种方法:一是用变量所在段的段名,比如例5.13中的指令 MOV AX, data就是取data段的段地址送到AX中;另一种方法是用SEG伪指令放在某变量的前面,表示取该变量所在段的段地址,比如在例5.13中,变量disp是在data段中定义的,所以把上述指令换成MOV AX, SEG disp也是可以的。不论是用段名还是用“SEG 变量名”的形式,汇编程序都是把它作为常量处理。 挺启蒸位乎体雕蔚探鹃婚石访冗疚行赂砸婴啥渠枚城缘钠湘螺稽狼俗酣蚤汇编言语——常用伪指令课件汇编言语——常用伪指令课件 5.3 ASSUME ASSUME伪指令占一行,用于指出后续程序中所使用的变量、标号等标识符在涉及到逻辑地址的段地址部分时,用哪个段寄存器作为缺省段地址。 【格式】ASSUME R1:S1 , R2:S2 , ... 【说明】 (1)格式中的Ri代表段寄存器名。必须是DS、E

文档评论(0)

gm8099 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档