循环不能打印字母表

时间:2016-11-21 01:54:04

标签: assembly emu8086

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

var Select = exports.Select = function (_React$Component) {}

1 个答案:

答案 0 :(得分:2)

您的计划有两个问题:

  • 您可以将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