编写程序:
将字符串STR1中的大写字母变成小写字母,小写字母变成大写字母,并且将0-9的数字字符全部删除然后存放在STR2中
数据段定义如下:
__DATAS SEGMENTSTR1 db ‘abc $ AB 2 ? k6=+8jS88w9’
LEN EQU $-STR1
STR2 db LEN dup (?)
DATAS ENDS
程序执行后STR2中应该存放”ABC $ ab ? K=+JsW”__
;编写程序将字符串STR1中的大写字母变成小写字母,小写字母变成大写字母,
;并且将0-9的数字字符全部删除然后存放在STR2中
DATAS SEGMENT
STR1 db 'abc $ AB 2 ? k6=+8jS88w9','$'
LEN EQU $-STR1;把len定义为当前地址到str1的长度值
STR2 db LEN dup (?)
;crcl db 13,10,'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:
MOV AX,DATAS
MOV DS,AX
;mov dx,offset str1
;mov ah,9
;int 21h
;mov dx,offset crcl;换行
;mov ah,9
;int 21h
mov cx,len-1
mov bx,offset str1
xor si,si
next:
mov dl,[bx]
cmp dl,30h
jl no0_9;<0
cmp dl,39h
ja no0_9;>9
jmp zz;是数字
no0_9:
cmp dl,'a'
jnl tt;>=a
cmp dl,'A'
jnl ttt;>=A
mov str2[si],dl
inc si
mov ah,2;输出
int 21h
jmp zz
tt:
cmp dl,'z'
jng big;<=z
ttt:
cmp dl,'Z'
jng small;>=Z
small:
add dl,20h
mov str2[si],dl
inc si
mov ah,2;输出
int 21h
jmp zz
big:;变小写
sub dl,20h
mov str2[si],dl
inc si
mov ah,2;输出
int 21h
zz:
inc bx
loop next
MOV AH,4CH
INT 21H
CODES ENDSEND START