我想知道如何使用ASCII码使用循环和增量来显示这样的输出。
Aa Bb Cc ... Zz
这是我下面的工作代码,似乎有很多错误。它变成了一个无限循环。
请检查并帮助我。
感谢。
.model small
.stack 200h
.code
main proc
mov ah, 0
mov al, 12h ; Clear screen
int 10h
mov ah,3
mov bh,0 ; get cursor
int 10h
mov ah,2
mov bh,0 ;set cursor
mov dl,12
int 10h
mov cx, 5 ; counter
t1:
Mov dl, 65 ; A
mov ah, 2h
int 21h
add dl, 1
t2:
Mov dl, 97 ; a
mov ah, 2h
int 21h
add dl,1
loop t2
loop t1
mov ah, 4ch
mov al,00h
int 21h
endp
end main
答案 0 :(得分:2)
mov cx, 5 ; counter
Mov dl, 65 ; A
t1:
mov ah, 2h
int 21h
add dl, 32 ; 97 - 65 - convert to LC
mov ah, 2h
int 21h
sub dl,31 ;remove the 32 added, but increment
push dx ;save DX on stack
mov dl, 32 ;space character
mov ah, 2h
int 21h
pop DX ;return DX from stack
loop t1
[根据Michael的评论修改 - Add dl,1 became sub dl,31
]
(我已经省略了你的初始化和终止,这应该没问题)
您的问题是:
t1..t2 :使用DL
加载'A'
并输出;然后增加
t2..loop t2指令:使用DL
加载'a'
并输出;然后增加
- 执行此操作5(CX
)次内容。请注意,每次加载DL
时都会加载'a'
- 并且CX
将在每个循环中递减,因此当CX
成为 0时循环终止
loop t2 :接下来,循环回到t1并重复直到CX
成为 0。
因此,在loop t1
,CX
已经为0,因此递减并且程序循环回到t1,因此A
再次输出CX
变为0,65534循环。