操作系统开发日记-day2

本文详细介绍了操作系统开发中的汇编基础知识,包括DB、RESB指令的用法,以及DD、DW、DB的区别。文章还探讨了ORG指令在内存加载中的作用,解释了0x7C00地址的重要性,因为它与BIOS启动过程相关。同时,文章介绍了汇编中的MOV指令和16位CPU的主要寄存器,以及如何利用INT指令调用BIOS功能。最后,提到了HLT指令在程序中的应用,以及为何操作系统加载地址通常从0x7C00开始的原因。
摘要由CSDN通过智能技术生成

汇编入门

DB指令:"data byte"的缩写,意思是往文件里直接写入一字节的指令

RESB指令:"reserve byte"的缩写,如果写成RESB 10意思是我们预约了10个字节。

在这里插入图片描述
在这里插入图片描述
DD、DW、DB的区别
在这里插入图片描述
;符号的作用是注释,相当于c++的//符号,DB指令的功能也变得更广,可以直接编写字符串。$符号是一个变量,可以告诉我们这一行现在的字符数。

在启动程序中,我们必须要保证第510字节(即第0x1fe)开始的地方是0x55 0xaa,使用$符号的话就可以直接计算出需要多少个字节来放0x00。

上述源代码中的一些专业的表示的含义如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ORG指令:这个指令告诉编译器,在开始执行的时候,把这些机器语言指令装载到内存中的哪个地址。有了这个指令的话,美元符$的含义也会有一些变化,它将代表将要读入的内存地址。

ORG指令来源于英文“origin”,意思是“源头、起点”。它会告诉编译器,程序要从指定的这个地址开始,也就是把程序装载到内存中的指定地址。这里指定地址是0x7c00, 对于很多人来讲0x7C00这个地址是很神秘的,不知道这是干什么的。但是对于了解过x86平台下BIOS启动过程的人,对这个地址再熟悉不过了。 BIOS就是将MBR读入0x7C00地址 ,然后进行后续的引导的。操作系统或是bootloader开发者必须假设 他们的汇编代码被加载并从0x7C00处开始执行。

entry指令:这个指令用于指定JMP指令的跳转目的地等。

MOV指令:这个指令的功能很简单,就是一个赋值的功能,虽然简单,但是MOV指令在不同的场景下有不同的意义,掌握它对于掌握汇编和操作系统开发至关重要。

在CPU中有一种名为寄存器的电路,相当于机器语言中的变量。具有代表性的寄存器有以下8个,简单在这里说明一下:

  • AX:accumulator,累加寄存器
  • CX:counter,计数寄存器
  • DX:data,数据寄存器
  • BX:base,基址寄存器
  • SP:stack pointer,栈指针寄存器
  • BP:base pointer,基址指针寄存器
  • SI:source index,源变址寄存器
  • DI:destination index,目的变址寄存器

这些寄存器都是16位的寄存器,可以存储16位的二进制数。

在这里插入图片描述
这8个寄存器全部合起来只有16个字节。换句话说,就算我们把这8个寄存器都用上,CPU也只能存储区区16个字节。

另一方面,CPU中还有8个8位寄存器。

  • AL:累加寄存器低位
  • CL:计数寄存器低位
  • D
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的洋葱头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值