如何在Visual Studio中運行和調試彙編代碼?

來源:互聯網
上載者:User
最簡單的方法, 就是在VS2010的C++檔案裡直接使用__asm{} 直接寫彙編代碼. 執行個體代碼如下:
#include <iostream>using namespace std;int main(){    char a[10] = "1234";    __asm    {        push eax        push edx        push ecx        lea eax, a        mov     cl,byte ptr [eax]        mov     dl,byte ptr [eax]        movzx   ecx,cl        movzx   edx,dl        shr     ecx,4        shl     edx,4        or      ecx,edx        mov     byte ptr [eax],cl        inc     eax        mov     cl,byte ptr [eax]        pop ecx        pop edx        pop eax    }}
 

另外是書寫徹底的彙編代碼, 具體步驟如下, 就不翻譯了.

How to Use VS2010 to Write Assembly

===============================

Using Visual Studio to write an assembly program may be tricky. Specific steps are to be followed in order to be able to create your first MASM x86 assembly program with VS2010 (images from the configuration steps mentioned below are taken from here):

Expand the ‘Other Project Types‘ tree, Select ‘Visual Studio Solutions‘, and create a new ‘Blank Solution‘.

File | Add | New Project…

Expand the ‘Other Languages‘, ‘Visual C++‘, ‘General‘ section and create a new ‘Empty Project‘.

Now right click on the Project in the Solution Explorer and select ‘Build Customizations…‘.

Tick the ‘masm‘ box and say OK.

Add a new file to the project with the .asm extension by right clicking on the Project in the Solution Explorer and selecting ‘Add | New Item…‘ then ‘Text File‘. Enter a filename ending with .asm (e.g. test.asm). Press OK.

Now (and if you skipped the last steps, this won’t work) right click on the Project and select ‘Properties‘. You should see a dialog like this (Note the MASM item at the bottom of the tree). If you don’t, then something went wrong.

There are a few critical things to set up in the Linker options in order to get it to work:

Set the following property to Windows or Console as appropriate:

Configuration Properties > Linker > System> SubSystem

Set the entry point to the name of your main method (as per the END directive – see code):

Configuration Properties > Linker > Advanced > EntryPoint

All you have to do now is write some code and run it.

 

遵循上面的步驟, 我成功的運行並調試了一段彙編代碼.下面是我的原始碼和調試.

.586              ;Target processor.  Use instructions for Pentium class machines

.MODEL FLAT, C    ;Use the flat memory model. Use C calling conventions

.STACK            ;Define a stack segment of 1KB (Not required for this example)

.DATA             ;Create a near data segment.  Local variables are declared after

                  ;this directive (Not required for this example)

.CODE             ;Indicates the start of a code segment.

main PROC

push    ebp

mov     ebp,esp

mov     edx, 80002418h

xor     eax,eax

mov     ecx,20h

SFT1:

shr     edx,1

jnc     LOOP1

inc     eax

LOOP1:

loop    SFT1

pop     ebp

ret

main ENDP

END

 

 

 

參考資料

======================

Assembly Programming with Visual Studio 2010

http://www.codeproject.com/Articles/271627/Assembly-Programming-with-Visual-Studio-2010 

Assembly sample source codes

http://www.assembly.happycodings.com/code6.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.