网站大量收购独家精品文档,联系QQ:2885784924

汇编语言第8周.pptVIP

  1. 1、本文档共47页,可阅读全部内容。
  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文档。上传文档
查看更多

汇编语言程序设计主讲:江苏苏第八周大课

本周主要内容子程序设计方法完整的过程定义的伪操作*子程序的参数传递存放器变量堆栈子程序的嵌套与递归多模块程序设计的根本方法程序库的建立*汇编语言程序设计2

汇编语言程序设计3第6章子程序结构主要内容子程序的设计方法过程定义伪操作子程序的参数传递子程序的嵌套与递归

汇编语言程序设计4子程序设计方法子程序定义由PROC与ENDP伪指令实现,形式如下: 子程序名 PROC[NEAR|FAR] 过程体 子程序名 ENDP子程序名在整个程序中必须是唯一的。子程序名本质上与标号一样,也具有3种属性:段地址、偏移地址和类型〔NEAR或FAR〕。PROC后用关键字NEAR、FAR或空,以表示子程序的类型〔缺省为NEAR〕。

汇编语言程序设计5子程序设计方法注意点:在过程体内必须有一条RET指令被执行到。如果在过程内没有执行到RET或其它转移指令,程序将继续执行ENDP后的指令。正确选择过程的类型。通常基于以下原那么:假设过程只在同一代码段中被调用,那么定义为NEAR。假设过程可以在不同代码段中被调用,那么定义为FAR。CALL与RET的类型要一致。通常要保证RET指令执行前,栈顶内容正好是返回地址。注意保护相关存放器的值。通常,除了作为返回参数的存放器外,过程不应改变其它存放器的值。可以将过程定义放在单独的代码段中。假设过程定义与主程序处于同一代码段,那么要保证其只有被调用时,才会执行。

汇编语言程序设计6子程序设计方法SUBPP PROC ;具有缺省属性的SUBPP过程 PUSHAX ;保护存放器:顺序压入堆栈 PUSHBX ;AX/BX/CX仅是例如 PUSHCX PUSHDX … ;过程体 POPDX POPCX ;恢复存放器:逆序弹出堆栈 POPBX POPAX RET ;过程返回SUBPP ENDP ;过程结束

汇编语言程序设计7第6章子程序结构主要内容子程序的设计方法过程定义伪操作子程序的参数传递子程序的嵌套与递归

汇编语言程序设计8过程定义伪操作过程名PROC[属性域][USES存放器列表][,参数域] [LOCAL局部变量表] …… ;汇编语言语句序列过程名ENDP说明:属性域包括四项: 距离:near|far,缺省为near 〔简化段定义时与存储模式相关〕 语言类型:C|PASCAL|BASIC|FORTAN 〔.Model中已定义的话,此处可略〕 可见性:private|public|export,缺省为public 宏相关:一个宏名,表示有宏控制出入口参数域格式:参数:类型[,参数:类型…]局部变量表格式:变量名:类型[,变量名:类型,…]子程序完全定义格式参见p.217

汇编语言程序设计9属性域-1子程序的Distance有:Near、Far:表示使用当前的段规模。Near16、Far16、Near32和Far32:告诉汇编程序忽略当前的段规模,而使用指定16位或32位的段规模。子程序的LanguageType:CSYSCALLSTDCALLBasicFortranPascal前导下划线XX字母大写化XXX参数从左到右XXX参数从右到左XXX调用程序清空堆栈X*保存指针寄存器BPXXX使用VARARG参数XXX

汇编语言程序设计10属性域-2可见性属性可以用伪指令OPTIONPROC来修改:OPTIONPROC:PRIVATEOPTIONPROC:EXPORT子程序的起始和结束操作: 用自己定义的宏来替代缺省代码段:OPTIONPROLOGUE:MacroName1OPTIONEPILOGUE:MacroName2 取消当前指定的宏名,而恢复使用缺省的代码段:OPTIONPROLOGUE:PrologueDefOPTIONEPILOGUE:EpilogueDef 假设不要汇编程序自动产生“起始”和“结束”代码:OPTIONPROLOGUE:NONEOPTIONEPILOGUE:NONE

汇编语言程序设计11存放器的保护和恢复 Dsip PROCUSESAXDX,FUNC:WORD,MSG:PTRBYTE MOV DX,MSG MOV AX,FUNC INT 21H RET Disp ENDP汇编程序在处理该子程序时,会根据子句USES的作用,在第一条指令之前,插入把存放器AX和DX进栈的指令序列,即: PUSHAX

PUSHDX而在返回指令RET之前插入把存放器DX和AX的值弹出的指令序列,即: POPDX

POP

文档评论(0)

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

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

1亿VIP精品文档

相关文档