VC++與彙編語言混合編程事例-----兩個無符號整數相加

 
#include <iostream>
using namespace std;
//此程序也展示了內嵌彙編應如何使用C++中的指針
    void main( )
    {
        unsigned int a,b;
        cout
<<"輸入兩個正整數:"<<endl;
        cin
>>a;
        cin>>b;
        unsigned int *c = 
&a;
        __asm //下面是內嵌彙編...
        {
            mov eax, c; //c中存儲的a的地址->eax 
            mov eax, [eax]; //a的值->eax
                            //注意直接mov eax, [c]是錯誤的
              mov ebx, b; //可以像這樣直接對ebx賦值
            lea eax, [eax+ebx];
            mov a, eax; //可以直接將eax的值->a
        } //內嵌彙編部分結束...
        cout
<<a<<endl;
    }
/*
還有一個非常重要的寄存器,叫做標誌寄存器(EFLAGS),標明瞭運算結果的各個屬性,
你不能直接讀取或修改它。
這些屬性有:不溢出/溢出(OF)、正/負(SF)、非零/零(ZF)、偶/奇(PF)、不進位/進位(CF)等。
*/
發佈了39 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章