c语言问题 char str[]="abc"; 这里的abc应该是在常量区的 可是我用c写裸机程序 并不能用 有知道的老师吗
我是用vc1.5编译c文件成obj然后用MASM汇编链接obj成二进制文件boot.com此boot.com在windows下运行正常//打印一个字符voidputcha...
我是用 vc1.5编译c文件成obj 然后用MASM汇编链接obj成二进制文件 boot.com
此boot.com在windows下运行正常
//打印一个字符
void putchar(unsigned char key)
{
__asm
{
mov bh,0; 设置页码
mov al,key
mov ah,0Eh; 设置现示模式
mov bl , 0x07 ; 设置字体属性
int 10h
}
}
//打印字符串
void printfs(char *s)
{
int i=0;
while(s[i])
{
putchar(s[i]);
i++;
}
}
char shellstr[]={'\r','\n','s','h','e','l','l','>',0};
char c[]="abcd";
void cmain()
{
printfs(shellstr);//这一句正常打印
printfs(c);//这一句在win下和dos下都能正常打印 但在没有系统的裸机下运行 此句无法打印
} 展开
此boot.com在windows下运行正常
//打印一个字符
void putchar(unsigned char key)
{
__asm
{
mov bh,0; 设置页码
mov al,key
mov ah,0Eh; 设置现示模式
mov bl , 0x07 ; 设置字体属性
int 10h
}
}
//打印字符串
void printfs(char *s)
{
int i=0;
while(s[i])
{
putchar(s[i]);
i++;
}
}
char shellstr[]={'\r','\n','s','h','e','l','l','>',0};
char c[]="abcd";
void cmain()
{
printfs(shellstr);//这一句正常打印
printfs(c);//这一句在win下和dos下都能正常打印 但在没有系统的裸机下运行 此句无法打印
} 展开
4个回答
展开全部
可能是程序错误,或软件错误,删除重新下载
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在栈区吧?
追问
是在栈区 而在裸机下 也就是没有系统的情况下运行时 "abc" 这种 常量就会没掉 估计是裸机下 没有初始化或者没有栈区的原因 知道怎么处理吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
的顶顶顶顶顶的顶顶顶顶顶的顶顶顶顶顶
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询