Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369070
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1767
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-24 16:18
个人简介

为啥不能追求自己的爱好一辈子呢

文章分类

全部博文(80)

文章存档

2017年(1)

2015年(2)

2014年(18)

2013年(59)

分类: C/C++

2013-01-29 15:18:37

      CPU其实有16位模式和32位模式之分,以16位模式的话ax和cx就会很好用啦,如果以32位模式的话eax就会很好用的。32位的模式下可以使用的村内远大于1M,cpu的自我保护能力很强大,16就不行。

    但是用32位模式的话我们就不能调用bios中断喽,因为bios是用16位编写的,所以我们得在前面吧所有的需要bios的内容先写好(虽然有一些虚拟8086可以模拟bios,但是貌似还挺复杂,我还不会额)

    随意haribote.asm就变陈下边这样了

  

点击(此处)折叠或打开

  1. ; haribote-os
  2. ; TAB=4
  3. ; BOOT_INFO
  4. CYLS EQU 0x0ff0 ; 柱面的个数保存的地址
  5. LEDS EQU 0x0ff1
  6. VMODE EQU 0x0ff2 ; vga的数据
  7. SCRNX EQU 0x0ff4 ; x
  8. SCRNY EQU 0x0ff6 ; y
  9. VRAM EQU 0x0ff8 ; 内存中图像数据的开始地址
  10.   ORG 0xc200 ; 地址
  11.   MOV AL,0x13 ; 320x200x8bit
  12.   MOV AH,0x00
  13.   INT 0x10
  14.   MOV BYTE [VMODE],8 ; 画面的模式
  15.   MOV WORD [SCRNX],320
  16.   MOV WORD [SCRNY],200
  17.   MOV DWORD [VRAM],0x000a0000
  18. ; 键盘led状态
  19.   MOV AH,0x02
  20.   INT 0x16 ; keyboard BIOS
  21.   MOV [LEDS],AL
  22. fin:
  23.   HLT
  24.   JMP fin


好吧在编译一下然后看结果。
阅读(1553) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~