最近忙这考试,英语六级很少写帖了,今天有兴趣就写了这个程序,希望大家给点评论,以便自己以后改进!!!
dseg segment
str1 db 'abcdefgklmn','$'
str2 db 'abcdhijk','$'
jiao db 20 dup (?)
bing db 30 dup (?)
cha db 20 dup (?)
dseg ends
sseg segment stack
sseg ends
cseg segment
assume cs:cseg,ds:dseg,ss:sseg
start:
mov ax,dseg
mov ds,ax
lea ax,str1
push ax
lea ax,str2
push ax
lea ax,jiao
push ax
call jiao_func
lea ax,str1
push ax
lea ax,str2
push ax
lea ax,bing
push ax
call bing_func
lea ax,jiao
push ax
lea ax,bing
push ax
lea ax,cha
push ax
call cha_func
lea dx,jiao
mov ah,9
int 21h
mov dl,':'
mov ah,2
int 21h
lea dx,bing
mov ah,9
int 21h
mov dl,':'
mov ah,2
int 21h
lea dx,cha
mov ah,9
int 21h
mov ah,4ch
int 21h
jiao_func proc
push bp
mov bp,sp
push ax
push bx
push cx
push dx
push si
push di
mov si,6[bp]
mov bx,4[bp]
mov di,8[bp]
next_loop:
mov al,'$'
cmp [si],al
je exit_jiao
mov al,[si]
push di
next_jiao:
cmp al,[di]
je element_jiao
mov ch,[di]
cmp ch,'$'
je element_null
inc di
jmp next_jiao
element_jiao:
mov cl,[si]
mov [bx],cl
pop di
inc bx
inc si
jmp next_loop
element_null:
pop di
inc si
jmp next_loop
exit_jiao:
mov al,'$'
mov [bx],al
pop di
pop si
pop dx
pop cx
pop bx
pop ax
pop bp
ret 6
jiao_func endp
bing_func proc
push bp
mov bp,sp
push ax
push bx
push cx
push dx
push si
push di
mov si,6[bp]
mov bx,4[bp]
mov di,8[bp]
next_loop:
mov al,'$'
cmp al,[si]
je add_bing
push di
next_check: mov al,[di]
cmp al,'$'
je no_over
cmp [si],al
je same_have
inc di
jmp next_check
same_have: pop di
inc si
jmp next_loop
no_over: pop di
mov cl,[si]
mov [bx],cl
inc bx
inc si
jmp next_loop
add_bing:
mov al,'$'
cmp al,[di]
je exit
mov al,[di]
mov [bx],al
inc di
inc bx
jmp add_bing
exit:
mov al,'$'
mov [bx],al
pop di
pop si
pop dx
pop cx
pop bx
pop ax
pop bp
ret 6
bing_func endp
cha_func proc
push bp
mov bp,sp
push ax
push bx
push cx
push dx
push si
push di
mov si,6[bp] ;bing
mov bx,4[bp]
mov di,8[bp] ;jiao
next_loop: mov al,'$'
cmp al,[si]
je exit_cha
push di
next_check: mov al,[di]
cmp al,'$'
je have_cha
cmp al,[si]
je no_incha
inc di
jmp next_check
have_cha:
pop di
mov al,[si]
mov [bx],al
inc si
inc bx
jmp next_loop
no_incha:
pop di
inc si
jmp next_loop
exit_cha:
mov al,'$'
mov [bx],al
pop di
pop si
pop dx
pop cx
pop bx
pop ax
pop bp
ret 6
cha_func endp
cseg ends
end start
评论