INT 10H功能06H移动光标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了INT 10H功能06H移动光标相关的知识,希望对你有一定的参考价值。

我在(emu8086)上运行以下汇编代码:

clearScr macro
         mov ah, 06h
         mov al, 00h
         mov bh, 71h
         mov cx, 0000h
         mov dx, 184fh
         int 10h
clearScr endm

print macro string
    mov ah, 09h    
    lea dx, string
    int 21h        
print endm

.model small
.stack 100h

.data
    msg    db 'Hello, world!', '$'  
    nl     db 0AH, 0DH, '$' 
    myname db 'Ahmed', '$'

.code                   
    main    proc
        mov ax, @data
        mov ds, ax

        print myname
        clearScr
        print msg

        mov ax, 4c00h
        int 21h
    main    endp

[clearScr宏似乎正在移动光标,因为屏幕上打印的最终文本不是从角落开始。figure 0

为什么会这样?我不是要设置/移动光标。

答案
[clearScr宏似乎正在移动光标

完全相反:

[clearScr

not移动光标,但希望移动它。

发生以下情况:

    print myname将移动光标;光标将不再位于左上角,而是位于名称的末尾。
  • 如果我理解正确,clearScr将清除屏幕,但是
  • not
更改光标位置;这意味着光标将remain定位在其after print myname的位置[print msg也不会在打印消息之前更改光标位置,因此消息将被打印到print myname之后光标所在的位置>
  • 如果要清除屏幕

    和要将光标移到角落,则必须执行两个步骤:

    • 清除屏幕(这将
    • not将光标移到角落)
    将光标移到角落(例如,使用int 10h功能AH=2
  • 我看到您打印了Ahmed,但是您没有做cr / lf后记。

    如果我理解正确,则打印CR / LF会导致在清除屏幕后在第二行中打印文本。

    仅打印CR会将光标移动到左上角

    if

    光标已经在第一行了。
  • 以上是关于INT 10H功能06H移动光标的主要内容,如果未能解决你的问题,请参考以下文章

    嵌入式Modbus TCP功能码

    如何使用 x86 BIOS 调用移动光标?

    汇编 int10h(转)

    int 21h 啥意思?

    将辅助功能画外音光标焦点移动到特定元素

    代码片段如何使用CSS来快速定义多彩光标