| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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
 本帖最后由 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
 
  复制代码 
 
 
 |   
 
 
 
 |