鱼C论坛

 找回密码
 立即注册
查看: 2086|回复: 1

[已解决]输入一组字符串在把它们的数字和字母分开放到别的数组

[复制链接]
发表于 2018-11-22 11:30:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:code,ds:data
data segment
  str0 db 20
       db  ?
       db 20 dup(?)
  show db 0ah,0dh,"$";;回车换行
    data ends
   
smg segment
letter DB  20 DUP ('$');;用来放字母
  num  DB  20 DUP ('$');;放数字
  smg ends
code segment
   start:mov ax,data
         mov ds,ax
         lea dx,str0
         mov ah,0ah
         int 21h
         lea dx,show;;输入和输出第一次的字符串
         mov ah,09h
         int 21h
         mov cl,str0+1
         mov ch,0
         lea si,str0+2
         
        mov ax,smg
        mov ds,ax
        lea di,num
        lea bp,letter         
    nex: mov dl,[si]
         
       n:CMP DL,'0';;识别数字和放入
         jb le0
         cmp dl,'9'
         ja le0
         mov dl,[si]
         mov [di],dl
         inc di
         inc si
         
   
     le0:
         cmp dl,'z'
         ja s
     le1:cmp dl,'a';;识别字母和放入
          jb s   
         mov al,[si]
         mov [bp],al
         inc si
         inc bp
            
        s: dec cl
           JNZ nex  
         
      
    sow:lea dx, letter ;;输出变成乱码 高手帮帮我!!!
        mov ah,09h
        int 21
      
    so: lea dx, num
        mov ah,09h
        int 21h
      
        
mov ax,4c00h
int 21h
code ends
end start
最佳答案
2018-11-24 21:57:53
本帖最后由 superbe 于 2018-11-24 22:02 编辑

改完后的代码:
;输入一组字符串在把它们的数字和字母分开放到别的数组
assume cs:code,ds:data
data segment
  str0 db 20
       db  ?
       db 20 dup(?)
  show db 0ah,0dh,"$"        ;回车换行
data ends
    
smg segment 
letter DB  20 DUP (')        ;用来放字母
  num  DB  20 DUP (')        ;放数字
smg ends

code segment
   start:mov ax,data
         mov ds,ax
         lea dx,str0
         mov ah,0ah
         int 21h
         lea dx,show        ;输入和输出第一次的字符串
         mov ah,09h
         int 21h
         mov cl,str0+1
         mov ch,0
         lea si,str0+2
         
         mov ax,smg
         mov es,ax                ;把smg段地址给es
         lea di,num
         lea bp,letter          
    nex: mov dl,[si]
         
       n:CMP DL,'0'        ;识别数字和放入
         jb le0
         cmp dl,'9'
         ja le0
         mov es:[di],dl
         inc di
         jmp short s
                 
     le0:
         cmp dl,'z'
         ja s
     le1:cmp dl,'a'        ;识别字母和放入
         jb s    
         mov es:[bp],dl
         inc bp
            
      s: inc si
         dec cl
         JNZ nex  
       
    sow: mov ax,smg
         mov ds,ax                ;把smg段地址给ds
         lea dx, letter        ;输出字母
         mov ah,09h
         int 21h
       
    so: lea dx, num        ;输出数字
         mov ah,09h
         int 21h
        
         mov ax,4c00h
         int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-24 21:57:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 superbe 于 2018-11-24 22:02 编辑

改完后的代码:
;输入一组字符串在把它们的数字和字母分开放到别的数组
assume cs:code,ds:data
data segment
  str0 db 20
       db  ?
       db 20 dup(?)
  show db 0ah,0dh,"$"        ;回车换行
data ends
    
smg segment 
letter DB  20 DUP (')        ;用来放字母
  num  DB  20 DUP (')        ;放数字
smg ends

code segment
   start:mov ax,data
         mov ds,ax
         lea dx,str0
         mov ah,0ah
         int 21h
         lea dx,show        ;输入和输出第一次的字符串
         mov ah,09h
         int 21h
         mov cl,str0+1
         mov ch,0
         lea si,str0+2
         
         mov ax,smg
         mov es,ax                ;把smg段地址给es
         lea di,num
         lea bp,letter          
    nex: mov dl,[si]
         
       n:CMP DL,'0'        ;识别数字和放入
         jb le0
         cmp dl,'9'
         ja le0
         mov es:[di],dl
         inc di
         jmp short s
                 
     le0:
         cmp dl,'z'
         ja s
     le1:cmp dl,'a'        ;识别字母和放入
         jb s    
         mov es:[bp],dl
         inc bp
            
      s: inc si
         dec cl
         JNZ nex  
       
    sow: mov ax,smg
         mov ds,ax                ;把smg段地址给ds
         lea dx, letter        ;输出字母
         mov ah,09h
         int 21h
       
    so: lea dx, num        ;输出数字
         mov ah,09h
         int 21h
        
         mov ax,4c00h
         int 21h
code ends
end start
运行结果.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 09:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表