标号,汇编地址,伪指令

 程序加电后首先读取主引导扇区的512字节,然后ROM-BIOS将其加载到逻辑地址0000:7c00处,然后判断其是否有效。

判断有效的方法是:
一个有效的扇区其最后两个字节应该是0x55和0xaa
ROM-BIOS首先检测这两个字节,若有效,则跳转到7C00处继续执行。

5.5.1 标号,汇编地址
在源程序的编译阶段,编译器会把源程序当作一个独立的段来处理,并从0开始计算和跟踪每一条指令的地址,因为该地址是编译期间计算的,所以称为汇编地址。
汇编地址是在源程序编译期间,编译器为每条指令确定的汇编位置,指示该指令相对于程序或者段起始处的距离,以字节计。当编译后的程序装入物理内存后,他又是该指令在内存段的偏移

5.5.2 如何显示十进制数字

  1. 除10取余
  2. 由显示原理可知,我们要将数字相应的ASCII码送到显存位置,而对于数字来说,数字+0x30,就是其对应的字符。5+0x30 = ‘5’

5.5.3声明数据
声明数据所使用的语句(dd,db,dw)并不是汇编指令,他们是编译器提供的汇编指令,叫做伪指令,仅由编译器执行,编译成功后,伪指令就消失了。

5.6jmp指令

  1. jmp cs:ip。这种格式给出了绝对位置
  2. jmp near 标号。这种格式给出的相对当前ip的位移。注意,IP是要+1的。

主扇区:
最后两个字节的数据必须是0x55和OxAA。可以使用db,dd,但这里麻烦之处在于无法知道前面的代码是不是已经够了510字节。

伪指令times可以用来重复它后面的指令若干次

times 20 mov ax,bx:将mov ax,bx这条指令重复20次。

你可能感兴趣的:(《从实模式到保护模式》)