求汇编程序:字母大小写转换

从键盘输入一个字符串(不超过100个),将其中的小写字母转换成大写字母,然后按原来的顺序显示出来。编译器:masm for windows集成开发环境

第1个回答  2014-01-04
data segment
crlf db 13,10 ;回车换行
buf db 100 dup(?),'$' ;存放输入并转换后的字符串
data endscode segment
main proc near assume cs:code, ds:data
start:
mov ax, data
mov ds, ax ;将数据段的段地址放入DS中

lea si,buf ;取buf的首地址,并存入si
mov cl,100 ;循环用的,即只能输入最多100个字符
@1:
mov ah,01h ;调用DOS键盘中断
int 21h
cmp al,13 ;与13(回车)比较,相等则退出循环
jz @3
cmp al,'a' ;输入的字符比a小,则不转换,直接放入buf
jb @2
cmp al,'z' ;输入的字符比z大,则不转换,直接放入buf
ja @2
sub al,20h ;字符中a-z之前,则减掉20h将其转为大字字母
@2:
mov [si],al ;将al的内容放入si指向的地址的内容内
inc si ;地址往后偏移一个字节
loop @1
@3:
lea dx,crlf ;之所以要从clrf开始,是想先输入回车换行
mov ah,09h
int 21h

mov ah, 4ch
int 21h

main endp
code ends
end start本回答被网友采纳
相似回答