[OS64位][015]源码阅读:代码清单3-23 ~ 3-24

2019-05-16  本文已影响0人  AkuRinbu

学习笔记

使用教材(配书源码以及使用方法)
《一个64位操作系统的设计与实现》
http://www.ituring.com.cn/book/2450
https://www.jianshu.com/p/28f9713a9171

源码文件

调试运行

运行结果
[anno@localhost Desktop]$ sudo cp loader.bin media
[anno@localhost Desktop]$ sync

[anno@localhost Desktop]$ sudo cp kernel.bin media
[anno@localhost Desktop]$ sync
0001033c: (                    ): mov ax, 0x4f02            ; b8024f
0001033f: (                    ): mov bx, 0x4180            ; bb8041
00010342: (                    ): int 0x10                  ; cd10
00010344: (                    ): cmp ax, 0x004f            ; 83f84f
00010347: (                    ): jnz .-38                  ; 75da
0x7c00  boot
0x7d34  boot 跳转到 loader
0x1000:0080 ( 即 0x10080 loder.bin) loader第一条指令

反汇编 u 0x10080:0x10280 查看512字节

[OS64位][011]源码阅读:代码使用与命令行操作 程序3-3 boot.asm loader.asm 以及 mount 使FAT文件系统生效
https://www.jianshu.com/p/6c7f9f12c2af

代码清单3-23 源码 line : 671 ~ 709 : 显示十六进制数字

显示十六进制数.png

代码清单3-24 源码 line : 332 ~ 478 : 显示视频图像芯片的查询信息,并且根据查询信息配置芯片的显示模式

显示视频图像芯片的查询信息,并且根据查询信息配置芯片的显示模式
;=======    get SVGA information
;=======    Get SVGA Mode Info
Label_SVGA_Mode_Info_Get
      ;=======  display SVGA mode information
      Label_SVGA_Mode_Info_FAIL
      Label_SET_SVGA_Mode_VESA_VBE_FAIL
Label_SVGA_Mode_Info_Finish
;=======    set the SVGA mode(VESA VBE)

参考资料

显存显示相关

[048][汇编语言]实验10 3、数值显示
https://www.jianshu.com/p/187d1fce3e45

;-------------------------------------------------------------------------------
;子程序:   bcd_to_ascii
;参数:        AL = BCD码
;返回:        AH 十位数的ASCII码 
;           AL 个位数的ASCII码
;-------------------------------------------------------------------------------
bcd_to_ascii:           ;新0x70中断中调用的子程序
                        ;将BCD码转换成ASCII
    mov ah,al
    and al,0x0f         
    add al,0x30         ;个位数的ASCII码
    
    shr ah,4
    and ah,0x0f
    add ah,0x30         ;十位数的ASCII码

ret

[014][x86汇编语言]采用更新周期结束中断,动态时钟(Bochs 调试: 在中断向量表IVT中,查看新的0x70号中断程序的入口地址)
https://www.jianshu.com/p/0667a55bafce

图像芯片信息相关

http://www.delorie.com/djgpp/doc/rbinter/ix/10/4F.html

104F00 INT 10 - VESA SuperVGA BIOS (VBE) - GET SuperVGA INFORMATION
104F01 INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
104F02 INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE

AX = 4F00h
ES:DI -> buffer for SuperVGA information
 (see 00077 http://www.delorie.com/djgpp/doc/rbinter/it/77/0.html)

Return:
AL = 4Fh if function supported
AH = status 
  00h successful ES:DI buffer filled
  01h failed

http://www.delorie.com/djgpp/doc/rbinter/id/78/2.html

 0Eh    DWORD   pointer to list of supported VESA and OEM video modes
        (list of words terminated with FFFFh)

http://www.delorie.com/djgpp/doc/rbinter/it/77/0.html

INT 10 
- VESA SuperVGA BIOS 
- GET SuperVGA MODE INFORMATION
AX = 4F01h
CX = SuperVGA video mode 
(see #04082 for bitfields)
ES:DI->256-byte buffer for mode information (see #00079)

Return: 
AL = 4Fh if function supported
AH = status
00h successful ES:DI buffer filled
01h failed

http://www.delorie.com/djgpp/doc/rbinter/id/79/2.html

上一篇下一篇

猜你喜欢

热点阅读