编写完整汇编程序,要求:对键盘输入的字母大小写互换并屏幕显示。

使用21H中断10号功能字符串输入,09号功能字符串显示,并加以注释

.model small
.stack 100h
.data
buf label byte
max_len db 255
str_len db 0
str_buf db 256 dup(0)

.code
main proc
mov ax, @data ;初始化数据段
mov ds, ax
mov es, ax

mov ah, 0ah ;键盘输入
lea dx, buf ;缓冲区 DS:DX=buf
int 21h

mov ah, 02h ;回车换行
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h

lea si, str_buf ;获取输入字符串地址
mov di, si
mov dx, si ;保存DX中,用于INT21 09号功能显示字符串

mov bl, byte ptr [str_len] ;获取输入字符串长度
xor bh, bh
mov byte ptr [bx][si], '$' ;在字符串末尾添加一个 '$',用于用于INT21 09号功能显示字符串终止符

mov cx, bx ;获取字符串长度,控制循环次数
cld
@@1:
lodsb
cmp al, 'A' ;<'A 不是大写字母
jb @@3
cmp al, 'Z' ;>'Z'不是大写字母
ja @@2

add al, 'a'-'A' ; ;大写变小写
jmp short @@3

@@2:
cmp al, 'a' ;<'a'不是小写字母
jb @@3
cmp al, 'z' ;>'z'不是小写字母
ja @@3
sub al, 'a'-'A' ; ;小写变大写
@@3:
stosb ;
loop @@1

mov ah, 09h ;显示字符串,DS:DX
int 21h

mov ax, 4c00h ;正常退出
int 21h

main endp
end main
温馨提示:答案为网友推荐,仅供参考
相似回答