第六章汇编语言及程序设计.pptVIP

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

格式为: 段名 SEGMENT [定位类型] [组合类型] [‘类别’] . 段名 ENDS 1.段名:段名是必须的不可省略,每一个段的名字前后 一定要相同,起什么名字有程序员自行决定,但不能 与指令助记符或伪指令重名。 STACK SEGMENT STACK DW 20 DUP(?) STACK ENDS 2.定位类型: 定位类型告诉汇编程序如何确定逻辑段的地址边界,表示该段起始地址开始于何处,定位类型有4种。分别是是字节型(BYTE)、字型(WORD)、节型(PARA)、页型(PAGE)。 (1)BYTE(字节型) 说明逻辑段从字节边界开始,段起始地址可位于任何位置。此时本段的起始地址紧接在前一个段的后面。 (2) WORD (字型) 说明逻辑段从字边界开始。即段起始地址必须位于偶地址,即地址最后一位是0。 (3) PARA (节型) 说明逻辑段从一个节的边界开始。16个字节称为一个节,即段的起始地址能被16除尽,也就是段起始物理地址为????0H。在缺省情况下,定位类型默认为PARA。 (4) PAGE (页型) 说明逻辑段从页边界开始。256个字节称为一页,即被256除尽,所以,本段的物理地址应为???00H。 3.组合类型 组合类型主要用在具有多个模块的程序中。是告诉连接程序,该段和其它段的组合关系,连接程序可以将不同模块的同名段进行组合。根据组合类型,可将各段连接在一起,或重叠在一起,组合类型有: NONE、PUBLIC、STACK、COMMON、MEMORY、AT表达式。 (1) NONE 表示本段与其他逻辑段不组合。即对不同程序模块中的逻辑段,即使具有相同的段名,也分别作为不同的逻辑段装入内存,而不进行组合,缺省情况下为NONE。 (2) PUBLIC 对不同的程序模块用PUBLIC说明的具有相同段名的 逻辑段,汇编时将它们组合在一起,构成一个大逻辑段。 (3) STACK 它的意义与LUBLIC基本一样,但仅限于堆栈的逻辑 段使用。即在汇编时,将不同程序模块中STACK说明的 同名堆栈段,集中成为一个大的堆栈段,有个模块共享, 堆栈指针SP指向这个大的堆栈区的栈顶处。 (4) COMMON 表示对不同的程序模块中用COMMMON说明的同名 逻辑段,连接时从同一个地方开始装入,即各逻辑段重叠 在一起。连接后的段长度等于原来最长的逻辑段的长度。 重叠部分的内容是最后一个逻辑段的内容。 (5)MEMORY 表示当几个逻辑段连接时,本逻辑段定位在地址最高的地方。如果被连接的逻辑段中有多个段的组合类型都是MEMORY,则汇编程序只将首先遇到的段作为MEMORY段,而其余的段均当做COMMON段处理。 (6)AT表达式 这种组合类型表示本逻辑段根据表达式求值的结果定位段地址。 例如:AT 8000H,表示本段的段地址为8000H,即本段的物理地址为8000H。 4.类别(class) 用单引号括起来的字符串,以表明该段的类别,如 代码段(‘CODE’)、数据段(‘DADA’)、和堆栈段(‘STACK’)。 设置类别的作用是在当几个程序模块进行连接时,将具有相同类别名的逻辑段装入连续的内存区内,类别名相同的逻辑段,按出现的先后顺序排列。没有类别名的逻辑段,与其他无类别名的逻辑段一起连续装入内存。 四、设定段寄存器伪指令 格式为: ASSUME 段寄存器名:段名[,段寄存器名:段名[,]] 格式中的段寄存器名可以是CS、DS、ES或SS。这个伪指令用来告诉汇编程序当前正在使用的个段的名字。也是告诉汇编程序用SEGMENT伪指令操作过的段的段地址将要放在哪个段寄存器中。但真正把段地址装入段寄存器的操作需要有程序员自己完成。但代码段寄存器CS不要求用户赋初值。 五、定义过程伪指令 ?PROC和ENDP 程序设计中,通常将具有某种功能的程序块看作一 个过程(即子程序),它可以被别的程序调用(CALL) ,或用JMP指令跳转到该处执行。 格式: 过程名 PROC [类型](NEAR/FAR) . RET 过程名 ENDP 过

文档评论(0)

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

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

1亿VIP精品文档

相关文档