断矢量表,通常如图2那样将RAM数据区设在地址0040:0000H处.
常数先固化在ROM中,然后被复制进RAM,因此占用的存储器空间是DOS下的两倍.可在程序设计中设法限制要复制进RAM的常数数量.例如,系统若支持CRT显示器,可能需要在屏幕上显示各种消息和菜单提示.这时,可把所有显示函数和有关文本串放进一个模块,再用指针来存取它们.比如,本来可用下面语句打印提示:
printf("PressStoStart");
printf("PerssQtoQuit");
若程序中有许多类似的语句,便可能存在较多重复串.要是对各子串都用指针访问,编译就会把其中重复的串(如Press,to等)合并,省下不少内存空间.即把上面语句改为:
printf("%s%s%s%s","Press","S","to","Start") ;
printf("%s%s%s%s","Perss","Q","to","Quit");
用C语言编写嵌入式程序的过程与DOS下一样,只是要避免使用不能被固化到 ROM中的库函数.在DOS下,许多低级I/O函数(如putch,getch) 均通过DOS中断21与硬件接口,高级函数printf,scanf等也使用该中断.若希望在无ROMBIOS的系统上使用这些函数,应编写一个模仿 DOSINT21的函数,这样便能使用除磁盘I/O函之外的大多数标准I/O 函数,缩短程序开发时间,并保证较好的可移植性.当然,如果使用的是现成的嵌入式系统开发软件包,厂商将告知哪些函数可被固化进ROM,不必自己编写INT21函数. 编写嵌入式支持函数时要防止使用与DOS有关的库函数.比较起来,BC提供 的库比MSC的更独立于DOS.例如,MSC的printf函数要依赖几个低级 的DOS函数.所以在仿真INT21的控制台I/O函数时,建议用BC的 printf函数.
断电时,嵌入式系统应能保持那些用于系统恢复或外设配置的数据,可用电池供 电的RAM或EEPROM来存放它们.但在复位时,启动程序要把有初值的变量复 制进RAM,并对其余RAM区清0,结果会清除应保持的数据.为此,可把这类数据归入一个专门段,不包括在初始化和未初始化数据区中,不让启动程序修改它们.