这是怎么一回事情呢!?

boyfling 2002-10-25 02:37:53
VC6.0的console下

void A
{
__asm
{
mov ah, 2
mov bh, 0
mov dh, 10
mov dl, 10
int 21h <-此处错误
}
}

编译报错--error C2443: operand size conflict
...全文
63 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolfwindbbs 2002-10-27
  • 打赏
  • 举报
回复

权限不够,一般的程序都是运行在Ring 3下的。
wolfwindbbs 2002-10-26
  • 打赏
  • 举报
回复

还有在现在的WINDOWS编程中最好不要直接使用DOS中断。
wolfwindbbs 2002-10-26
  • 打赏
  • 举报
回复
to : arcsiny(诺亚方舟)
我在main()没有调用它当然没显示,看清楚。
wolfwindbbs 2002-10-26
  • 打赏
  • 举报
回复
试一下:
==========================
void A()
{
int x;
_asm
{
mov eax, x
}
}
yke2000 2002-10-26
  • 打赏
  • 举报
回复
作为汇编是没有问题,在VC中怎么用我就不清楚了。
yaoxinyan 2002-10-26
  • 打赏
  • 举报
回复
void A(void){
int x;
_asm{
mov ax, x //x是32位值,ax寄存器怎么能放得下?
}
} 怎么痛不过编译呢?
GOTO_2002 2002-10-26
  • 打赏
  • 举报
回复
void A(void){
int x;
_asm{
mov ax, x
}
} 怎么痛不过编译呢


是不是因为x为int,为2个字节,而ax寄存器不能放2个字节这么大?
我不大懂,只是提出自己的观点,希望前辈指点~~~~
GOTO_2002 2002-10-26
  • 打赏
  • 举报
回复
虽然我不懂汇编如何在C中欠套,但我在VC6.0下通过了调试。

void A()
{
__asm
{
mov ah, 2
mov bh, 0
mov dh, 10
mov dl, 10
int 21h
}
}


int main(int argc, char* argv[])
{
A();
return 0;
}
不过在WIN2000下出现了,该内存不能为READ~~~~
Crystal_arrow 2002-10-26
  • 打赏
  • 举报
回复
因该可以
boyfling 2002-10-26
  • 打赏
  • 举报
回复
void A()
{
__asm
{
mov ah, 2
mov bh, 0
mov dh, 10
mov dl, 10
int 21h
}
}

为什么在WIN2000下会出现该内存不能为READ~~~~
boyfling 2002-10-25
  • 打赏
  • 举报
回复
void A(void){
int x;
_asm{
mov ax, x
}
} 怎么痛不过编译呢
arcsiny 2002-10-25
  • 打赏
  • 举报
回复
通过好像也什么不显示啊!!
wolfwindbbs 2002-10-25
  • 打赏
  • 举报
回复
我这里可以编译通过
=====================================
#include "stdafx.h"

void wer()
{
__asm
{
mov ah, 2
mov bh, 0
mov dh, 10
mov dl, 10
int 21h //<-此处错误
}
}


int main(int argc, char* argv[])
{
return 0;
}
=============================================
把你的代码全贴上
boyfling 2002-10-25
  • 打赏
  • 举报
回复
一样的错误
favorit 2002-10-25
  • 打赏
  • 举报
回复
建议也是把21h改成0x21
wolfwindbbs 2002-10-25
  • 打赏
  • 举报
回复
改为0x21一试

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧