美文网首页
VGA文本模式DspStr

VGA文本模式DspStr

作者: 月下蓑衣江湖夜雨 | 来源:发表于2020-11-09 23:28 被阅读0次

基本用法

    mov  edi, (80*2 + 0) * 2   ;屏幕第10行,第0列
    mov  ah,  0Ch               ;0000:黑底  1100:红字
    mov  al,  'z'
    mov  [gs:edi], ax

DspStr

DspStr:
    push    ebp
    mov ebp, esp

    mov esi, [ebp + 8]  ; pszInfo
    mov edi, [disp_pos]
    mov ah, 0Fh
.1:
    lodsb
    test    al, al
    jz  .2
    cmp al, 0Ah ; 是回车吗?
    jnz .3
    push    eax
    mov eax, edi
    mov bl, 160
    div bl
    and eax, 0FFh
    inc eax
    mov bl, 160
    mul bl
    mov edi, eax
    pop eax
    jmp .1
.3:
    mov [gs:edi], ax
    add edi, 2
    jmp .1

.2:
    mov [disp_pos], edi

    pop ebp
    ret

lodsb将字符串中的字符取到al中;
test al, al
字符串结束符'\0'的ascii值是0,此时test控制为0,jz成立;

DspStrFixPos

DspStrFixPos:
    push    ebp
    mov ebp, esp
    
    mov ebx, [ebp + 8]  ; pszLine
    mov [disp_pos_2], ebx

    mov esi, [ebp + 12] ; pszInfo
    mov edi, ebx;[disp_pos_2]
    mov ah, 0Fh
.1:
    lodsb
    test    al, al
    jz  .2
    cmp al, 0Ah ; 是回车吗?
    jnz .3
    push    eax
    mov eax, edi
    mov bl, 160
    div bl
    and eax, 0FFh
    inc eax
    mov bl, 160
    mul bl
    mov edi, eax
    pop eax
    jmp .1
.3:
    mov [gs:edi], ax
    add edi, 2
    jmp .1

.2:
    ;mov    [disp_pos_2], edi

    pop ebp
    ret 

调用:

PUBLIC void cstart(){
    //DspStrFixPos((80*20+0)*2, str0);
    DspStrFixPos((80*24+0)*2, str1);
    
    //sprintf(buf, "hello os printk year is %d, month is %d, day is %d\n", 2020, 11, 8);
    //DspStrFixPos(12, buf);
    //sprintf(buf, "hello os sprintf, time is %d:%d\n", 14, 38);
    //DspStrFixPos(13, buf);
}

效果:


效果

因此,VGA文本模式下,25行(0、1、2、...、24),每行80个字符。

相关文章

  • VGA文本模式DspStr

    基本用法 DspStr lodsb将字符串中的字符取到al中;test al, al字符串结束符'\0'的asci...

  • VESA 编程介绍(一)标准VGA BIOS及超级VGA模式号

    VESA编程介绍 (1)标准VGA BIOS及超级VGA模式号 -------------------------...

  • 我的vim笔记_20170227

    vim 20160607 vim的几种模式 普通模式 插入模式 选择模式 可视模式面向字符文本面向行文本面向块文本...

  • Vga显示驱动

    VGA系列之一:VGA显示器驱动篇

  • vim编辑器常用命令

    vim编辑器有两种模式:输入文本模式,输入命令模式。 常用命令: 插入文本模式: 退出插入文本模式: 命令行模式:...

  • VGA切换器使用方法和常见问题说明

    VGA切换器是指将多个VGA信号的输入设备切换显示在一个VGA输出设备的工具,比如可以通过VGA切换器,让一个显示...

  • 树莓派3B+ Raspbian桌面分辨率设置

    原文链接 一次安装了Raspbian后启动系统会模式使用显示器“兼容模式”,这是一个VGA @ 60Hz的设置保证...

  • centos 7 安装NVIDIA显卡驱动

    1 查看显卡信息 $ lspci | grep VGA 输出 01:00.0 VGA compatible con...

  • 【VGA】

    基于FPGA的VGA驱动显示 一、原理: 一个完整行的扫描周期由a、b、c、d四个部分组成,a(行同步)代表进行行...

  • vim编辑器

    三种主要模式 命令模式(command):默认模式,移动贯标,剪切/粘贴文本编辑模式(insert):修改文本扩展...

网友评论

      本文标题:VGA文本模式DspStr

      本文链接:https://www.haomeiwen.com/subject/kafdbktx.html