汇编EXTERN用法
来源:互联网 发布:mysql约束是什么 编辑:程序博客网 时间:2024/05/17 06:06
EXTERN在汇编中用来引用一个在其他模块中定义过的符号名,使得这个符号名所表示的数据或函数能在该模块中被使用。
[FILE "naskfunc.nas"] GLOBAL_asm_inthandler21 EXTERN_inthandler21 [SECTION .text]_asm_inthandler21:PUSHESPUSHDSPUSHADMOVEAX,ESPPUSHEAXMOVAX,SSMOVDS,AXMOVES,AXCALL_inthandler21POPEAXPOPADPOPDSPOPESIRETD
void inthandler21(int *esp){struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO;boxfill8(binfo->vram, binfo->scrnx, COL8_000000, 0, 0, 32 * 8 - 1, 15);putfonts8_asc(binfo->vram, binfo->scrnx, 0, 0, COL8_FFFFFF, "INT 21 (IRQ-1) : PS/2 keyboard");for (;;) {io_hlt();}}
inthandler21函数在bootpack.h中声明过,这里在汇编文件naskfunc.nask中要用到这个函数,故用EXTERN语句。这里我们有几个疑问一块来探讨一下:
*上面的CALL _inthandler21是怎样一个调用?
先将当前的IP压入栈中,再跳到_inthandler21处执行指令。
*但一般是跳到某个汇编段,而这里是一个C源文件中的函数,这有是什么原理?
首先,汇编程序可以调用C函数,这是混合编程。而且还可以引用C文件中定义的变量,如 C: char ch; ASM: EXTERN ch:byte。
在我们的这个例子中,函数inthandler21带有参数,如何在汇编中传参。方法是汇编程序将参数值压入堆栈
MOVEAX,ESPPUSHEAX
0 0
- 汇编EXTERN用法
- extern用法
- extern用法
- extern用法
- extern 用法
- extern用法
- extern用法
- extern 用法
- extern用法
- Extern用法
- extern用法
- extern用法
- extern 用法
- Extern 用法
- extern用法
- extern用法
- extern 用法
- extern用法
- 系统设计文档结构体例理解与决策
- 关于spring的配置文件的分模块策略
- Jos-lab3 Exercise 7&9
- nyoj-216-A problem is easy
- vb.net 读取内存地址
- 汇编EXTERN用法
- HDU3342--Legal or Not(强连通)
- URLLoader
- php 获取当前时间的毫秒数
- 中国将打造世界第一执法船队
- VB.NET动态加载C#或VB.NET生成的DLL文件调用动画教程[黑白智慧写](动态调用DLL).txt
- nyoj-283-对称排序
- C语言实验题——自守数
- VC/C/C++ 代码17