您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-01 原文发表:2007-08-31 人气:30 来源:未知

本文章共1721字,分2页,当前第1页,快速翻页:
 

  汇编语言是各种计算机语言中与硬件关系最为密切、最直接的语言,是时空效率最高的语言,它能够利用计算机所有硬件特性并能直接控制硬件,所以在计算机应用系统设计和过程控制中是必不可少的.目前教学中采用8086/8088汇编语言系统组织教学仍是最佳选择.其中子程序技术是一种解决重复性问题的重要设计方法,采用子程序结构可以简化源程序书写、提高程序存储效率、减少出错率、增加程序的易读性和可维护性,并且有利用子程序资源的组织和使用.设计子程序时,除了必需要考虑的程序调用、返回和完成特定功能的指令序列外,还必须注意解决子程序设计中带有的共性的一些问题,即:现场保护、参数传递、子程序的嵌套与递归调用、编写子程序说明文档等.
逆风编程精品
1 现场保护 
  现场保护的目的是调用子程序之后,能够返回主程序继续执行.因此要对子程序中用到的寄存器,堆栈进行必要的保护.
1 1 寄存器保护因为汇编语言程序中的主要操作对象是CPU中的各寄存器,对那些主程序和子程序中都会用到的一些寄存器要在子程序使用之前进行保护.寄存器保护最好是在子程序中进行,并且在子程序中进行恢复,这样子程序显得更完整.其方法是使用堆栈,由于指令系统中制定了规范的进栈指令PUSH和出栈指令POP,并会自动修改堆栈指针,只要在程序设计中注意8086/8088的堆栈是否按"后进先出"的原则组织的.
1 2 堆栈保护子程序是利用调用(CALL)指令和返回(RET)指令来实现正确的调用和返回的.因为CALL命令执行时压入堆栈的断点地址就是供子程序返回主程序时的地址,编程时一定要注意子程序的类型属性,即是段内调用还是段间调用.段内调用和返回为NEAR属性,段间调 王艳玲,等谈谈汇编语言中子程序的设计方法37用和返回为FAR属性.8086/8088的汇编程序用子程序定义PROC的类型属性来确定CALL和RET指令的属性.如果所定义的子程序是FAR属性,那么对它的调用和返回一定都是FAR属性;如果所定义的子程序是NEAR属性,那么对它的调用和返回也一定是NEAR属性.这样用户只是在定义子程序时考虑它的属性,而CALL和RET指令的属性就可以由汇编程序来确定了.另外,进入子程序后再使用堆栈时也必须保证压入和弹出字节数一致,如果在这里堆栈存取出错,必然会导致返回地址的错误.
2 参数传递 
  主程序在调用子程序时,经常要向子程序传递一些参数或控制信息,子程序执行后,也常需要把运行的结果返回调用程序.这种信息传递称为参数传递,其常用的方法有寄存器传递、内存固定单元传递、堆栈传递.
2 1 寄存器传递由主程序将要传递的参数装入事先约定的寄存器中,转入子程序后再取出进行处理,这种方法受CPU内部寄存器数量限制,因此只适于传递少量参数的场合,如一些常见的软件延时子程序,均是利用某寄存器传递循环计数器初值.
2 2 通过内存固定单元的传递此方法适于大量传递参数时使用,它是在内存中开辟特定的一片区域用于传递参数.主程序和子程序都按事先约定在指定的存储单元中进行数据交换,这种方法要占用一定数量的存储单元.不足之处是信息易被修改,不利于模块化设计.
2 3 通过堆栈实现参数传递这种方法是先在主程序中把参数和参数地址压入堆栈,在子程序中取出使用,由于堆栈操作不占用寄存器,并且堆栈单元使用后可自动释放,反复使用,便于实现数据隔离和模块化设计.使用这种方法时,当子程序返回后,这些参数就不在有用了,应当丢弃.这时可以利用带立即数的返回指令修改指针,使其指向参数入栈以前的值.
3 子程序嵌套与递归调用  
汇编语言中子程序的嵌套只要堆栈空间允许,一般不受嵌套层次限制.嵌套子程序设计中,应注意寄存器的保护和恢复,避免各层子程序之间寄存器冲突.递归子程序的设计必须保证每次调用都不破坏以前调用时所用的参数和中间结果.为保证每次调用的正确,一般把每次调用的参数、有关寄存器的内容以及中间结果进栈保存.
 

本文章更多内容1 - 2 - 下一页>>
相关文章

虚拟设备驱动程序结构
用 MASM32 编写通用游戏改器流程
8086/8088指令系统
伪操作
Kmdkit的下载和安装
创建简单的窗口
数据转换操作
汇编语言与C语言的接口技术
多文档界面(MDI)
窗口子类化
IDE的选择与配置
输入/输出保护
分段管理机制
HELLO WORLD进阶汇编程序系列
汇编语言的艺术(组合语言的艺术)--基本认
汇编语言---程式设计 (2)
汇编语言---程式设计 (3)
汇编语言的艺术(组合语言的艺术)--基本认
用汇编编写DOS下的内存驻留程序(2)
汇编语言---程式设计 (1)

相关评论


本文章所属分类:首页 汇编技术

  热门关键字:
进制数据输出的通用程序 2007-09-12
汇编源码--showmem 2007-08-31
汇编源码--CLEAN 2007-08-31
汇编源码--hdr 2007-08-31
汇编源码--basload 2007-08-31
汇编源码--CHAR 2007-08-31
汇编源码--fxn 2007-08-31
汇编源码--alarm 2007-08-31
汇编源码--getsect 2007-08-31
汇编源码--DEV 2007-08-31
汇编源码--getspace 2007-08-31
汇编源码--frespace 2007-08-31
CIH文件型病毒检测消除程序 2007-08-31
Mixer Volume Ctrler V1.0 2007-08-31
汇编源码--COMINT 2007-08-31
自己用汇编语言写的一个病毒(源码... 2007-08-31
汇编源码--col 2007-08-31
汇编源码--BURNOUT 2007-08-31