4-2 汇编语言程序设计.pptVIP

  1. 1、本文档共35页,可阅读全部内容。
  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文档。上传文档
查看更多
4-2 汇编语言程序设计.ppt

第4章 汇编语言程序设计 ——微机原理与接口技术 2010.春 4.2 伪指令语句 伪指令的基本概念 段定义伪指令 (1)段定义伪指令 (2)假定伪指令 (3)置汇编地址计数器伪指令 4.源程序结束伪指令 1.伪指令的基本概念 ●定义:汇编源程序中控制汇编程序应如何工作的命令是伪指令,或称汇编控制命令。 ●工作原理:   .只为汇编程序所识别 .每一条汇编控制命令都对应着一段处理程序, .汇编程序每遇到汇编控制命令,即转入对应的处理程序执行,执行完该处理程序,也就实现了这条汇编控制命令的功能。 ●结果:   .可以申请分配一部分存贮空间用作数据区和堆栈 .没有对应的机器代码; .在将源程序翻译成目标程序后,伪指令就不存在了。 伪指令问题 ●问题:伪指令与机器指令的区别? (1) 功能不同,机器指令控制CPU的工作,伪指令 控制汇编程序工作。 (2)格式不同,机器指令标号后面带冒号,而伪指 令的名字后面没有。 (3)被执行时CPU所处状态不同,用户程序在运行 时执行机器指令,汇编程序运行时,执行伪指令。 (4)机器指令是用硬件线路来实现其功能的,它有 目的代码。而伪指令是用来控制汇编程序操作的, 是用程序来实现其功能的,它在汇编期间被执行, 在目的代码中已不存在了。 1.伪指令的基本概念 ● 伪指令分类: ·数据定义伪指令: DB, DW, DD,… ·符号定义伪指令: EQU, =, NAME  ·段定义伪指令: SEGMENT, ENDS · 段分配语句:ASSUME ·过程定义伪指令: PROC … ENDP ·程序开始结束语句: ORG, END ·… 4.2.1 段定义伪指令 段定义伪指令 ●格式: 段名 SEGMENT [使用类型] [定位方式] [组合方式] [‘类别’] ┇ 段名 ENDS ●功能: 定义一个以SEGMENT伪指令开始、ENDS伪指令结束的、给定段名的段。 其中,段名为该段的名字,用来指出汇编程序为该段分配存贮区的起始位置。 一个程序模块可以由若干段组成; 段名可以各不相同,也可以重复; 汇编程序将一个程序中的同名段处理成一个段; 段的定义可以嵌套,但不能交叉。 段定义应注意的问题 4.2.1 段定义伪指令 假定伪指令 ●格式:ASSUME 段寄存器:段名[,段寄存器:段名] … ●功能:用来设定段寄存器与段之间的对应关系,即告诉汇编程序,该段中的变量或标号用哪个段寄存器作段首址指示器。 假定伪指令 例题 例: DATA1 SEGMENT T1 DW -50H T2 DD F DATA1 ENDS DATA2 SEGMENT BUF DB ‘ABCDEF’ F DW 70H DATA2 ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS 假定伪指令 例题(续) CODE SEGMENT ASSUME DS:DATA1, CS:CODE, SS:STACK START:MOV AX, DATA1 MOV DS, AX MOV AX, T1 ASSUME ES:DATA2 MOV BL,BUF+2 LES SI,T2 MOV BL, BUF+2 CODE ENDS END START 假定伪指令 注意 注意: ● 在代码段的开始,就要用ASSUME语句建立CS、SS与代码段、堆栈段的对应关系,否则就会出错 ● ASSUME语句是一条伪指令,它并未将段首址置入对应的段寄存器中,这一工作要到目标程序最后投入运行时CS和SS的内容将由系统自动设置,不用用户程序处理。 对于数据段和附加数据段,必须由用户程序自行将段首址放入DS和ES中,一旦在程序中用ASSUME假设或重新假设了DS或ES与某个数据段的关系,下面就要将新段首址放入DS或ES中。否则的话即使语法没有错误,执行结果也不对。 假定伪指令 注意(接上页) ● 对于数据段和附加数据段,若用ASSUME语句建立它们与DS、ES的

文档评论(0)

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

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

1亿VIP精品文档

相关文档