汇编 字符串大小写转换

来源:百度知道 编辑:UC知道 时间:2024/06/07 03:56:50
请 高手们帮我看看下面程序错在哪了
DATAS SEGMENT
buff db 100,?,100 dup(?);此处输入数据段代码
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
start:
MOV AX,DATAS
MOV DS,AX
mov dx,offset buff
mov ah,0ah
int 21h

mov cl,[buff+1]
mov si,2
xx: inc si
mov al,[buff+si]
cmp al,oah
jz exit
cmp al,'0'
jb exit
cmp al,'9'
jbe show
cmp al,'A'
jb exit
cmp al,'Z'
jbe zb1
cmp al,'a'
jb exit
cmp al,'z'
jbe zb2

exit:
mov ah,4ch
int 21h

show: mov ah,02h
mov dl,al
int 21h
jmp exit

zb1: add al,32
jmp show

zb2: sub al,32
jmp show

loop xx

CODES ENDS
EN

有两个错误:
1、xx: inc si
mov al,[buff+si]
cmp al,oah
jz exit
CMP AL,0AH,写成了oah
2、
show: mov ah,02h
mov dl,al
int 21h
jmp exit
不应该jmp exit,只输出一个字符。
另外,如果输出了字符,原来的字符会被覆盖,所以加了换行。
代码:
DATAS SEGMENT
buff db 100,?,100 dup(?);此处输入数据段代码
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
start:
MOV AX,DATAS
MOV DS,AX
mov dx,offset buff
mov ah,0ah
int 21h
mov ah,02h
mov dl,0ah
int 21h
mov dl,0dh
int 21h
mov cl,[buff+1]
mov si,1
xx: inc si
mov al,[buff+si]
cmp al,0ah
jz exit
cmp al,'0'
jb exit
cmp al,'9'
jbe show
cmp al,'A'
jb exit
cmp al,'Z'
jbe zb1
cmp al,'a'
jb exit
cmp al,'z'
jb