30天自制操作系统日志第2天(共9页).docx

上传人:飞****2 文档编号:14158109 上传时间:2022-05-03 格式:DOCX 页数:9 大小:451.62KB
返回 下载 相关 举报
30天自制操作系统日志第2天(共9页).docx_第1页
第1页 / 共9页
30天自制操作系统日志第2天(共9页).docx_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《30天自制操作系统日志第2天(共9页).docx》由会员分享,可在线阅读,更多相关《30天自制操作系统日志第2天(共9页).docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上操作系统实验日志学号0姓名甘昆禄专业年级班级智能1601实验日期208.09.29实验项目第2天:汇编语言学习与Makefile入门一、实验主要内容1.首先下了一个文本编辑器,真的厉害,我们看看。HTML可以辨别和显示C和C+肯定也行二进制的镜像文件也可以打开修改,这里输入字母二进制文件自动修改了,很可以,不过在第五行再加字母就会出错。2.学寄存器和汇编语言诶我们学计算机的寄存器真的哪里都学过,每个课几乎都重新提一遍,特别电路逻辑已经很细致的讲了结构,系统课讲了CPU寄存器的用法。所以我觉得有点多余,不过巩固下知识也可以。用个例子说寄存器,我们把计算机看做一个机器人,

2、CPU就是大脑,寄存器是大脑里的记忆单元,而内存和硬盘对计算机来说,只是一个柜子,一个存储东西(数据)的大柜子,机器人只能进行数据处理,按照人的指令执行。指令已经固化在大脑CPU内部,但数据存储在柜子里,这个柜子分为许多小格,每个小格都编了一个号,第一个小格叫0号,第二个叫1号,以此类推,每个小格存储一个字节。抽象来讲,是一个一维的线性数组。一个小格是8bit一个字节,2个小格是2个字节,CPU可以操作1个,2个,4个,8个格子,比如AL(1),AX(2),EAX(4),RAX(8)。对CPU来说,内存和硬盘就是一个(数字)地址而已。显存,IO地址,U盘也是地址,存取内存比寄存器慢很多,所以编

3、写程序尽量用寄存器存数,而不是内存地址。CPU的记忆单元-寄存器很少,只有几十上百个,每个寄存器都有一个名字,比如AX,BX,CX,DX,SP,BP,DI,DI等等,因为名正则言顺。寄存器只是一个存储单元,他只能存储东西(数据),我们对他所做的所有操作只有存数据在里面,还有从中取出数据。MOVAX,100就是把数据100存储在AX寄存器中,MOVSS,AX就是把AX中的数据取出来,并放到寄存器SS中。MOV指令对应一个机器指令01码,处理器有一个专门的译码电路逐条把这些01编码翻译为各种控制信号,然后控制其内部的电路完成一个个的运算或者是其它操作。MOV AX,2000H;将16位数据2000

4、H传送到AX寄存器 MOV AL,20H;将8位数据20H传送到AL寄存器 MOV AX,BX;将BX寄存器的16位数据传送到AX寄存器 MOV AL,2000H;将2000H单元的内容传送到AL寄存器 需要注意的是: (1)两个存储单元之间不能直接传送数据,即:MOV指令只允许一个操作数在存储器中。MOV SI,2000H;这是错误的 (2)MOV指令中立即数不能直接传送给段寄存器(CS、DS、SS、ES)和IP;段寄存器之间不能直接传送。MOV IP,2000 H ;这是错误的 (3)CS和IP不能作为目的操作数。MOV CS,AX ;这是错误的 (4)MOV指令中立即数不能作目标操作数。

5、MOV 2000H,SI ;这是错误的还还还讲了add,CMP,JE等我就不讲了。3.中断诶嘿,这个也是学过的,可能不同系统对应的中断号不同,但机制都是一样的,无非就是通过I/O的硬中断或系统的软中断让CPU暂时停止当前工作,转而去执行对应中断的程序,结束后继续执行原来的工作,这里软中断对应16号中断函数。而这些中断函数在出厂的时候就已经写在了BIOS(基本输入输出系统)程序装在了芯片里。电脑启动后,CPU把BIOS程序调入内存某个地址emmm是的4.简述汇编程序作用效果主体如下:entry:MOVAX,0MOVSS,AXMOVSP,0x7c00MOVDS,AXMOVES,AXMOVSI,ms

6、gputloop:MOVAL,SIADDSI,1CMPAL,0JEfinMOVAH,0x0eMOVBX,15INT0x10JMPputloopfin:HLTJMPfinmsg:DB0x0a, 0x0aDBhello, worldDB0x0aDB0RESB0x7dfe-$DB0x55, 0xaa前面entry部分就是寄存器的初始化,把程序加载到地址0X7c00(IBM大叔设的),然后放msg(这里是一个数据)地址到寄存器SI里,我们看到msg地址其实就是我们要开始输出的内容。首先是两个换行,然后就到那个字符串,那具体怎么输出看中间putloop。这里是用INT中断一个字符一个字符地输出,所以还用

7、到了判断,当判断对应的字符不是0时,就不断的输出,否则就跳到fin地址,这里的HLT就是作者说的停止,CPU停止工作。我们看,当msg地址不断加1后会出现一个字符是0,诶符合停止输出的条件,这时就跳到了HLT指令,若没有I/O指令(鼠标电脑等),这时CPU是释放的,挺好。那么helloworld就是这么打印出来的,学到这总算是明白了。5.Makefile入门可能作者觉得很多bat文件太烦?诶想想不对,确实程序员们要简洁不然很容易弄乱的,这时候就需要聪明的批处理文件了。.Makefile入门-一个聪明的批处理文件ipl.bin:ipl.nasMakefile./z_tools/nask.exei

8、pl.nasipl.binipl.lstMakeipl.bin;寻找后面两个依赖文件,执行汇编生成目标文件clean: -delipl.bin -delipl.lst;删除生成两个文件Makefile就很方便,把很多文件汇聚成了一个,文件、操作都简单了很多直接一个make run就行了而且也不怕什么错误,无论怎样make img和make run都不会错。二、遇到的问题及解决方法第二天主要还是理解和知识点吧,总的操作上并没有什么问题。1、 输出显示的时候有点困惑,没有完全了解汇编代码是,不知道输出是怎样的形式,是瞬间一次同时输出,还是像数码管扫描输出。后来明白是一个字符一个字符的输出,知道命令

9、结束。解决方法:主要是CMP指令理解错误了,以为是AL里地址为0时跳转,后来经老师提醒是对比对应的字符,当字符为0时跳转,我转回去看msg地址内容是看见0才恍然大悟。三、程序设计创新点1、为了确认我的猜测对不对,我对ipl.nas进行了修改,如下:这次我把CMP判断变成了1,结果不仅输出了helloworld,还输出了我后面的内容,直到比较到1.改为2后出现了乱码,程序差点崩(下次不试了),证明猜想正确四、实验心得体会总的来说这节对于有基础的我们并不难,汇编和计算机组成我们都有了解,虽然知识点多,但是学到新的东西还是挺少的。有INT指令吧,以前没学,关于控制显卡的中断的函数,挺有意思的。还有HTL,CPU停止指令。再有就是一些硬盘启动区、块的知识吧,还有Makefile也挺好玩的,感觉没那么简单这个批处理的没有后缀的文件。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁