目录
设计
定义:在编写汇编程序时,遵循某些程序设计理念能够提高效率,避免问题
模块化程序设计
定义:类比高级语言,将利用call与ret机制将功能不同的代码段整合成不同的子程序,降低耦合性提高聚合性
参数传递
定义:类比高级语言,当使用子程序、子函数时具有在母程序和子程序间传递某些参数的需求。参数传递有以下几种方案:用寄存器传递参数;用内存单元传递参数;用栈传递参数
示例1:用内存单元传递参数
PS:如上所示,可通过将内存空间的首地址存放在寄存器中,而后使用寄存器中的地址访问整段内存空间的方式一次性传递大量数据
示例2:用栈存储参数在子程序和母程序间传递
PS1:如上图1、2所示,可用栈来传递参数,如上图3所示,于子程序的mov bp,sp处栈内状态为所需传递参数在栈的最底下,因此需要令bp得到sp的值后分别+4和+6以取得传递的参数的值
PS2:如上图2的最后一行所示,在完成pop bp后,栈顶为ip,而ip之后还有a与b两个参数,为了从栈中清楚已不需要的a和b,使用ret 4来清除
PS3:在多次使用call进行嵌套调用子函数的情况下,栈段将被大量压栈的程序段地址占据,因此十分不建议在此种情况下利用栈段进行参数传递,其可能破坏子程序段调用的结构。
示例3:用寄存器存储参数在子程序和母程序间传递
PS1:如上图所示,可以用任意通用寄存器在子程序和母程序间传递参数,但有些寄存器在传递参数之外还有其他用途,如上图1的cx还需用于控制loop循环,因此在使用之前先用push cx将之原值保存入栈,在使用完成后再用pop cx出栈,就能在使用其传递参数的同时不影响原功能
PS2:如上图所示,