正文

汇编写的(交集,并集,差集)2006-12-11 15:43:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hammers/21481.html

分享到:

最近忙这考试,英语六级很少写帖了,今天有兴趣就写了这个程序,希望大家给点评论,以便自己以后改进!!!

 

 

 

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

阅读(2543) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册