c语言和汇编的问题

来源:百度知道 编辑:UC知道 时间:2024/04/29 09:46:36
#include <stdio.h>
void print()
{
_asm
{
DSEG SEGMENT
MESSAGE DB 'HOW DO YUO DO',0DH,0AH,024H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
BEGIN:
MOV AX,DSEG
MOV DS,AX
LEA DX,OFFSET MESSAGE
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END BEGIN
}

}
void main()
{
print();
}

怎么不可以运行

用的是VC6.0
不要复制一大堆

没人看的!!

上面的仁兄 mian()不是在吗,你没看到?

VC 是可以嵌入汇编,可是你嵌入的是一个完整的汇编程序,这有些不合理吧. 试想,如果可以嵌入完整的汇编程序,那 VC 岂不是可以叫 VA(Visual Asm)了:) 你把那些定义段的伪代码去掉,然后将变量定义放在 __asm{} 前面(嵌入代码可以访问到这些变量的).然后再编译,应该没问题了:)
在VC中嵌入汇编,只需在
_asm
{
加入实现应用的汇编代码。
}
就行了。

DSEG SEGMENT
MESSAGE DB 'HOW DO YUO DO',0DH,0AH,024H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG

这些都是鸟语,vc识别不了。vc是支持嵌入汇编,不是支持汇编

可以这样写

int aaa;
_asm {
mov eax,aaa
}

_asm { }里面不能有段定义相关的伪指令,不能有中断调用,只能有mov ax,bx等基本的汇编指令,所以你的print函数编译都通不过……

你的main函数在什么地方,编译器只能从你的主函数开始处理,我都没看见你的main函数,你说编译器怎么能执行?

hehe 是不是啊,我要看一下才能回答你 的问题