L2_揭开钢琴的盖子
## L2_揭开钢琴的盖子
1-从白纸到图灵机
原理:用控制器模拟人的大脑,用读写头模拟眼睛和笔,用纸带模拟书本纸,如图:控制器将3,2,+读入,然后控制器运用其加法逻辑,在纸带上给出运算结果5.
局限性:只能够做加法运算,无法像计算机一样完成更多操作。
2.从图灵机到通用图灵机
原理:为了解决图灵机的局限性,在纸带上有-设置控制器的动作,也就是说该动作可用于修改控制器的运算逻辑(eg:把加法运算逻辑的程序载入进来,就可以运算加法;把QQ的程序载入进来就可以运行QQ,把微信程序载入进来就可以运行微信)。类比于生活,控制器相当于厨师,菜谱相当于控制器中的一套逻辑,每对厨师载入一个菜谱,他就能根据这套逻辑做出相应的菜肴,实现对数据的处理。
3.从通用图灵机到计算机
原理:整体上是取指执行,每一个逻辑和数据都放到存储器中,每一个逻辑(即程序)以及数据都对应一个内存地址,当指向某一个逻辑,就是将该条指令载入到控制器,解释执行该指令即可。eg:图中IP指向 mov ax,[100] 这一个程序代码,控制器就会将该指令载入进来,解释执行即可(将内存地址为100上的数字赋值给ax,所以ax为0)。
4计算机开机时做了什么
固化程序和引导扇区(一个扇区占512个字节)
5.引导扇区代码bootsect.s
引导扇区为什么不采用c语言呢?
mov ax, #BOOTSEG
mov ds, ax
//ds == 0x07c0,得到段寄存器地址
mov ds, #INITSEG
mov es, ax
//es == 0x9000,得到段寄存器地址
sub si, si//两个相减,表明si==0x0000
sub di, di//两个相减,表明di==0x0000
rep movw//表明重复移用256个字(512个字节)
jmpi go, INITSEG//go是段偏移量,INITSEG是段基址,该指令目的是为了跳到go指令处执行
6.jimpi go, INITSEG(0x13读入磁盘扇区的中断)
开始扇区,读入扇区的数量以及读入扇区的终止位置:
7.读入setup模块后:ok_load_setup(10号中断)
8.read_it//读入system模块
BOOTSECT的作用是将操作系统读进来,然后打出一个log,接下来BOOTSECT将控制权交给setup,使用
jmpi 0,SETUPSEG//setup位于0x90200---(ip==0x0000,cs==0x9020)将cs左移4位加上ip正好是先前计算的setup的位置
本文作者:远道而重任
本文链接:https://www.cnblogs.com/rong-xu-drum/p/15850689.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步