【os-tutorial】九,32-bit模式的打印字符串函数

32-bit模式的打印字符串函数

VGA显示

示大小: 25(行) × 80(列)
数据范围:0xB8000 ~ 0xB8000+25×80×2
显示格式:在数据范围内,每2个字节对应显示一个字符,其中偶数地址的字节代表字符(ASCII码值),奇数地址的字节代表字符属性,具体属性有字符颜色(低4bit),字符背景颜色(高4bit)

hexbincolor
00000black
10001blue
20010green
30011cyan
40100red
50101magenta
60110brown
70111light gray
81000dark gray
91001light blue
a1010light green
b1011light cyan
c1100light red
d1101light magenta
e1110yellow
f1111white

源码

本节的源码无法测试,因为我们目前还没有学习创建32-bit保护模式中的GDT,所以这里只给出源码,说明如何在32-bit保护模式下进行打印字符串任务.

; ==============================================================
;           |||      print_string_pm函数说明    |||
; --------------------------------------------------------------
; input: ebx-需要打印的字符串的首地址
; return: 不返回值
; 功能: 打印字符串
; ==============================================================   

[bits 32] ; 使用32bit 保护模式

; 定义有意义的常量
VIDEO_MEMORY equ 0xB8000
WHITE_ON_BLACK equ 0x0F ; 每个字符的颜色,此为白底黑字

print_string_pm:
    pusha
    mov edx, VIDEO_MEMORY

print_string_pm_loop:
    mov al, [ebx] ; [ebx]是我们的字符的地址
    mov ah, WHITE_ON_BLACK

    cmp al, 0 ; 查看是否是字符串末尾
    je print_string_pm_done

    mov [edx], ax ; 将字符+颜色属性写入到视频存储区域
    add ebx, 1 ; 下一个字符
    add edx, 2 ; 下一个存储位置

    jmp print_string_pm_loop

print_string_pm_done:
    popa
    ret
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ug871-vivado-high-level-synthesis-tutorial.pdf是有关Vivado高级综合教程的文档。该文档提供了使用Vivado高级综合工具的指南和教程,以帮助开发人员更高效地进行数字设计。 Vivado是赛灵思公司开发的综合工具套件,用于设计和实现数字电路。高级综合是一种将高级语言(如C或C++)转换为硬件描述语言(如VHDL或Verilog)的技术。它使开发人员能够使用更高级的语言进行设计,并将其转换为硬件电路,从而加快设计过程的速度。 在ug871-vivado-high-level-synthesis-tutorial.pdf中,开发人员将学习如何使用Vivado高级综合工具来创建和转换高级语言设计。文档以简单易懂的方式介绍了Vivado高级综合工具的基本概念和操作步骤。 该教程包含以下主要内容: 1. 介绍了高级综合的基本原理和优势,以及该技术可以加快设计速度的原因。 2. 解释了Vivado高级综合工具的功能和特点,以及如何进行安装和配置。 3. 提供了使用Vivado高级综合工具进行设计的具体步骤和操作指南。其中包括创建高级语言设计文件、设定综合目标和选项、运行综合和优化过程等。 4. 展示了如何生成和验证转换后的硬件电路,并进行仿真和测试。 5. 提供了一些示例案例,帮助开发人员更好地理解和应用Vivado高级综合工具。 通过学习和应用ug871-vivado-high-level-synthesis-tutorial.pdf中的内容,开发人员可以更有效地利用Vivado高级综合工具进行数字设计。这将使他们在开发过程中节省时间和精力,并且能够更快地实现设计目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值