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
我正在使用 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