轉自:http://blog.csdn.net/arcsinsin/article/details/8126473
內嵌匯編的使用方法是:
__asm
{
語句
}
你可以把它插入程序中的任何位置,非常靈活。
讓我們看一個可以將兩個正整數相加的程序:
- #include <iostream>
- using namespace std;
- void main( )
- {
- unsigned int a,b;
- cin >> a;
- cin >> b;
- __asm //下面是內嵌匯編...
- {
- mov eax, a ;可以像這樣直接對eax賦值
- mov ebx, b;
- add eax, ebx
- mov a, eax ;可以直接將eax的值賦給a
- }
- //內嵌匯編部分結束...
- cout<<a<<endl;
- }
編譯運行之后的結果和C/C++寫是一樣的!
1 2
3
那既然匯編和C++實現的結果都一樣,而且寫匯編還要考慮煩瑣的細節,寫起來比C/C++慢。不像C/C++這樣的高級語言方便。為什么我們還有必要用匯編呢?
因為匯編更接近底層,更接近機器語言,直接對硬件調用,執行起來效率更高。像寫一些要求比較高的軟件,就需要寫部分匯編。
之前,測試程序運行時間的問題,更精確的方法就是用匯編寫的。
- // VC 6.0 中的ASM 代碼
- long HighStart,LowStart;
- long numhigh,numlow;
- //獲取代碼運行開始時cpu內部計數器的值
- __asm
- {
- CPUID
- RDTSC
- mov HighStart, edx
- mov LowStart, eax
- }
- //這里放你要測試的代碼
- //獲取代碼結束時cpu內部計數器的值,並減去初值
- __asm
- {
- CPUID
- RDTSC
- sub eax, LowStart
- mov numlow, eax
- mov eax,edx
- sbb eax,HighStart
- mov numhigh,eax
- }