汇编开发编译平台

开发和调试汇编程序的方式很多。具体来说有masmmasm32masm64以及VS等工具都可以用来开发和调试汇编程序。

 

16位汇编:masm,dosbox

1.         安装masm包(含masm,link,debug等工具):c:\masm

2.         安装并启动dosbox0.74

3.         mount c: c:\masm

4.         切换到masm安装路径: c:

5.         编辑a.asm汇编代码

6.         masm a.asm

7.         link a.obj

           运行a.exe

8.         debug a.exe

9.         u反汇编a.exe代码

 

32位汇编:masm32

1.         demo拷贝到masm32\examples\

2.         启动QEDITOR.EXE打开.asm文件

3.         Project -> Assemblier ASM file

4.         Project -> Link OBJ file

5.         Project -> Run program

32位系统类似,64位汇编可以使用masm64工具。

 

VS中嵌入汇编:

VS中,可以使用__asm{}来嵌入编译和调试汇编程序,比如:

int strcmp_asm(char *s1, char *s2)

{

     __asm{

            mov esi,s1;

            mov edi,s2;

            L1:

            lodsb;lodsb:[esi]-->al,esi=esi+1

            scasb;scasb:al-[edi],edi = edi+1

            jne L2;

            test al,al;判断esi中是否到达字符串末尾

            jne L1;

            xor eax,eax

                   jmp L3;

            L2:sbb eax,eax;

                   or al,1;

            L3:

 

     }

}

 

int strcmp_asm2(char *s1, char *s2,size_t len)

{

     __asm{

        mov esi,s1;

        mov edi,s2;

        mov ecx,len;

 

        repz cmpsb;(ecx)!=0&&(esi-edi)==0

 

        jecxz L1;ecx==0,jmp

        js L2;(esi-edi)<0

        jns L3;(esi-edi)>0

 

L1:

        js L2;

        jnz L3;

        xor eax,eax;

        jmp L4;

L2:

        mov eax,-1;

        jmp L4;

L3:

        mov eax,1;

L4:

 

     }

}

 

int _tmain(int argc, _TCHAR* argv[])

{

 

       printf("%d\n", strcmp_asm2("hello","hellx",strlen("hello")));

       printf("%d\n", strcmp_asm("hcllo world", "hbllo world"));

 

       return 0;

}

   

由此可以看出,使用VS开发与调试汇编程序,实际上是最方便的。所以,这也是笔者为大家推荐的方式。

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注