CPU其实有16位模式和32位模式之分,以16位模式的话ax和cx就会很好用啦,如果以32位模式的话eax就会很好用的。32位的模式下可以使用的村内远大于1M,cpu的自我保护能力很强大,16就不行。
但是用32位模式的话我们就不能调用bios中断喽,因为bios是用16位编写的,所以我们得在前面吧所有的需要bios的内容先写好(虽然有一些虚拟8086可以模拟bios,但是貌似还挺复杂,我还不会额)
随意haribote.asm就变陈下边这样了
-
; haribote-os
-
; TAB=4
-
; BOOT_INFO
-
CYLS EQU 0x0ff0 ; 柱面的个数保存的地址
-
LEDS EQU 0x0ff1
-
VMODE EQU 0x0ff2 ; vga的数据
-
SCRNX EQU 0x0ff4 ; x
-
SCRNY EQU 0x0ff6 ; y
-
VRAM EQU 0x0ff8 ; 内存中图像数据的开始地址
-
ORG 0xc200 ; 地址
-
MOV AL,0x13 ; 320x200x8bit
-
MOV AH,0x00
-
INT 0x10
-
MOV BYTE [VMODE],8 ; 画面的模式
-
MOV WORD [SCRNX],320
-
MOV WORD [SCRNY],200
-
MOV DWORD [VRAM],0x000a0000
-
; 键盘led状态
-
MOV AH,0x02
-
INT 0x16 ; keyboard BIOS
-
MOV [LEDS],AL
-
fin:
-
HLT
-
JMP fin
好吧在编译一下然后看结果。
阅读(1626) | 评论(0) | 转发(0) |