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