|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 shuiyu 于 2017-9-2 10:15 编辑
越努力,越幸运。欢迎大家来看我的笔记 小白刚学,不对的请各位大佬指正,谢谢
一、call 和 ret 的配合使用
(1)从上面的讨论中我们发现,可以写一个具有一定功能的程序段,我们称其为子程序,在需要的时候,用call指令转去执行。
(2)可是执行完子程序后,如何让CPU接着call指令向下执行?没错,答案就是ret。call指令后面的指令的地址将存储在栈中,所以可以在子程序的后面使用 ret 指令,用栈中的数据设置IP的值,从而转到 call 指令后面的代码处继续执行。
(3)其实和C语言中定义一个自定义函数一样的,需要用到这个函数的时候调用就可以了。
二、mul 指令
(1)相乘的两个数:要么都是8位,要么都是16位。(如果是8位与16位相乘则遵循16位相乘原则,把8位换算成16位)
8 位: AL中和 8位寄存器或内存字节单元中;
16 位: AX中和 16 位寄存器或内存字单元中。
(2)如果是8位与16位相乘则遵循16位相乘原则,把8位换算成16位
(3)计算结果存放位置
8位:AX中;
16位:DX(高位)和AX(低位)中。
三、模块化程序设计
(1)call 与 ret 指令共同支持了汇编语言编程中的模块化设计。在实际编程中,程序的模块化是必不可少的。利用 call和ret指令,我们可以用简洁的方法,实现多个互相联系、功能独立的子程序来解决一个复杂的问题。
(2)子程序一般都要根据提供的参数处理一定的事务,处理后,将结果(返回值)提供给调用者。其实,我们讨论参数和返回值传递的问题,实际上就是在探讨,应该如何存储子程序需要的参数和产生的返回值。
(3)注意,我们在编程的时候要注意良好的风格,对于程序应有详细的注释。子程序的注释信息应该包含对子程序的功能、参数和结果的说明。因为今天写的子程序,以后可能还会用到;自己写的子程序,也很可能要给别人使用,所以一定要有全面的说明。
(4)调用者将参数送入参数寄存器,从结果寄存器中取到返回值;子程序从参数寄存器中取到参数,将返回值送入结果寄存器。
四、参数和结果传递的问题
编程:计算data段中第一组数据的 3 次方,结果保存在后面一组dword单元中。
data segment
dw 1,2,3,4,5,6,7,8
dd 0,0,0,0,0,0,0,0
data ends
请课后先思考一下……尽管书中有答案……
这个是我没看答案前做的,没能成功运行
实在是找不出问题,只能看答案了 看了答案后发现被小甲鱼坑了 ,视频教程中小甲鱼说定义的两组元素都是dw字型数据,写成dd是因为教材小甲鱼他写错了。。。。 其实就该是dd双字型数据。下面的是答案,很简单我就不细说了:
谢谢小甲鱼带来的视频教程,感谢!!
本节结束,多谢览阅!
越努力,越幸运。谢谢大家来看我的笔记 小白刚学,不对的请各位大佬指教,谢谢
|
评分
-
查看全部评分
|