tde*_*ton 13 x86 assembly nasm bootloader
我正在关注本教程,作为使用NASM进行x86的bootloader/OS开发的第一次尝试:
http://joelgompert.com/OS/TableOfContents.htm
我正在第4课,这使我的引导程序打印出"Hello,world"字符串.我不理解org指令的含义(指令?).
据我了解,org定义正在执行的程序加载到内存中的位置.在程序中使用任何类型的标签或相对地址时都需要这样做.
假设我的程序中有一个用这样的标签定义的字符串:
szHello db 'Hello, world!', 0
Run Code Online (Sandbox Code Playgroud)
然后我尝试像这样引用该标签(仅相关的片段):
org 0x7c00
xor ax, ax
mov ds, 0
...
mov si, szHello
lodsb
...
int 0x10 ; Print first character of szHello
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么这不等于这个?:
org 0
mov ds, 0x7c00
...
mov si, szHello
lodsb
...
int 0x10
Run Code Online (Sandbox Code Playgroud)
当我运行第一个示例时,我的字符串正确显示.第二个例子不起作用.
如果问题是我的概念问题,也会非常感谢相关文档的指针.
Igo*_*sky 10
0000:7C00不等于7C00:0000.段部分以段落计算,而不是字节.试试这个:
mov ax, 0x7c0
mov ds, ax
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8806 次 |
| 最近记录: |