C 语言与启动代码.docVIP

  • 7
  • 0
  • 约2.59千字
  • 约 5页
  • 2017-07-05 发布于河南
  • 举报
C 语言与启动代码

C 语言与启动代码 2009-09-04 02:09:36 来源: 作者: 【大 中 小】 浏览:114次 评论:0条 --?讲述当没有嵌入操作系统时如何启动执行文件 ???本来,各种C语言编译器都提供启动代码,以X86为例,无论是TC、MSC、? BC?都有。TC在不同模式下启动代码不一样,为C0X.OBJ.? ???一般编程,用不着去修改启动代码.但有的场合就有必要了.笔者为一套系统? 开发软件时发现:一套系统当没有操作系统时,要想使得系统正常运行是相当困难? 的.?笔者开发的系统CPU为80C188EB,无操作系统.?开发工具为TC2.0.?为了能使? 得系统运行,又不能用太低级的语言如汇编,可谓历尽辛苦(当然可以买现成的开发? 工具和仿真工具,太贵).? ???笔者重写了TC的启动代码,另外还改写了一个重定位工具(把EXE文件变为可? 直接写入ROM去的文件).因为很少见到类似文章,下面把主要内容写出来,以飨? 读者.? C语言的启动代码如下:???? ;?tcstart.asm? ;?for?d000?code?only,?external?eprom?on?memory?card? ;?FOR?PC?ROM?? extrn??_main:far?;??/*??说明外部的C语言的MAIN()?函数?*/? _text?segment?byte?public?CODE?;?/*?C语言生成的代码段?*/? _text?ends? _textend?segment?para?public?CODEEND;??/*?代码段的结束段?*/? _textend?ends? _data?segment?para?public?DATA;?/*?C语言生成的初始化数据段?*/? _data?ends? _dataend?segment?para?public?DATAEND;?/*?初始化数据段的结束段?*/? _dataend?ends? _bss?segment?para?public?BSS??;/*?C语言生成的非初始化数据段?*/? _bss?ends? _bssend??segment?byte?public?BSSEND;/*?C语言生成的非初始化数据结束段?*/? _bssend??ends? _stack?segment?para?stack??STACK?;?/*?堆栈段?*/? _stack?ends? DGROUP?group?_DATA,?_DATAEND,?_BSS,?_BSSEND? CGROUP?group?_TEXT,?_TEXTEND? _TEXT?segment????;?/*?代码段?*/? assume?CS:CGROUP,?DS:DGROUP,?ES:DGROUP,?SS:_STACK? public?start? db?55h???;/*?PC?ROM?标志?*/? db?0AAh? db?40h? jmp?start? start:?cli????????????;?disable?interrupts? mov?ax,?_STACK?;?initialise?stack? mov?ss,?ax? mov?ax,?offset?stackend? mov?sp,?ax? mov?ax,?seg?_BSS?;?/*?BSS?SEG?CLEAR?*/? mov?es,?ax? mov?cx,?offset?DGROUP:endbss? mov?di,?0???? mov?ax,?0? rep?stosb?;?write?to?ES:DI? mov?ax,?seg?DGROUP??;初始化数据段? mov?es,?ax?;?point?ES?to?_DATA? mov?cx,?offset?DGROUP:enddata? mov?si,?0? mov?di,?0? assume?ds:CGROUP? mov?ax,?seg?_TEXTEND:codeend? inc?ax? mov?ds,?ax?;?point?DS?to?_CONST? rep?movsb?;?copy?_CONST?to?_DATA? push?es?;?point?DS?to?_DATA? pop?ds? ?????????????????????????????;下面内容非PC?机可以不要? mov?al,?80h??????;?enable?NMI? out?0a0h,?al? mov?al,?0bch?????;?enable?8259?PIC??1011-1100?(irq0,1,6?enabled)? out?21h,?al? ?????????????????????????????;上面内容非PC?机

文档评论(0)

1亿VIP精品文档

相关文档