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下都能正常打印 但在没有系统的裸机下运行 此句无法打印
}
展开
 我来答
White_MouseYBZ
2013-09-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6390万
展开全部
谁说的char str[]="abc"; 中的abc是常量区的?错!
char *p="abc"; 中的abc才在常量区!
百度网友4e0e17a
2013-09-20
知道答主
回答量:10
采纳率:0%
帮助的人:6万
展开全部
可能是程序错误,或软件错误,删除重新下载
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喻千易4W
2013-09-20
知道答主
回答量:93
采纳率:50%
帮助的人:21万
展开全部
在栈区吧?
追问
是在栈区 而在裸机下 也就是没有系统的情况下运行时 "abc" 这种 常量就会没掉 估计是裸机下 没有初始化或者没有栈区的原因 知道怎么处理吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小黄鸭de寿司
2013-09-20
知道答主
回答量:24
采纳率:0%
帮助的人:3.4万
展开全部
的顶顶顶顶顶的顶顶顶顶顶的顶顶顶顶顶
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式