小编Wil*_*orf的帖子

我怎样才能在我的MBR中重新定位代码?

我正在尝试编写一个非常简单的MBR来开始学习如何编写MBR /内核.这是我到目前为止(从其他MBR的部分创建).我从使用nasm然后使用ld到链接的二进制文件与仅使用nasm两者有点不同,但这似乎不是问题.

我刚开始,jmp 0:continue但似乎跳转到0000:7c22(或001d单独使用nasm ...我相信我没有指定它开始于7c00)但我希望跳转到:7a22:7a1d重新定位代码的地址.我尝试使用just jmp continue,然后在下面看到未注释,将堆栈指针添加到continue指针,推送它并返回.当我读到第一个扇区时,我得到的只是一个闪烁的光标.任何帮助表示赞赏.

                            ; nasm+ld       nasm            comment
global _start
_start:
    xor    cx, cx           ; 6631c9        31c9            Set segment registers to zero
    mov    es, cx           ; 8ec1          8ec1
    mov    ds, cx           ; 8ed9          8ed9
    mov    ss, cx           ; 8ed1          8ed1
    mov    sp, 0x7A00       ; 66bc007a      bc007a          Stack
    mov    di, sp           ; 6689e7        89e7            Bottom of relocation point
    mov    esi, _start      ; be007c0000    66be00000000
    cld …
Run Code Online (Sandbox Code Playgroud)

x86 assembly nasm osdev bootloader

4
推荐指数
1
解决办法
671
查看次数

标签 统计

assembly ×1

bootloader ×1

nasm ×1

osdev ×1

x86 ×1