• <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

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

             ;在本次試驗中需要注意基址寄存器BX的移動方法,對以字為單位的數組,BX的移動方式
             ;是每移動一次加2或者減2
             ;另外函數調用的過程中需要小心PUSH和pop的調用是否安全,例如在name_sort中pop CX的
             ;時候沒有先Push CX,導致了name_sort函數不可以調用
             ;此程序使用比較高效的方法只是對號碼單的首地址進行排序,為此開辟了一個地址數組
             ;AdTable,類似C語言中的指針數組
             ;在每個名字的前面存有每個名字的長度,有利于對名字進行比較,體現了空間換時間
             ;程序調試難度較大,費時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;該函數還要返回輸入字母為終止時候的提示
            ,
                  ;可以返回一個寄存器的狀態來表示
                   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: 匯編實現查找電話號碼  回復  更多評論   

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

            # re: 匯編實現查找電話號碼  回復  更多評論   

            2008-04-20 20:09 by 湯宙旭
            地方法
            久久人搡人人玩人妻精品首页| 人妻无码久久一区二区三区免费| 久久久久久久久久久精品尤物| 夜夜亚洲天天久久| 久久99热精品| 岛国搬运www久久| 色噜噜狠狠先锋影音久久| 狠狠色丁香婷综合久久| 久久精品蜜芽亚洲国产AV| 国产精品久久久久国产A级| 久久人妻少妇嫩草AV无码专区| 日韩AV无码久久一区二区| 久久亚洲春色中文字幕久久久| 97精品依人久久久大香线蕉97| 一本一道久久综合狠狠老| 久久亚洲精品国产精品| jizzjizz国产精品久久| 香港aa三级久久三级| 久久久久国产成人精品亚洲午夜| 亚洲欧美国产精品专区久久| 久久天天躁狠狠躁夜夜不卡 | 88久久精品无码一区二区毛片| 免费观看成人久久网免费观看| 亚洲欧美日韩精品久久| 久久综合亚洲色HEZYO国产| 7777精品伊人久久久大香线蕉| 久久久久久久久66精品片| 亚洲伊人久久大香线蕉综合图片| 国产亚洲综合久久系列| 久久亚洲国产精品123区| 亚洲熟妇无码另类久久久| 久久强奷乱码老熟女网站 | 嫩草伊人久久精品少妇AV| 久久亚洲美女精品国产精品| 99久久国产综合精品成人影院| 亚洲国产精品无码久久青草| 亚洲AV日韩精品久久久久| MM131亚洲国产美女久久| 亚洲&#228;v永久无码精品天堂久久 | 久久99这里只有精品国产| 99久久久精品免费观看国产|