汇编操作系统-如何在第二行写文字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (40)

我第一行有短信。我想在第二行写一篇文章。但怎么做?

下面是我的示例代码:

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           

现在,我怎么写第二行的文字?

提问于
用户回答回答于

印在下一行,插入回车和行馈码:

    text_string db 'This is my Operating System!', 13, 10
                db '----------------------------', 0

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

代码10(Linefeed)使光标下降一行。

但是,如果你想在整个屏幕的第2行,你可以使用BIOS函数02h在那里设置光标:

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。


MOV啊,09H mov cx,1000 h mov al,20h mov bl,17h int 10h

关于你的清晰屏幕代码:

  • 类中忘记指定显示页。BH登记。使用mov bh, 0
  • 伯爵CX注册范围太大了。1000小时等于4096,其中整个屏幕只有2000字符单元格(80)。*25)

我建议你写:

mov cx, 2000
mov bx, 0017h
mov ax, 0920h
int 10h

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券