30天自制操作系统day2
2015-04-18 10:36
246 查看
这一章主要讲解汇编基础知识和Makefile的使用
ORG指令:指定开始执行程序的时候,把程序装载到内存的哪个地址。如果不指定,则默认从0x0开始,会与BIOS程序发生冲突。程序helloos.nas中,指定的是0x7c00。这是因为规定的启动区内容装载地址是0x00007c00-0x00007dff。
AX,CX,BX等寄存器,在源代码中使用时看不出差别,但本质上是不一样的。AX适合用来计算。例如:
汇编成机器语言时,使用CX的是一个4字节的指令,而使用AX的是一个3字节的指令。
此外,CX是为方便计数而设计的(LOOP循环时作为循环次数),BX适合计算内存地址的基点。
AX,BX,CX,DX寄存器是16位的,每个包含高位和低位(如AL,AH),32位的机器中有32位的寄存器,如EAX,EBX,ECX,EDX。
JMP指令:JMP后面可以加label或内存地址,本质是一样的。在汇编语言中label都表示内存地址,是由编译器根据ORG指令计算出来的。
从内存读/写数据:例如
注意可以放在[]中指定内存地址的寄存器只有BX,BP,SI,DI。
ORG指令:指定开始执行程序的时候,把程序装载到内存的哪个地址。如果不指定,则默认从0x0开始,会与BIOS程序发生冲突。程序helloos.nas中,指定的是0x7c00。这是因为规定的启动区内容装载地址是0x00007c00-0x00007dff。
AX,CX,BX等寄存器,在源代码中使用时看不出差别,但本质上是不一样的。AX适合用来计算。例如:
ADD CX, 0x1234 ADD AX, 0x1234
汇编成机器语言时,使用CX的是一个4字节的指令,而使用AX的是一个3字节的指令。
此外,CX是为方便计数而设计的(LOOP循环时作为循环次数),BX适合计算内存地址的基点。
AX,BX,CX,DX寄存器是16位的,每个包含高位和低位(如AL,AH),32位的机器中有32位的寄存器,如EAX,EBX,ECX,EDX。
JMP指令:JMP后面可以加label或内存地址,本质是一样的。在汇编语言中label都表示内存地址,是由编译器根据ORG指令计算出来的。
从内存读/写数据:例如
MOV BYTE [123], AX MOV AX, WORD [BX]
注意可以放在[]中指定内存地址的寄存器只有BX,BP,SI,DI。
相关文章推荐
- 30天自制操作系统day2
- 《30天自制操作系统》 day0-day2小结
- 《30天自制操作系统》笔记一二
- 《30天自制操作系统》 第一天
- 30天自制操作系统
- 30天自制操作系统笔记-第三天-开始导入C语言
- 《30天自制操作系统》实现中文显示
- 《30天自制操作系统》读书笔记Day3
- 30天自制操作系统之第13天 定时器(2)
- 「30天自制操作系统」 Stop & 「OS67 」 Start
- 《30天自制操作系统》读书笔记Day15
- 30天自制操作系统-第三天-着手开发操作系统小节
- 30天自制操作系统笔记(九十)——源码
- 30天自制操作系统笔记(十三十四)——源码
- 《30天自制操作系统》第1天
- 《30天自制操作系统》第4天
- 《30天自制操作系统》学习笔记——第三天
- 《30天自制操作系统》学习笔记——第四天
- <30天自制操作系统>第三天
- 《30天自制操作系统》学习笔记——第六天