鱼C论坛

 找回密码
 立即注册
查看: 2574|回复: 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 编辑

改完后的代码:

  1. ;输入一组字符串在把它们的数字和字母分开放到别的数组
  2. assume cs:code,ds:data
  3. data segment
  4.   str0 db 20
  5.        db  ?
  6.        db 20 dup(?)
  7.   show db 0ah,0dh,"$"        ;回车换行
  8. data ends
  9.    
  10. smg segment
  11. letter DB  20 DUP (')        ;用来放字母
  12.   num  DB  20 DUP (')        ;放数字
  13. smg ends

  14. code segment
  15.    start:mov ax,data
  16.          mov ds,ax
  17.          lea dx,str0
  18.          mov ah,0ah
  19.          int 21h
  20.          lea dx,show        ;输入和输出第一次的字符串
  21.          mov ah,09h
  22.          int 21h
  23.          mov cl,str0+1
  24.          mov ch,0
  25.          lea si,str0+2
  26.          
  27.          mov ax,smg
  28.          mov es,ax                ;把smg段地址给es
  29.          lea di,num
  30.          lea bp,letter         
  31.     nex: mov dl,[si]
  32.          
  33.        n:CMP DL,'0'        ;识别数字和放入
  34.          jb le0
  35.          cmp dl,'9'
  36.          ja le0
  37.          mov es:[di],dl
  38.          inc di
  39.          jmp short s
  40.                  
  41.      le0:
  42.          cmp dl,'z'
  43.          ja s
  44.      le1:cmp dl,'a'        ;识别字母和放入
  45.          jb s   
  46.          mov es:[bp],dl
  47.          inc bp
  48.             
  49.       s: inc si
  50.          dec cl
  51.          JNZ nex  
  52.       
  53.     sow: mov ax,smg
  54.          mov ds,ax                ;把smg段地址给ds
  55.          lea dx, letter        ;输出字母
  56.          mov ah,09h
  57.          int 21h
  58.       
  59.     so: lea dx, num        ;输出数字
  60.          mov ah,09h
  61.          int 21h
  62.         
  63.          mov ax,4c00h
  64.          int 21h
  65. code ends
  66. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

改完后的代码:

  1. ;输入一组字符串在把它们的数字和字母分开放到别的数组
  2. assume cs:code,ds:data
  3. data segment
  4.   str0 db 20
  5.        db  ?
  6.        db 20 dup(?)
  7.   show db 0ah,0dh,"$"        ;回车换行
  8. data ends
  9.    
  10. smg segment
  11. letter DB  20 DUP (')        ;用来放字母
  12.   num  DB  20 DUP (')        ;放数字
  13. smg ends

  14. code segment
  15.    start:mov ax,data
  16.          mov ds,ax
  17.          lea dx,str0
  18.          mov ah,0ah
  19.          int 21h
  20.          lea dx,show        ;输入和输出第一次的字符串
  21.          mov ah,09h
  22.          int 21h
  23.          mov cl,str0+1
  24.          mov ch,0
  25.          lea si,str0+2
  26.          
  27.          mov ax,smg
  28.          mov es,ax                ;把smg段地址给es
  29.          lea di,num
  30.          lea bp,letter         
  31.     nex: mov dl,[si]
  32.          
  33.        n:CMP DL,'0'        ;识别数字和放入
  34.          jb le0
  35.          cmp dl,'9'
  36.          ja le0
  37.          mov es:[di],dl
  38.          inc di
  39.          jmp short s
  40.                  
  41.      le0:
  42.          cmp dl,'z'
  43.          ja s
  44.      le1:cmp dl,'a'        ;识别字母和放入
  45.          jb s   
  46.          mov es:[bp],dl
  47.          inc bp
  48.             
  49.       s: inc si
  50.          dec cl
  51.          JNZ nex  
  52.       
  53.     sow: mov ax,smg
  54.          mov ds,ax                ;把smg段地址给ds
  55.          lea dx, letter        ;输出字母
  56.          mov ah,09h
  57.          int 21h
  58.       
  59.     so: lea dx, num        ;输出数字
  60.          mov ah,09h
  61.          int 21h
  62.         
  63.          mov ax,4c00h
  64.          int 21h
  65. code ends
  66. end start
复制代码
运行结果.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 05:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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