如果没有操作系统,我们怎么进行汇编编程?

谁学逆向工程 2011-08-02 05:19:03
老早就听说:操作系统是由汇编语言做出来的。
那假设现在就给你一台新电脑(当然没有操作系统,只有硬件),让你编程(当然不会让你编写操作系统),我只是想问问,应该怎么做。
刚看完王爽的《汇编语言》第二版,第四章的前八节。在90页总结了下面一图



从这里看出,有各种类型的文件,比如ASM、OBJ、EXE。
这我就奇怪了,在没有操作系统的前提下,哪来的这些文件类型? 编译器、连接器要怎么运行? 没有操作系统的电脑,应该不会有任何程序,屏幕也不会有任何输出(BIOS除外),难道人们要在黑屏的情况下编程?

在只有硬件的情况下,第一个操作系统是怎么产生的
...全文
1214 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
abee23 2011-08-17
  • 打赏
  • 举报
回复
首首先:这个计算机硬件系统已经完成!因为这个时候可以用机器语言来控制计算机硬件资源!
然后0是级语言的开发,然后到1级语言的开发,再然后就是2级的语言开发!这个过程的结果 会产生了一个操作系统!最后就是高级的应用...

汇编就是在那个0,1语言发展级别的磞出来了。。。


两个字: 进化
用户 昵称 2011-08-07
  • 打赏
  • 举报
回复
机器去执行的非rom指令,就相当于操作系统了,最简单的还是直接写缓存,显示一个hello, world。
SP12345678902 2011-08-07
  • 打赏
  • 举报
回复
我是来学习的
gsy999 2011-08-04
  • 打赏
  • 举报
回复
  系统加电或重置,程序在地址0FFFF0H处开始执行。这是8086系列微处理器的特点,与MS-DOS无关。用这类处理器进行系统设计时就将0FFFF0H置于ROM区域中,并且其内容是一条跳转机器指令,使控制转给系统测试程序及ROM自举(bootstrap)程序。
    ┌────────────────┐
    │    ROM自举程序     │
    ├────────────────┤
    ├────────────────┤RAM顶
    │                │
    │                │
    ├────────────────┤
    └─ ─ ─ ─ ─ ─ ─ ─ ┘
    ├ ─ ─ ─ ─ ─ ─ ─ ─┤
    │                │
    ├────────────────┤00400H
    │       中断向量     │
    └────────────────┘00000H
  图1-1典型的用8086/8088的微计算机系统加电后,在0FFFF0H处开始执行,该处为一条jump指令将程序控制转给ROM自举程序。
  ROM自举程序从磁盘的第一个扇区(boot扇区)中读入磁盘自举程序至内存某一任意地址,然后将控制移交给它(此boot扇区中还包含一个与磁盘格式有关的表)。
    ┌────────────────┐
    │    ROM自举程序     │
    ├────────────────┤
    ├────────────────┤RAM顶
    ├────────────────┤任意装入地址
    │     磁盘自举程序     │
    ├────────────────┤
    └─ ─ ─ ─ ─ ─ ─ ─ ┘
    ├ ─ ─ ─ ─ ─ ─ ─ ─┤
    │                │
    ├────────────────┤00400H
    │       中断向量     │
    └────────────────┘00000H
  图1-2 ROM自举程序将磁盘自举程序从系统盘第一个扇区中装入内存。然后将控制移交给它。
WJN92 2011-08-04
  • 打赏
  • 举报
回复
直接使用机器码
MHBBCRCPJ 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiaoyuanyuan2009 的回复:]

引用 8 楼 mhbbcrcpj 的回复:
楼主你是不是又有问题了?

哇哈哈!!
上面你说的指令结构是咋个事
[/Quote]
就是机器码的结构。 - -
比如 mov ax,01234H 。机器码中哪部分表示这段机器码是 mov ,哪些表示是ax,还有1234放在什么位置,都是规定好的。
lzfwan 2011-08-04
  • 打赏
  • 举报
回复
方法如下

1.机器码写
2.用机器码编一个解释汇编的程序(即将汇编转换成机器码的程序)当然不一定非要用汇编指令,你发明一种指令也行,只要能编译成对应的机器码就行
3.发明一种更高级的指令(如C),对汇编指令或延伸出的功能进行包装。当然要要写种对应的转换程序(编译)
4.继续发明。。继续包装。。。

各种程序不就这么来的么。。。。
谁学逆向工程 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mhbbcrcpj 的回复:]
楼主你是不是又有问题了?
[/Quote]
哇哈哈!!
上面你说的指令结构是咋个事
MHBBCRCPJ 2011-08-04
  • 打赏
  • 举报
回复
现在的CPU一般都不支持手动输入程序了。但理论上是可以的,比如单片机就完全可以手动输入程序,而且也不是很困难,我听说有人真就用个开关就把程序写进去了。
不同的CPU可以在一定程度上兼容,就算是不兼容的两台计算机其中的一台也可以弄出一个能在另一台计算机上运行的程序,只要知道指令的结构就行了。比如现在的单片机都是在普通PC上进行编译和链接,最后直接把程序写到单片机里。还有手机软件,手机软件应该都是在PC上写的。当然也可能有能在手机上运行的编译器。
还有现在大部分的CPU应该都是在电脑上进行设计的。楼主你是不是又有问题了?
DiamondCG 2011-08-02
  • 打赏
  • 举报
回复
在连基本的纸和笔都没有的情况下,我们要进行数学运算的话.就只好扳手指头了.当然,效率肯定要低点!
ggw 2011-08-02
  • 打赏
  • 举报
回复
看一下OS原理,上有介绍OS是如何发展变化的。
masmaster 2011-08-02
  • 打赏
  • 举报
回复
楼主还是先把王爽的书学完再说吧。
canmeng 2011-08-02
  • 打赏
  • 举报
回复
第一个操作系统是用机器码写的呗。
jiangquan384414031 2011-08-02
  • 打赏
  • 举报
回复
操作系统是逻辑上的概念,实际都是指令的集合,你所谓的最初的操作系统只是一系列指令集的抽象
wuwei168668 2011-08-02
  • 打赏
  • 举报
回复
“先用写一个最简陋的核心编译功能,然后用这个核心编译功能来自编译,自扩展...”
自编译~自扩展~
wuwei168668 2011-08-02
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090213/20/6a20f1af-aa1b-44a0-b54b-b8f84a446861.html
请看这个帖子。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧