内容简介
汇编的一些基础知识、makefile
汇编
寄存器
先是介绍了这些寄存器,通用寄存器和段寄存器都是16位的。
在此基础之上,还将4个数据寄存器分成8个8位寄存器,分法如下:
前8位为AH(ax high),后八位为AL(ax low)。这也是高位计算机能够兼容低位计算机的原因。
注意:指针寄存器SP、BP和变址寄存器SI、DI不分高低位,也就是不能分成两个寄存器。
32位寄存器取名一般是在16位寄存器前增加字母E(extend),如EAX、EBX、ECX、EDX
指令
也都是一些常见的指令吧如MOV、JMP、CMP、ADD、INT、JE、HLT。
MOV:mov ax,0 等价于ax = 0,就是把后者的值赋给前者。注意,前后数据位数要一致。
JMP: 跳转指令,后面跟着目的地址或者一个标号。这个标号其实也就是标签,编译器能够通过origin的值计算出标签所在地址。
CMP:CMP AL,0等价于if(AL == 0),yes执行JE内容,no执行JE下一句内容。
JE:条件跳转指令,按我的理解,应该是与CMP配套使用的,具体描述如上。
ADD:ADD AX BX,等价于AX += BX,就是两个内容相加然后值保存在前者。
INT:软中断指令(用于满足操作系统的某些要求),INT 0x80是系统调用,INT 0x10是调用显卡BIOS
HLT:让CPU进入待机,一旦有任务要求则会重新开始。
[]:取地址。如MOV [678],123,就是将值123存储到地址空间为678的内存中去。
附上内存分布图一张:
Makefile
这部分内容网上该有的也都有,就不摘录什么东西了,也没涉及什么高深的Makefile语法,看看就行。
总结
不知道之后会不会出岔子啊,反正我现在关于批处理和Makefile的详细内容都没有去看,因为作者说他的镜像处理工具都是自己写的,我也不知道怎么调用API,看那些他的工具和参数十分云里雾里,大概知道在干什么就好了。反正最终还是依赖于源码,怎么编译生成操作系统的,就忽略吧~
此外,当我发现这本书有附带的光盘和全套文件内容时,我发现我手开始懒了,不会跟着敲一遍代码什么的。但这也不算是大问题吧,能吸收多少吸收多少,整本书看完、看懂是第一步,以后再去追求自己写一个这种东西吧。
- 本文作者: crlwebby
- 本文链接: https://crlwebby.github.io/basic/OS/OS-30-days-2/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!