使用循环显示从 a 到 z 的字母(水平交替大写和小写)的 TASM 程序
TASM program that display letters from a to z (alternate uppercase and lowercase horizontally) using looping
程序必须使用循环显示从 a
到 z
的字母(水平交替大小写)。
样本输出:
AaBb . . . . . . . . . . . . YyZz
这是我目前使用的代码,但它只输出大写字母。请帮助我如何组合这些小写字母:(
谢谢:)
.model small
.code
.stack 100
org 100h
start :
mov ah, 02h
mov cl, 41h
skip :
mov dl, cl
Int 21h
inc cl
cmp cl, 5Ah
jnz skip
Int 27h
end start
您必须添加 20(十六进制)才能显示小写字母。
像这样:
start :
mov ah, 02h
mov cl, 41h
skip :
mov dl, cl
Int 21h
add dl, 20h
Int 21h
inc cl
cmp cl, 5Ah
jnz skip
Int 27h
end start
更新
另一种方法:
start :
mov ah, 02h
mov cl, 41h
skip :
mov dl, cl
Int 21h
xor dl, 20h
Int 21h
inc cl
cmp cl, 5Ah
jnz skip
Int 27h
end start
如果要穿插,ASCII字符集大小写字母之间有20h
的偏移量:
从 table 可以看出,从 A
移动到 a
需要添加 20h
(从 41h
移动到 61h
) 这对所有其他字母也是一样的。
因此,您必须首先:
而不是简单地在循环末尾添加一个
- 添加
20h
.
- 打印那个字符。
- 减去
1fh
(即减去 20h
然后加一)。
换句话说,改变:
mov dl, cl
int 21h
inc cl
变成类似这样的东西:
mov dl, cl ; load dl with character and print.
int 21h
add cl, 20h ; move to lowercase variant and print.
mov dl, cl
int 21h
sub cl, 1fh ; move back to next uppercase variant.
如果您知道中断不会破坏您正在使用的 dl
寄存器,则可以缩短代码(出色的 Ralf Brown interrupt list 似乎表明确实如此,说明只有 al
改变了):
mov dl, cl ; load dl with character and print.
int 21h
add dl, 20h ; move dl to lowercase variant and print.
int 21h
inc cl ; move cl to next uppercase variant.
程序必须使用循环显示从 a
到 z
的字母(水平交替大小写)。
样本输出:
AaBb . . . . . . . . . . . . YyZz
这是我目前使用的代码,但它只输出大写字母。请帮助我如何组合这些小写字母:(
谢谢:)
.model small
.code
.stack 100
org 100h
start :
mov ah, 02h
mov cl, 41h
skip :
mov dl, cl
Int 21h
inc cl
cmp cl, 5Ah
jnz skip
Int 27h
end start
您必须添加 20(十六进制)才能显示小写字母。 像这样:
start :
mov ah, 02h
mov cl, 41h
skip :
mov dl, cl
Int 21h
add dl, 20h
Int 21h
inc cl
cmp cl, 5Ah
jnz skip
Int 27h
end start
更新
另一种方法:
start :
mov ah, 02h
mov cl, 41h
skip :
mov dl, cl
Int 21h
xor dl, 20h
Int 21h
inc cl
cmp cl, 5Ah
jnz skip
Int 27h
end start
如果要穿插,ASCII字符集大小写字母之间有20h
的偏移量:
从 table 可以看出,从 A
移动到 a
需要添加 20h
(从 41h
移动到 61h
) 这对所有其他字母也是一样的。
因此,您必须首先:
而不是简单地在循环末尾添加一个- 添加
20h
. - 打印那个字符。
- 减去
1fh
(即减去20h
然后加一)。
换句话说,改变:
mov dl, cl
int 21h
inc cl
变成类似这样的东西:
mov dl, cl ; load dl with character and print.
int 21h
add cl, 20h ; move to lowercase variant and print.
mov dl, cl
int 21h
sub cl, 1fh ; move back to next uppercase variant.
如果您知道中断不会破坏您正在使用的 dl
寄存器,则可以缩短代码(出色的 Ralf Brown interrupt list 似乎表明确实如此,说明只有 al
改变了):
mov dl, cl ; load dl with character and print.
int 21h
add dl, 20h ; move dl to lowercase variant and print.
int 21h
inc cl ; move cl to next uppercase variant.