当我尝试从程序集访问软盘时,我无法解决软盘上的内存映射问题。
顺便说一句,我的操作系统项目有一些基本的东西。
main.asm:
start:
mov ax, 07C0h
mov ds, ax
mov ah, 02h
mov al, 1
mov ch, 0
mov cl, 2
mov dh, 0
mov bx, 0x0500
mov es, bx
xor bx, bx
int 0x13 ; read second sector
jmp 0x0500:0 ; Everything work good
times 510 - ($ - $$) db 0
db 0x55
db 0xAA
现在一切正常。
second.asm:
mov ax, 0x0500
mov ds, ax
xor si, si
mov ah, 0Eh
mov al, [msg]
int 0x10 ; It's work
jmp end ; Im avoid variable declaration because this stopping program (can you explain me why?)
msg db 'y'
end:
现在,在第三个文件中,我正在尝试打印另一个变量,但它正在打印随机字符。
third.asm:
mov ah, 0Eh
mov al, [msg2] ; This don't print my var
int 0x10
jmp $
msg2 db 'b'
我录制到软盘映像并在 Linux 的 qemu-system-i386 模拟器中引导的每个文件。