我意识到在保护模式下,可以通过修改内存位置0xb8000等来使用内存映射的I / O打印字母。 我们可以在16位实模式下执行此操作吗? (使用细分访问位置,然后对其进行修改)
这是我的汇编代码...
[bits 16]
mov ax,0xb800
mov ds,ax #This is the segment register that should hopefully give me 0xb8000
mov byte[ds:0x0000],'X'
mov byte[ds:0x0001],0x0f
times 510-($ -$$) db 0
dw 0xaa55
这是行不通的。
[编辑] 原来我需要在末尾使用jmp $来防止任何随机代码执行,并且代码按预期运行
答案 0 :(得分:1)
原来,我只需要在末尾使用jmp $即可防止任何随机代码执行。代码按预期工作
答案 1 :(得分:0)
它应该可以工作,并且有两个可能的失败原因: