汇编学习笔记——设计与执行

目录

设计

模块化程序设计

参数传递

子程序框架

直接定址表

编制中断处理程序

编写程序读取键盘输入

条件汇编

执行

指令执行

程序执行

中断

中断屏蔽

中断处理

程序编译

BIOS与DOS系统

BIOS中断

DOS中断


 

设计

定义:在编写汇编程序时,遵循某些程序设计理念能够提高效率,避免问题

 

模块化程序设计

定义:类比高级语言,将利用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:如上图所示,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值