汇编开发编译平台
开发和调试汇编程序的方式很多。具体来说有masm,masm32,masm64以及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开发与调试汇编程序,实际上是最方便的。所以,这也是笔者为大家推荐的方式。