WEB开发网
开发学院软件开发汇编语言 在Visual C++中使用内联汇编 阅读

在Visual C++中使用内联汇编

 2010-01-10 09:37:22 来源:WEB开发网   
核心提示:一、内联汇编的优缺点因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,在Visual C++中使用内联汇编,而且可以使用在C/C++中的变量,所以非常方便,同时,__asm块可以嵌套,内联汇编主要用于如下场合:1.使用汇编语言写函数;2.对速度要求非

一、内联汇编的优缺点

因为在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块可以嵌套,嵌套也不会影响变量的作用范围。

1 2 3 4 5  下一页

Tags:Visual 使用 内联

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接