Loop 无法打印字母

Loop does not work to print alphabets

我正在使用 emu8086 汇编程序,我是汇编语言的新手。我想用黑色背景的黄色打印所有 A-Z 字母。我的循环不工作。它保持 运行 并且只显示 B 字母表。
有人可以帮帮我吗?这是我的代码:

include emu8086.inc
ORG 100h
MOV AX,0B800h
MOV DS,AX
MOV CX,26
ALPHABETS:
MOV CL,41h
ADD CX,1
MOV CH,00001110b
MOV BX,0x0000
MOV [BX],CX
loop ALPHABETS
RET

你的程序有两个问题:

  • 您将 CX 寄存器用于循环计数器和要显示的字符。
  • 您忘记更新 BX 寄存器中的地址,因此所有内容都显示在彼此之上。

使用CX作为循环计数器的第一个解决方案:

include emu8086.inc
ORG 100h
    MOV     AX, 0B800h
    MOV     DS, AX
    mov     al, "A"       ;First character
    mov     ah, 00001110b ;YellowOnBlack
    mov     bx, 0         ;Address in video RAM
    mov     cx, 26
ALPHABETS:
    mov     [bx], ax
    inc     al            ;Next character
    add     bx, 2         ;Next address
    loop    ALPHABETS
    RET

使用字符代码本身作为循环计数器的第二种解决方案:

include emu8086.inc
ORG 100h
    MOV     AX, 0B800h
    MOV     DS, AX
    mov     al, "A"       ;First character
    mov     ah, 00001110b ;YellowOnBlack
    mov     bx, 0         ;Address in video RAM
ALPHABETS:
    mov     [bx], ax
    inc     al            ;Next character
    add     bx, 2         ;Next address
    cmp     al, "Z"
    jbe     ALPHABETS
    RET