既然选择了远方——30自制操作系统之第2天--汇编语言学习与Makefile入门

         终于要开始学习新的东西了,进入2013年以来,一直准备着各种考试。虽然这两天也在学校待着准备美赛,但终是有时间看是第二天的学习了(亲啊,才第二天哎…)。那就闲话不多说,开始吧:

        汇编语言接触的不多,也许与本科没开这门课有关,课内学习还是偏向于高层语言,对底层设计的较少。而对于Makefile,上一个暑假去东软实训的时候有做过一些学习,算是有一些基础了。

        第二天确实是比较简单,书上讲的很清楚,操作起来也不难,根据以下步骤我们做一遍就好,也有一些注意事项会提出:

首先我们参考书上的代码,来写出启动区的最初512个字节,自己写的代码,就没写注释了:

	ORG	0x7c00
	JMP entry
	DB 0x90
	DB "HELLOIPL"
	DW 512
	DB 1
	DW 1
	DB 2
	DW 224
	DW 2880
	DB 0xf0
	DW 9
	DW 18
	DW 2
	DD 0
	DD 2880
	DB 0,0,0x29
	DD 0xffffffff
	DB "HELLO-PEACH"
	DB "FAT12_RY"
	RESB 18
	
	entry:
		MOV AX,0
		MOV SS,AX
		MOV SP,0x7c00
		MOV DS,AX
		MOV ES,AX
		MOV SI,msg
	
	putloop:
		MOV AL,[SI]
		ADD SI,1
		CMP AL,0
		JE fin
		MOV AH,0x0e
		MOV BX,15
		INT 0x10
		JMP putloop
		
	fin:
		HLT
		JMP fin
		
	msg:
		DB 0x0a,0x0a
		DB "Hello Peach"
		DB 0x0a
		DB 0
		RESB 0x7dfe-$
		DB 0x55,0xaa
	
	
              很少写汇编代码,参开书上C语言的注释,自己画瓢了一下,不过感觉还挺不错的,起码正确运行了,这里注意入口处与JMP处的大小写要统一。

              写好之后,利用作者的nask.exe产生.bin和.lst:

              

	z_tools\nask.exe ipl.nas ipl.bin ipl.lst
              这里感叹一下作者自己编写的nask着实挺强大,反汇编溜溜的,若有错还可以指出错误,牛b:

             

          通过上图.lst文件,你可以清晰地看出汇编代码和机器码的对应关系。一下思维什么的有没有觉得清晰了一点呢?反正我是感觉好清晰啊~~(花痴…)

         好的,生成了.bin文件后,接着我们生成makeimg.bat批处理文件(什么名都可以)来利用作者编写的edimg.exe这款磁盘映像管理工具(神马东东,不明觉厉啊…),来得到img文件,然后利用原先的run.bat,在命令行里顺序执行asm->makeimg(或者你的批处理名)->run就ok了:

        我的makeimg.bat是这样写的,可以参考一下,不过要着重注意路径了:

         

     z_tools\edimg.exe imgin:z_tools/fdimg0at.tek wbinimg src:ipl.bin len:512 from:0 to:0 imgout:hello.img

        就是下图这样了:

        

          然后会直接弹出我修改的简单界面了:

        

        这一课就简单的实践过了,注意事项这边没什么,就这里结束,明天把剩下一点点makefile相关的东西我们再看看。对了,对于汇编代码的意思和各寄存器为什么这样执行的原理,我们也可以明天探讨探讨。

你可能感兴趣的:(动手制作操作系统)