]]>姹囩紪閿洏涓柇婕旂ず宸﹀彸shifthttp://www.shnenglu.com/newplan/archive/2008/01/04/40371.html灞辨硥寮歡灞辨硥寮歡Thu, 03 Jan 2008 16:12:00 GMThttp://www.shnenglu.com/newplan/archive/2008/01/04/40371.htmlhttp://www.shnenglu.com/newplan/comments/40371.htmlhttp://www.shnenglu.com/newplan/archive/2008/01/04/40371.html#Feedback0http://www.shnenglu.com/newplan/comments/commentRss/40371.htmlhttp://www.shnenglu.com/newplan/services/trackbacks/40371.htmlstack segment para stack 'stack' db 256 dup(0) stack ends ; data segment para public'data' buffer db 16h dup(0) bufpt1 dw 0 bufpt2 dw 0 kbflag db 0
prompt db '---kbd_io program begin ---',13,10,'$' scantab db 0,0,'1234567890-=',0,0 db 'qwertyuiop[]',0dh,0 db 'asdfghjkl;',0,0,0,0 db 'zxcvbnm,./',0,0,0 db ' ',0,0,0,0,0,0,0,0,0,0,0,0,0 db '789-456+1230.' even shiftab db 0,0,'!@#$%^&*()_+',0,0 db 'QWERTYUIOP{}',0dh,0 db 'ASDFGHJKL:"',0,0,0 db 'ZXCVBNM<>?',0,0,0 db ' ',26 dup(0) even oldcs9 dw ? oldip9 dw ? data ends ; code segment para public'code' start proc far assume cs:code,ds:data push ds mov ax,0 push ax mov ax,data mov ds,ax
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
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 ;------------------------------