VC簡單嵌入匯編


轉自: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 
具體可以參看: http://blog.sina.com.cn/s/blog_71ded6bf01015vxd.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM