BIOS编程入门问题 汇编 怎么连接生成COM文件

作者&投稿:金柄 (若有异议请与网页底部的电邮联系)
汇编语言编程问题,用nasm写了段程序生成了.com文件,源代码如下:~

之前不是没输出,是输出到ret太快你没看到,ret之后程序就崩溃了,胡乱执行所以之前屏幕上显示的东西你当然看不到
你还是在dos下执行所以就调用dos结束程序的api,mov ax,4c00h int 21h,这样才能正常退出

BIOS的程序相当的难编写,如果特别感兴趣可以研究下x86架构,像主板芯片组手册,CPU的手册都得需要,还得需要主板的原理图。

在DOS系统,COM文件只有一个段,其运行代码和数据都在这个段,并且运行起始地址必须在100H的地址,这些都没有什么高深的技术,只是一个约定。如EXE文件有个文件头,其实COM文件也有一个文件头,这就是为什么COM文件运行的起始地址必须在100h,从100h往前的256个字节,就是COM文件的文件头,称为PSP,下面是COM文件的约定:
1、最大长度为64K;
2、只允许一个段;
3、程序入口点 PSP:100h
4、CS = PSP
5、IP = 100h
6、DS = PSP
7、ES = PSP
8、SS = PSP
9、SP = 指向该段最后一个字
PSP 的结构:
0 WORD INT 20H (程序退出,相当于中断 21H 的 4CH 调用)
2 WORD 操作系统分配给本程序在内存中的结束地址
4 BYTE 保留
5 5 BYTE 远程调用DOS功能的请求句柄
A 2 WORD INT 22H 入口地址
E 2 WORD INT 23H 入口地址
12 2 WORD INT 24H 入口地址
16 11 WORD 保留
2C WORD 环境块段地址
2E 23 WORD 保留
48 16 BYTE 第一个 FCB 表
58 16 BYTE 第二个 FCB 表
68 2 WORD 保留
6C 128 BYTE 命令行参数 (例如你输入DEBUG C:\DOS\CHECK.EXE,DOS操作系统会将后面那个字符串“C:\DOS\CHECK.EXE”存入这个地址,用户可以通过读这个块,得知用户输入了什么参数。)
按照上述的格式书写的代码,经过下面的编译,即可生成COM文件。
编译命令:
C:>C:\MASM32\BIN\ML.EXE /c /Cp /nologo /I:C:\MASM32\INC, 你的程序.ASM
链接命令:
C:>C:\MASM32\BIN\DOSLINK /TINY, 你的程序.OBJ
下面给出一个最简单的COM文件的汇编代码:
CSEG SEGMENT 'CODE'
ORG 100H
start: LEA DX, MSG
MOV AH, 09H
INT 21H
MOV AX, 4C00H
INT 21H
MSG DB 'Hello!$'
CSEG ENDS
END start
另外要多说一句,你想将代码贴到BIOS,那个不是COM文件,而是BIN文件,这种文件没有办法单独运行,必须置入特定地址,这种文件必须使用 ORG 来对代码和数据定位,这些代码可以因为ORG 的分配,分散在这个内存任何地方,换句形象点的话,就是你写了一段代码,编译后,需要你自己手工或写另一段代码,将你的代码分别搬运到内存各处,一个所谓的程序,可能被分割到整个内存任何地方。
这些东西输入实在太辛苦,所以只能写这么多了。
另外补充几句,你说的exe2com,这个程序在转换过程中,会检测你的代码是否安装COM约定来写,用COM文件约定写的代码,同样可以链接成EXE文件,你将DOSLINK链接命令后面的那个 /TINY参数去掉,生成的就是 EXE 文件,这种文件才能用 exe2com来将EXE文件转成COM文件。同理 exe2bin 也是这样,你必须遵循BIN文件的书写格式而生成的EXE文件,才能使用exe2bin来生成BIN文件,不是随便一个EXE就能够生成COM和BIN文件的。这个东西之所以存在,是许多程序员喜欢先生成EXE文件,然后用DEBUG来调试,调试成功后,有把握了,才转成COM和BIN文件,其实完全可以重新链接,直接生成COM文件,(BIN文件是不能直接链接生成的,必须通过exe2bin来生成)。呵呵,写完上面那段话,才去看你的提问,于是补充说明几句。

可以用 DEBUG,人工操作,把 EXE 文件,转换成 COM 文件。


iOS12捷径对于编程小白难学吗?
结论:对于iOS12捷径的学习难易程度,个人体验因人而异。然而,对于有一定编程基础或越狱经验的用户,入门可能相对轻松。对于小白来说,捷径的学习可能更具挑战性,需要耐心和逐步实践。捷径(前身Workflow)的强大功能在iOS12中得到了提升,尤其是无需越狱也能实现高效快捷操作。然而,对于编程小白或未接触...

IOS编程问题
是赋值,将右边的值赋给左边的变量。

ios开发常识
第一步:编程入门课 时间预计:4个星期 推荐看公开课,Udacity也行,网易公开课也行,自己找一个面对对象语言(一般是JAVA, C++, Python)的课。我是在网易公开课看的斯坦福的CS106A,学的JAVA。 如果你纯粹学iOS开发,不推荐看哈佛CS50,CS50是给CS系的学生介绍整个计算机世界的框架,讲的内容比较多,进度比较快,对...

我想学iphone开发,请问入门难吗?
我个人写过2,3个应用app在自己的iPod touch上玩,gps, 网络连接,多媒体方面的库都有接触过。微信的摇一摇也不过就是300行code就能实现的事。ios开发不难,但是入门难。上手了以后就会发现非常简单。其实个人感觉最难的还是内存管理,不过现在ios5有了garbage collection了,内存完全有系统帮你管,就没...

我想学习iOS开发,可是我现在什么都不会,需要先从哪些方面入门学习?
iphone开发用的是objective-c,它和传统的C语言有些差别,不过从C转到objective-c 还算是比较简单。总的来说:第一:C语言编程基础 第二:objective-c 语言编程基础 第三:硬件设备(包括一台安装了mac os x操作系统的苹果电脑,因为ios sdk只能安装在它自己的mac os x操作系统里,另外还要个ios设备...

想问下做ios平台的软件开发,需要那些基础知识
IOS开发方面的知识,大概有一下几点。1、环境准备。这就是开发前所需的环境,相关软件的安装及使用详解。这里包括有IOS开发前准备,Xcode集成开发环境的安装使用与项目建立流程,Xcode6中的Playground的特点和使用方法,IOS开发常用操作及技巧,IOS程序打包与发布 2、Swift编程语言。包括有Swift语言基础,Swift...

想自学iOS开发,因该怎么开始
自己动手写代码,记忆更加深刻,效率更高。分阶段的进行学习:1、看视频(零掌握,系统的学习和了解),2、看书(对编程有了一定的掌握,作为补充和提高),3、看博客帖子(取长补短)。在学习过程中书籍资料的话看苹果的官方文档,开发手册,其他的书籍在有了一定的掌握之后,作为补充和太高来学习。

很想学习苹果系统编程!ios开发入门难吗 谁有ios视频教程或ios开发书籍...
ios开发前景很好,好好学习的话入门不难。 基础不好的话需要从基础学起,想学的话找个好教程跟着欧阳ios开发全套的从基础学起的视频教程,或者看欧阳那本书《swift开发实战权威指南》一步一步学下去, 好好学习,ios开发入门也就不难了。

学习iOS开发C语言要学哪些基础知识
因此,它的应用范围广泛。 C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。C语言是最受欢迎的语言之一。iOS开发百科全书—C语言百科 1.编程入门 首先介绍C语言的学习路线、环境搭建、iOS编程的行业前景、计算机的基本工作原理,为刚入门的初学者做铺垫,有一个基本概念,...

如何正确有效地入门 Objective-C
推荐入门书籍:tips:以下所有书籍有英文版看英文版,有最新版看最新版 1、《Objective-C 程序设计》(难度指数:※※)2、《iOS 7应用开发入门经典》(难度指数:※※)3、《iOS开发指南-0基础到AppStore上架》(难度指数:※※※)4、《iOS编程实战》(难度指数:※※※)这里面讲解的很清楚,后面...

沙依巴克区19249101724: 怎么编译连接16位的汇编程序 -
良罚穿琥: 要看用的是masm的哪个版本,常用的有masm5、masm6、masm8. masm5将编译和连接分开,当masm.exe、link.exe、cc.asm(这个是要编译的文件)在同一个文件夹中时. 当前目录中,在命令行下,输入"masm cc;"命令,可完成编译...

沙依巴克区19249101724: 如何在DOS平台中对PCI卡编程 -
良罚穿琥: 大部分PCI卡,如PCI声卡、PCI显卡、PCI数字I/O卡、PCI A/D、D/A采集卡等均可在DOS平台(实模式)进行编程,具体方法是使用汇编语言调用PCI BIOS中断1AH,调用参数及调用细节可参阅“PCI BIOS Specification Ver2.x”,调用实例可...

沙依巴克区19249101724: 裸机上直接编程 -
良罚穿琥: 一、有BIOS,没有操作系统,那就不能使用开发环境了,可以编程,方法是: 1.拿一个电话,最好是按键的那种,1和0两个键可以用就OK. 2.准备一条电话线,把他插在电话上,另一头削皮. 3.把削了皮的那一端插在硬盘的输入数据位置上,...

沙依巴克区19249101724: 编程器怎么刷主板BIOS
良罚穿琥: 先下载BIOS,按主板型号下载,还有就是主板版本号.打开编程器,先选择器件,器件就是BIOS的型号,再读出BIOS,然后保存BIOS,即备份原有的BIOS,然后就是写入BIOS,最后校验BIOS,有些编程带有AUTO功能,只用把器件选择对了,再点AUTO就可以自动完成!

沙依巴克区19249101724: 广数980tdb编程教程怎么与电脑连接 -
良罚穿琥: 1.有很多档位的,编辑 mdi 手动 自动 ... 2.你切换到 编辑 3.点 程序 4.输入OXXXX你的程序名 5.然后跳出来的界面就可以了

沙依巴克区19249101724: 编写bios程序用什么编译器 -
良罚穿琥: 编写bios程序?楼主问题没有描述清楚. 如果是你手头有bios的源代码,那么用微软的MSVC编译器就可以. 如果你仅仅是想把BIOS文件烧录到主板上,那么一般的编程器只要支持BIOS的flash rom的都可以,比如SF100.

沙依巴克区19249101724: 用bios编写的程序与普通的串口通信程序怎么加在一起?
良罚穿琥: 你的串口通信程序 和 EMAC程序 在BIOS中就叫做线程了. 硬件中断在TCF--->scheduling-->HWI中设置,把你的中断向量表文件remove,BIOS中用不着.

沙依巴克区19249101724: 在DOS下如何进行汇编语言编程 -
良罚穿琥: 在纯DOS下,用edit或类似的全屏编辑器编辑asm源程序,用masm或tasm对源程序进行汇编,用link或tlink对obj文件进行链接生成可执行的exe文件,然后可直接运行exe文件 或者 用debug、td 对其进行调试. 若有错误,重复以上的步骤,......

沙依巴克区19249101724: 怎样裸机编程 -
良罚穿琥: 这个没什么好教的,什么叫裸机?一般来说没有编程软件就属于裸机.对于新手来说,裸机编程是一个比较好的选择,同时也比较疼苦.他不能像在专业的编程软件平台上那么方便,自动查错等常用功能都没有,这就要求我们有一定的编程基础以及经验.一句话就是多动手多熟悉.编程是没有捷径的,那些培训机构所谓的几个月速成都是瞎掰.慢慢来不用急,多做多练习你迟早会成为高手的.裸机编程不建议太久,一般3个月左右就行了,熟悉了就用软件吧,比如做得很好的eclipse,它能为我们编程节约很多时间,同时减少很多错误.因为正式的开发环境中几乎不会出现逻辑编程这种事情.

沙依巴克区19249101724: 在DOS系统下怎么用汇编语言编写程序 -
良罚穿琥: 用DOS的EDIT可以写源代码,然后保存,汇编,连接,即可生成汇编程序.具体方法是:进入DOS,输入EDIT,FILE,NEW,编辑汇编源代码,然后保存(注意扩展名为 .asm),在通过MASM或者TASM即可生成目标文件(.obj),再通过LINK即可生成可执行文件(.exe).

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网