首页 / 软件开发 / 汇编语言 / 在Visual C++中使用内联汇编
在Visual C++中使用内联汇编2010-01-10一、内联汇编的优缺点因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便。内联汇编主要用于如下场合:1.使用汇编语言写函数;2.对速度要求非常高的代码;3.设备驱动程序中直接访问硬件;4."Naked" Call的初始化和结束代码。//(。"Naked",理解了意思,但是不知道怎么翻译,大概就是不需要C/C++的编译器(自作聪明)生成的函数初始化和收尾代码,请参看MSDN的"Naked <I>function</I>s"的说明)内联汇编代码不易于移植,如果你的程序打算在不同类型的机器(比如x86和Alpha)上运行,应当尽量避免使用内联汇编。这时候你可以使用MASM,因为MASM支持更方便的的宏指令和数据指示符。二、内联汇编关键字在Visual C++使用内联汇编用到的是__asm关键字,这个关键字有两种使用方法:1.简单__asm块__asm
{
MOV AL, 2
MOV DX, 0xD007
OUT AL, DX
}
2.在每条汇编指令之前加__asm关键字__asm MOV AL, 2__asm MOV DX, 0xD007__asm OUT AL, DX因为__asm关键字是语句分隔符,因此你可以把汇编指令放在同一行:__asm MOV AL, 2__asm MOV DX, 0XD007__asm OUT AL, DX显然,第一种方法和C/C++的风格很一致,并且有很多其它优点,因此推荐使用第一种方法。不象在C/C++中的"{}",__asm块的"{}"不会影响C/C++变量的作用范围。同时,__asm块可以嵌套,嵌套也不会影响变量的作用范围。