Nasm 汇编程序和Turboc的C程序混合编程,生成.com程序的方法
2008-01-23 21:48
453 查看
Nasm程序的结构:
SEGMENT _TEXT PUBLIC class=CODE ;注意只需定义该代码段即可,代码和数据在同一个段内
extern C函数(注意,以”_”开头)
resb 100h ;nasm obj文件不支持org,以resb 100h代替
..start: ;程序入口点
jmp begin
begin:
mov ax, cs
mov ds, ax
mov es, ax
push len_str
push BootMessage
call _input
global _DispStr ;C程序可以调用的过程
_DispStr:
…
ret
BootMessage: ;数据开始
times 9 db 0
len_str EQU $ - BootMessage
C程序的结构:(程序只能定义局部变量,其他数据只能定义在汇编程序中)
extern void DispStr(); // 引入汇编子过程
void input(char * off_BootMessage, int len)
{
off_BootMessage[0] = ‘a’;
DispStr();
}
编译过程:
Nasm 汇编程序.asm –fobj –o 目标程序1.obj ; 以OBJ格式输出
Tcc –c –mt –o目标程序2.obj C程序.c ;以小模式编译为目标程序
Tlink /t 目标程序1.obj 目标程序2.obj , DOS执行程序.com ;生成.com程序
SEGMENT _TEXT PUBLIC class=CODE ;注意只需定义该代码段即可,代码和数据在同一个段内
extern C函数(注意,以”_”开头)
resb 100h ;nasm obj文件不支持org,以resb 100h代替
..start: ;程序入口点
jmp begin
begin:
mov ax, cs
mov ds, ax
mov es, ax
push len_str
push BootMessage
call _input
global _DispStr ;C程序可以调用的过程
_DispStr:
…
ret
BootMessage: ;数据开始
times 9 db 0
len_str EQU $ - BootMessage
C程序的结构:(程序只能定义局部变量,其他数据只能定义在汇编程序中)
extern void DispStr(); // 引入汇编子过程
void input(char * off_BootMessage, int len)
{
off_BootMessage[0] = ‘a’;
DispStr();
}
编译过程:
Nasm 汇编程序.asm –fobj –o 目标程序1.obj ; 以OBJ格式输出
Tcc –c –mt –o目标程序2.obj C程序.c ;以小模式编译为目标程序
Tlink /t 目标程序1.obj 目标程序2.obj , DOS执行程序.com ;生成.com程序
相关文章推荐
- C程序与汇编程序混合编程
- 浅谈TC、BC和汇编混合编程连接技术及参数传递方法
- Matlab2012生成DLL文件与VS2005(VC)混合编程解决方法(折腾两天的成果)
- 李现路:DSP6000中C/C++语言和汇编语言的混合编程的方法
- arm编程,关于C函数中嵌入汇编和寄存器变量的混合使用方法。用汇编透视c语法操作
- 【转帖】深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- vs2005 vc++ 生成非托管的 不需要.net运行环境的exe程序方法
- linux 下 C 编程和make的方法 (七、补充,模块化项目组织的Makefile设计和自动生成脚本)
- ARM中C和汇编混合编程
- 在一个方法里生成了一个自动释放的数组,在另一个方法里使用它会导致程序崩溃。
- 【原创】C#与C++的混合编程--采用其中的第三种方法
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集
- 在Makefile动态生成程序版本号的方法
- 使用MPLAB编译C程序,查看生成的汇编代码
- VC++与汇编语言混合编程事例-----两个无符号整数相加
- 【编程范式】汇编解释swap方法
- delphi程序中动态生成控件的方法
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集
- Matlab生成C++代码及混合编程步骤说明
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集