• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            newplan

            阿基米德在洗澡時發(fā)現(xiàn)浮力原理,高興得來不及穿上褲子,跑到街上大喊:Eureka(我找到了)。
            posts - 39, comments - 26, trackbacks - 0, articles - 4
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            ;**********************電話號碼表實現(xiàn)*******************************

             ;在本次試驗中需要注意基址寄存器BX的移動方法,對以字為單位的數(shù)組,BX的移動方式
             ;是每移動一次加2或者減2
             ;另外函數(shù)調(diào)用的過程中需要小心PUSH和pop的調(diào)用是否安全,例如在name_sort中pop CX的
             ;時候沒有先Push CX,導(dǎo)致了name_sort函數(shù)不可以調(diào)用
             ;此程序使用比較高效的方法只是對號碼單的首地址進(jìn)行排序,為此開辟了一個地址數(shù)組
             ;AdTable,類似C語言中的指針數(shù)組
             ;在每個名字的前面存有每個名字的長度,有利于對名字進(jìn)行比較,體現(xiàn)了空間換時間
             ;程序調(diào)試難度較大,費時2天長度,長度349行
             ;12月7日于海韻
            ;
            ==================================================================
            DateArea    segment
                 TemplateName        db 
            20,?,20 dup(?)
                 
                 TemplateNumber      db 
            9,?,9 dup(?)
                
                 PhoneTable          db 
            50 dup ( 21 dup (?), 8 dup (?,'$')

                 AdTable             dw 
            50 dup (?)   

                 FindedAdress        dw 
            1 dup (?)
                
                 InputNamePrint      db 
            13,10,'Input name:','$'
                
                 InputNumPrint       db 
            13,10,'Input a telephone number:','$'
                
                 AskForNumPrint      db 
            13,10,'Do you want a telepment numbre:(Y/N)','$'
               
                 NamePrint           db 
            13,10,'name?','$'
                 
                 AnswerFindedPrint   db  
            13,10,'name',16 dup (20h),'tel.',13,10,'$'    

                 AnswerNoFindPrint   db  
            13,10,'NO SUCH NAME!','$'        
            DateArea ends
            ;
            =====================================================================
            CodeArea  segment
                  assume cs
            :CodeArea ,ds:DateArea ,es:DateArea
            ;
            -----------------------------
            main proc far


                  
            push ds
                  
            sub ax,ax
                  
            push ax
                  mov ax
            ,DateArea
                  mov ds
            ,ax
                  mov es
            ,ax
                  ;
                  mov bx
            ,0
                  lea si
            ,PhoneTable
                  
            Start
            :
                   
                  lea dx 
            , InputNamePrint
                  mov ah
            ,09h
                  
            int 21h
                  ;
                   lea  di
            ,AdTable
                   mov  AdTable[bx]
            ,si
                   call input_name;該函數(shù)還要返回輸入字母為終止時候的提示
            ,
                  ;可以返回一個寄存器的狀態(tài)來表示
                   jz Search
                   call stor_name
                  ;
                   lea dx
            , InputNumPrint
                   mov ah 
            ,09h
                   
            int 21h
                  ;
                   call inphone
                  ;
                   add si
            ,30
                   add bx 
            ,2
                   jmp Start


            Search
            :
                   ;lea dx
            , AskForNumPrint
                   ;mov ah
            ,09h
                   ;
            int  21h
                   call name_sort 
                   lea dx
            , AskForNumPrint
                   mov ah
            ,09h
                   
            int  21h
                   ;
                   mov ah
            ,1
                   
            int 21h
                   
            sub al,4Eh
                   ;
                   jz  
            Exit
                   ;
                   lea  dx
            ,NamePrint
                   mov ah
            ,09h
                   
            int 21h
                   ;
                   call input_name
                   ;
                   call name_search
                   ;
                   call printline
                   ;
                   jmp Search
               
            Exit:  ret
            main endp
            ;
            ------------------------------
            input_name proc near 
               
            push ax 
               
            push bx
               
            push cx
               
            push dx
               
            push si
               
            push di
               ;
               lea  dx
            ,TemplateName
               mov  ah
            ,0ah
               
            int  21h
               lea  di 
            ,TemplateName
               add  di
            ,1
               mov al
            ,[di]
               cmp al
            ,0 
               ;
               
            pop di
               
            pop si
               
            pop dx
               
            pop cx
               
            pop bx
               
            pop ax
               
               ;     
               ret
            input_name endp
            ;
            ------------------------------
            stor_name  proc near
               
            push ax
               
            push bx
               
            push cx
               
            push dx
               
            push si
               
            push di
               ;
               mov  di
            ,AdTable[bx]
               lea  si
            ,TemplateName
               add  si
            ,1
               mov  dx
            ,21
               mov  cl
            ,[si]
               mov  al
            ,cl
               cbw
               mov  cx
            ,ax
               inc  cx
               
            sub  dx,cx
               cld  
               repnz movsb
               mov  cx
            ,dx
               cld
               mov al 
            ,20h 
               repnz stosb
               ;
               
            pop di
               
            pop si
               
            pop dx
               
            pop cx
               
            pop bx
               
            pop ax
               ;
            ret
            ;
            stor_name  endp
            ;
            ------------------------------ 
            inphone proc near
              
            push ax
              
            push bx
              
            push cx
              
            push dx
              
            push si
              
            push di
              ;
              lea dx
            ,TemplateNumber
              mov  ah
            ,0ah
              
            int  21h
              ;
              mov di
            ,AdTable[bx]
              add di
            ,21
              lea si
            ,TemplateNumber
              add si
            ,1
              mov cl
            ,[si]
              mov al
            ,cl
              cbw
              mov cx
            ,ax
              add si
            ,1
              cld
              repnz movsb
              ;
              
            pop di
              
            pop si
              
            pop dx
              
            pop cx
              
            pop bx
              
            pop ax
              ;
            ret  
            inphone endp
            ;
            ------------------------------
            name_sort proc near
                
            push ax
                
            push bx 
                
            push cx
                
            push dx
                
            push si
                
            push di
                lea  dx
            , AskForNumPrint
                mov  ah
            ,09h
                
            int  21h
                mov cx
            ,bx
            OuterSort
            :
                mov bx
            ,0
            InnerSort
            :
                mov si
            ,AdTable[bx]
                add bx
            ,2
                mov di 
            ,AdTable[bx]
                mov al
            ,[si]
                mov dl
            ,[di]
                cmp al
            ,dl
                
            push cx
                jg  AxGrBx
               
                mov al
            ,dl
                cbw
                mov cx
            ,ax
                jmp PassAGB
            AxGrBx
            :
                cbw
                mov cx
            ,ax   
            PassAGB
            :
                add si 
            ,1
                add di 
            ,1
                cld 

                repz  cmpsb
                
            pop    cx
                jb     Belower
                mov    ax
            ,AdTable[bx]
                
            sub    bx,2
                mov    dx
            ,AdTable[bx]
                xchg   ax
            ,dx
                mov  AdTable[bx]
            ,dx
                add    bx
            ,2 
                mov  AdTable[bx]
            ,ax
             Belower
            :
                mov   ax
            ,bx
                add   ax
            ,2
                cmp   ax
            ,cx
                jnz  InnerSort
                
            sub cx,2
                cmp cx
            ,2 
            jnz OuterSort
                
            pop di
                
            pop si
                
            pop dx
                
            pop cx
                
            pop bx
                
            pop ax
             ret
            name_sort endp
            ;
            ------------------------------
            name_search proc near
                
            push ax
                
            push bx
                
            push cx
                
            push dx
                
            push si
                
            push di
                mov ax
            ,bx    
                mov bx 
            ,0
            mLoop
            :
                lea si
            ,TemplateName+1
                mov cl
            ,[si]
                
            push ax
                mov al
            ,cl
                cbw
                mov cx
            ,ax
                add cx
            ,1
                
            pop ax
                mov di
            ,AdTable[bx]
                cld 
                repz cmpsb
                jz  FindOutNum
                add bx
            , 2
                cmp bx 
            ,ax
                jz  FindNoNum
                jmp mLoop
            FindNoNum
            :
                
            pop  di
                
            pop  si
                
            pop  dx
                
            pop  cx
                
            pop  bx
                
            pop  ax
                ret
            FindOutNum
            :
                mov dx
            ,AdTable[bx]
                add dx
            ,1
                mov FindedAdress
            ,dx
                ;mov ah
            ,09h
               ; 
            int 21h
                
            pop di
                
            pop si
                
            pop dx
                
            pop cx
                
            pop bx
                
            pop ax
                ret              
            name_search endp
            ;
            ------------------------------
            printline  proc near
                
            push ax
                
            push bx
                
            push cx
                
            push dx
                
            push si
                
            push di
                jz NoFind
                lea dx
            ,AnswerFindedPrint
                mov ah
            ,09
                
            int 21h
                mov dx
            ,[FindedAdress]
                mov ah
            ,09h
                
            int 21h
                JMP RetPlace
            NoFind
            :
                lea dx
            ,AnswerNoFindPrint
                mov ah
            ,09h
                
            int 21h
            RetPlace
            :
                
            pop di
                
            pop si
                
            pop dx
                
            pop cx
                
            pop bx
                
            pop ax

                ret
            printline endp
            ;
            ------------------------------


            CodeArea ends         
            end main

            Feedback

            # re: 匯編實現(xiàn)查找電話號碼  回復(fù)  更多評論   

            2008-04-20 20:08 by 湯宙旭
            骨痛熱熱而

            # re: 匯編實現(xiàn)查找電話號碼  回復(fù)  更多評論   

            2008-04-20 20:09 by 湯宙旭
            地方法
            99久久精品国产一区二区蜜芽| 久久国产精品久久国产精品| 国产精品久久久久久五月尺| 久久亚洲精品成人无码网站| 中文字幕日本人妻久久久免费| 亚洲国产精品高清久久久| 粉嫩小泬无遮挡久久久久久| 青青草国产精品久久久久| 欧美国产成人久久精品| 少妇人妻88久久中文字幕| 久久免费美女视频| 色诱久久av| 精品久久久久久久久午夜福利| 久久99久久成人免费播放| 精产国品久久一二三产区区别| 国产精品一久久香蕉国产线看 | 2021久久国自产拍精品| 久久精品www| 亚洲欧美另类日本久久国产真实乱对白 | 91秦先生久久久久久久| 久久久这里只有精品加勒比| 国产精品对白刺激久久久| 色婷婷综合久久久久中文字幕| www久久久天天com| 久久久久av无码免费网| 亚洲精品国产成人99久久| 午夜精品久久久久久久久| 国产精品99久久久久久董美香 | 亚洲一区精品伊人久久伊人| 久久99热只有频精品8| 亚洲精品美女久久久久99小说 | 亚洲欧美精品一区久久中文字幕| 久久国产精品无码HDAV| 亚洲国产成人久久综合一区77| 97热久久免费频精品99| 久久精品国产99国产精品导航 | 久久精品国产亚洲77777| 欧美午夜A∨大片久久| 久久综合丁香激情久久| 亚洲AV日韩AV永久无码久久| 亚洲美日韩Av中文字幕无码久久久妻妇|