zhongfangqing 发表于 2007-11-15 11:28

请教:哪种编译器能编译出16位程序,并且可以指定代码段开始地址?

代码段起试地址要在07c00h后面.谢谢各位大侠!

dxcnjupt 发表于 2007-11-15 13:07

gcc

你要用C语言写引导程序???

prolj 发表于 2007-11-15 13:08

nasm,gas,masm,tasm.

早期的bcc,tcc,

[ 本帖最后由 prolj 于 2007-11-15 14:39 编辑 ]

zxz1984 发表于 2007-11-15 13:14

编译嘛直接生成二进制代码就行了

zhongfangqing 发表于 2007-11-15 13:20

谢谢各位。是写一个用来备份的东西.
另外,gcc编译16位怎么指定参数.谢谢!

prolj 发表于 2007-11-15 14:41

djgpp也不行gcc就是32位的.

zhongfangqing 发表于 2007-11-15 15:08

在TC中实验中,先搞个hello world,不过总是好象有问题.
各位帮看看

void ShowMsg(char *pMsg, int iMsgLen);

void main()
{
   char *pMsg = "Hello world!";
   int iMsgLen = 13;
   ShowMsg(pMsg, iMsgLen);
   return;
}
void ShowMsg(char *pMsg, int iMsgLen)
{
/*
asm        mov es, seg pMsg
*/
asmmov ax, ds
asmmov es, ax
asm        mov bp, offset pMsg
asm        mov cx, iMsgLen
asm   mov ax, 1300h
/*
开始位置为11行23列
*/
asm   mov dx, 0b18h
asm   mov bx, 0003h
asm   int 10h
}

/*
int 10h的13h号功能介绍:
es:bp=字符串地址
al=写方式(0~3)
cx=字符串长度
dh/dl=起始行/列
bl/bl=页号/属性
*/

zhongfangqing 发表于 2007-11-15 16:41

char *pMsg="Hello world!"
这一行有什么问题么?

lsstarboy 发表于 2007-11-15 18:55

原帖由 zhongfangqing 于 2007-11-15 16:41 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
char *pMsg="Hello world!"
这一行有什么问题么?

正常情况下,可以执行。

但是风格,实在不敢恭维。在大一些的程序里出现这样的语句,好象要成为Bug的。

lynnlni 发表于 2007-11-15 20:56

TC是 可以的。。
页: [1] 2
查看完整版本: 请教:哪种编译器能编译出16位程序,并且可以指定代码段开始地址?