汇编

编写程序:
将字符串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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值