C 语言内嵌汇编 在C 语言中如何使用汇编语言呢
这个问题在 不同的编译器中,具体实现方法是不同的
不过在实现大方上也不过就是有两种,而且各种编译器的实现方法也是大同小异
一种是在C 语言中嵌入汇编语言代码, 另一种是让C 语言从外部调用汇编
下面我们就以 Borland 格式为例来说一说具体用法
但是,GCC 与Microsoft 的实现方法的与Borland 只在格式上有点区别
当然,GCC 的嵌入汇编是 AT&T 格式的
还好,不管什么格式,只是表达形式的不同而已,其内在含义是一模一样的
还是那句话各种编译器的实现方法是大同小异的,并没有本 质的区别
另外在最后还附带了一篇介绍在GCC 中使用内嵌汇编的文章
一、两种实现方式 首先,我们看一看在C 语言中如何嵌入汇编语言代码
在C 语言中嵌入汇编语言代码,也有两种格式,一种是单句的,一种是模块的
我们来看看一些简单的例子
例子 1: 单句格式的: main() { asm mov ah,2; asm mov bh,0; asm mov dl, 20; asm mov dh,10; asm int 10h; /*调用BIOS 中断设置光标位置*/ } 模块格式的: main() { asm{ mov ah,2 mov bh,0 mov dl, 20 mov dh,10 int 10h } } 在这个小程序里面并没有突出“嵌入”二字
不过从这个程序中可以看出其基本格式
嵌入的各行代码前面加上 asm 关键字或者把汇编语句放入 asm 代码块中,每行以分号或换行符结束,而注释必须是 C 语言格式的
下面我们来看一个让 C 语言和汇编协作的例子: 例子 2: main() { char const *MESSAGE=” OutPut from asm
\n$” ; asm{ mov ah, 9 mov dx, MES