本文内容较为基础,适合汇编新手(惭愧,本人就是)学习参考。
内嵌编程:函数体用汇编实现,保存在.asm文件中;在.asm和.c文件中声明;在.c文件中调用,调用方式和普通函数相同。
函数参数传递
刚开始想用偷懒,默认传入参数较少的函数,参数直接传入cx、dx,从通用寄存器可以直接得到参数值。而不用堆栈中捞(在Efi shell上述方法好像可以,下次试试)。实际上述方法不可行,用debug32查看通用寄存器值,发现参数并未传入>_<。 所以需要用栈传递参数(以访问intel cpu IO 为例):
堆栈变化情况,未调用函数前:
![](https://img-blog.csdn.net/20180715205234123?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE2MTcyMzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
函数参数传入堆栈情况: