首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >汇编OS -如何在第二行上写入文本?

汇编OS -如何在第二行上写入文本?
EN

Stack Overflow用户
提问于 2018-07-23 00:58:45
回答 1查看 69关注 0票数 -1

我在第一行有文本。我想在第二行写一篇文章。但是怎么做呢?

这里是我的示例代码:

代码语言:javascript
复制
start:
        mov ax, 07C0h
        add ax, 288
        mov ss, ax
        mov sp, 4096
        mov ax, 07C0h
        mov ds, ax

        mov ah, 09h
        mov cx, 1000h
        mov al, 20h
        mov bl, 17h
        int 10h
        mov si, text_string
        call print_string
        jmp $

        text_string db 'This is my Operating System!', 0
print_string:
        mov ah, 0Eh
.repeat:
        lodsb
        cmp al, 0
        je .done
        int 10h
        jmp .repeat
.done:
        ret
        times 510-($-$$) db 0
        dw 0xAA55           

现在,我该如何在第二行写文本呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-23 02:10:58

要在上打印下一行,请插入回车符和换行码:

代码语言:javascript
复制
    text_string db 'This is my Operating System!', 13, 10
                db '----------------------------', 0

代码13 (回车符)将光标带回屏幕的左边缘。

代码10 (换行符)使光标向下一行。

但是,如果您想要在上打印全屏的第二行,您可以使用BIOS02h功能将光标设置在那里:

代码语言:javascript
复制
mov dx, 0100h  ; DH=row 1, DL=column 0
mov bh, 0      ; display page
mov ah, 02h    ; SetCursor
int 10h

在标准的80x25屏幕上,列的编号从0到79,行的编号从0到24。

移动,09小时移动cx,1000小时移动,20小时移动,17小时集成10小时

关于你的清晰屏幕代码:

  • 您忘记在BH寄存器中指定显示页。在CX寄存器中使用mov bh, 0
  • The计数太大了。1000h等于4096,整个屏幕只有2000个字符单元(80*25)。

我建议你这样写:

代码语言:javascript
复制
mov cx, 2000
mov bx, 0017h
mov ax, 0920h
int 10h
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51467378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档