这样使用堆栈 bootblock.s

发布时间:2014-10-25 2:24:05
来源:分享查询网

在bootblock.s中有这样使用堆栈,或者应该说使用内存的方法。    ! Variables addressed using bp register device    =      0 ! The boot device lowsec    =      2 ! Offset of boot partition within drive secpcyl    =      6 ! Sectors per cylinder = heads * sectors    push ax push ax  ! Push a zero lowsec(bp)  push dx  ! Boot device in dl will be device(bp) mov bp, sp  ! Using var(bp) is one byte cheaper then var.   此时,堆栈的结构如下所示   |------------| |    dx       | <- bp + 0 |------------| |    ax       | <- bp + 2 |------------| |    ax       | <- bp + 4 |------------| |               | <- bp + 6 |------------| |               | |------------| |               |   这样,接下来使用这些变量的话就这样    les ax, LOWSEC(si)   ! es:ax = LOWSEC+2(si):LOWSEC(si) mov lowsec+0(bp), ax  ! Low 16 bits of partition's first sector mov lowsec+2(bp), es  ! High 16 bits of partition's first sector   这样就保存到了 bp+2, bp+2+2这个位置对应的内存空间   movb dl, device(bp) ! dl = device to read 从 bp+0 这个位置的内存读出是从哪个device启动的。

返回顶部
查看电脑版