前面部分还是正常的汇编编译模式:
JC:jump if carry,如果进位标识(carry flag)是1的话,就跳转。
INIT 0x13 是调用BIOS的0x13号函数。是系统复位。
磁 盘 读 、 写 , 扇 区 校 验 (verify), 以 及 寻 道 (seek)
·AH=0x02 ; ( 读 盘 )
·AH=Ox03; ( 写 盘 )
·AH=Ox04; ( 校 验 )
·AH=OxOc; ( 寻 道 )
·AL=处 理 对 象 的 扇 区 数 ; ( 只 能 同 时 处 理 连 续 的 扇 区 )
·CH = 柱 面 号 &0xff;
·CL =扇 区 号 ( 0 -5位 ) 丨 ( 柱 面 号 & 0 x300 ) > > 2 ;
·DH = 磁 头 号 ,
·DL = 驱 动 器 号 ;
·ES:BX=缓 冲 地 址 ; 〈 校 验 及 寻 道 时 不 使 用 )
·返 回 值 :
·FLACS .CF=0: 没 有 错 误 , AH=O
·FLAGS.CF=1I: 有 错 误 , 锘 误 号 码 存 人 AH 内 ( 与 重 置 (reset) 功 能
我 们 这 次 用 的 是 AH=0 x02 , 哦 , 原 来 是 “ 读 盘 ” 的 意 思 。
一 样 )
FLACS .CF:进位标志
进位标志只能存储1位信息,像这种1位寄存器称之为标志flag。
含有IPL的启动区位于C0-H0-S1(柱面0,磁头0,扇区1的缩写),下一个扇区是C0-H0-S2
缓冲区地址是内存地址,即从软盘中读出的数据在内存的装载位置。
因为BX寄存器只有16位,只能存储64K数据,所以增加了EBX寄存器来表示更大(32位)的内存地址。但未导入EBX之前C