TITLE PHONEBOOK (EXE) ’…‹…”Ž€Ÿ Šˆ†Š€, …„€Š’ˆ“…Œ€Ÿ ’Ž‹œŠŽ ‚ *.ASM ;HELP: เจ ขขฎคฅ ญฅแชฎซ์ชจๅ กใชข ข ขฅเๅญฅฉ ็ แโจ ํชเ ญ  ฏเฎฃเ ฌฌ  ; จ้ฅโ ขแฅ ง ฏจแจ, ชฎโฎเ๋ฅ โ ช ญ ็จญ ๎โแ๏. ;ใคฅโ จแฏฎซ์งฎข โ์แ๏ ญฅฏฎแเฅคแโขฅญญ ๏  คเฅแ ๆจ๏ ฏ ฌ๏โจ ็ฅเฅง แฌฅ้ฅญจฅ ;ฏฎ ฎโญฎ่ฅญจ๎ ช DS:... ’ ช ญ ขฅเญฎฅ ฏเฎ้ฅ... .MODEL SMALL .STACK 64 ;------------------------- .DATA R001 DB 'ˆข ญ ˆข ญฎข ค.ไไ-82-ชช, ฌ.+7 ฅฅฅ 901 ฃฃฃฃ ',13,10,36 R002 DB 'ฅโเ ฅโเฎข โ/ฌ ฌ๋ ชช-61-ฅฅ, ค.๋๋-59-  , ฌ.31-ซซ-ซซ ',13,10,36 R003 DB '‘จคฎเ ‘จคฎเฎข ค.๋๋-ไไ-98, เ.10-ไไ-ฎฎ, ฌ.+7 คคค 902 คคคค ',13,10,36 PARLIST LABEL BYTE ;‘ˆ‘ŽŠ €€Œ…’Ž‚ ‚‚Ž„€ „‹Ÿ Žˆ‘Š€: MAXLEN DB 4 ; Œ€Š‘ˆŒ€‹œ€Ÿ „‹ˆ€ ˆŒ…ˆ ACTULEN DB ? ; ŠŽ‹ˆ—…‘’‚Ž ‚‚…„๐›• ‘ˆŒ‚Ž‹Ž‚ KBNAME DB 5 DUP (' ') ;‚‚…„๐Ž… ˆŒŸ, ŠŽ’ŽŽ… „Ž ‚‚Ž„€ ; ‘Ž‘’Žˆ’ ˆ‡ 5 Ž…‹Ž‚ PROMPT DB '‚ขฅคจโฅ คฎ โเ๑ๅ กใชข คซ๏ ฏฎจแช  (ข๋ฉโจ - ENTER): $' ;‘’ŽŠ€ ˆƒ‹€˜…ˆŸ ;------------------------- .CODE .386 ;’…“…’‘Ÿ „‹Ÿ ˆŒ……ˆŸ MOVZX A10MAIN PROC FAR MOV AX,@data;ˆˆ–ˆ€‹ˆ‡€–ˆŸ ‘…ƒŒ…’›• …ƒˆ‘’Ž‚ MOV DS,AX ;----"------"---------"------"---- MOV ES,AX ;--------"-----------"------"----- CALL Q10CLEAR;Ž—ˆ‘’Š€ Š€€ A20: MOV DX,0000 ;“‘’€Ž‚Š€ Š“‘Ž€ ‚ 00,00 CALL Q20CURSOR CALL B10INPUT;Žƒ€ˆ‡€–ˆŸ ‚‚Ž„€ ‘ˆŒ‚Ž‹Ž‚ „‹Ÿ Žˆ‘Š€ CALL Q10CLEAR;Ž—ˆ‘’Š€ Š€€ CMP ACTULEN,00;‚‚…„…Ž ‹ˆ ˆŒŸ? JE A30 ;…‘‹ˆ „‹ˆ€ ˆŒ…ˆ = 0, ’Žƒ„€ ‚›•Ž„ CALL C10CENTER ;“‘’€Ž‚ˆ’œ ‘ˆƒ€‹, '$' ; ˆ Ž‘’€‚ˆ’œ Š“‘Ž € ‚’Ž“ž ‘’ŽŠ“ CALL D10DISPLY ;€‰’ˆ ˆ ‚›‚…‘’ˆ €‰„…›… ˆŒ…€ JMP A20 ;Ž‚’Žˆ’œ A30: MOV AX,4C00H ;‡€‚…˜ˆ’œ €Ž’“ INT 21H A10MAIN ENDP ;-------------------------------------------------------------- ; ‚›‚Ž„ ˆƒ‹€˜…ˆŸ ˆ ‚Ž‘ˆŸ’ˆ… ‚‚Ž„€ ‘ Š‹€‚ˆ€’“› ;-------------------------------------------------------------- B10INPUT PROC NEAR PUSH AX ;‘Ž•. ˆ‘Ž‹œ‡“…Œ›… PUSH DX ; …ƒˆ‘’› MOV AH,09H ;‡€Ž‘ € ‚›‚Ž„ € Š€ LEA DX,PROMPT ; ˆƒ‹€˜…ˆŸ Ž‹œ‡Ž‚€’…‹Ÿ INT 21H MOV AH,0AH ;‡€Ž‘ ‚‚Ž„€ ‘ Š‹€‚ˆ€’“› LEA DX,PARLIST;“Š€‡€ˆ… €„…‘€ PARLIST (‘ˆ‘Š€ €€Œ…’Ž‚) INT 21H POP DX ;‚Ž‘‘’€Ž‚‹…ˆ… …ƒˆ‘’Ž‚ POP AX RET B10INPUT ENDP ;-------------------------------------------------------------- ; “‘’€Ž‚ˆ’œ Žƒ€ˆ—ˆ’…‹œ '$' ˆ Ž‘’€‚ˆ’œ Š“‘Ž € 3-ž ‘’ŽŠ“ ;-------------------------------------------------------------- C10CENTER PROC NEAR ;ˆ‘Ž‹œ‡“…’ BX ˆ DX MOVZX BX,ACTULEN;‡€Œ…ˆ’œ ENTER (0DH) € Žƒ€ˆ—ˆ’…‹œ ‚›‚Ž„€ MOV KBNAME[BX],'$' ;“‘’€Ž‚ˆ’œ Žƒ€ˆ—ˆ’…‹œ ‚›‚Ž„€ MOV DL,0 ;Š“‘Ž ‚›‚Ž„€ “„…’ ‘‹…‚€ MOV DH,2 ;3-Ÿ ‘’Ž—Š€ „‹Ÿ ‚›‚Ž„€ CALL Q20CURSOR ;“‘’€Ž‚ˆ’œ Š“‘Ž RET C10CENTER ENDP ;------------------------------------------------------------- ; ˆ‘Š€’œ ˆ ‚›‚…‘’ˆ €‰„…›… ‡€ˆ‘ˆ ‘Ž ‚’ŽŽ‰ ‘’ŽŠˆ ;------------------------------------------------------------- D10DISPLY PROC NEAR ;ˆ‘Ž‹œ‡“…’ AH ˆ DX PUSHA MOV CX,3 ;Œ€Š‘ˆŒ€‹œŽ… —ˆ‘‹Ž ‡€ˆ‘…‰ “„…’ Ž‚……Ž LEA DX,R001 ;€—€’œ ‘ ‘€ŒŽƒŽ €—€‹€ ‡€ˆ‘…‰ MOV AH,09H ;‡€Ž‘ € ‚›‚Ž„ (ŽŒ… ”“Š–ˆˆ 21H -ŽƒŽ .) POISK: ;ฅเฅกฎเ ขแฅๅ ง ฏจแฅฉ จ ข๋ขฎค ข แซใ็ ฅ ญ ๅฎฆคฅญจ๏ MOV SI,DX MOV BL,[SI] ;‡€ƒ“‡ˆ’œ 1-ž “Š‚“ ˆŒ…ˆ ˆ‡ €‡› ‚ BL CMP BL,KBNAME;‘€‚ˆ’œ Žˆ‘ŠŽ‚“ž ˆ €‡Ž‚“ž “Š‚› JE PRELETTER2 MOV BH,KBNAME CALL LETTERSHIFT CMP BL,BH;‘Ž‚€ ‘€‚ˆ’œ JNE NODISP PRELETTER2: CMP ACTULEN,1 JE DISP ;Ž‚…Š€ ‚’ŽŽ‰ “Š‚› MOV BL,[SI+1] CMP BL,KBNAME[1] JE PRELETTER3 MOV BH,KBNAME[1] CALL LETTERSHIFT CMP BL,BH JNE NODISP PRELETTER3: CMP ACTULEN,2 JE DISP ;Ž‚…Š€ ’…’œ…‰ “Š‚› MOV BL,[SI+2] CMP BL,KBNAME[2] JE DISP MOV BH,KBNAME[2] CALL LETTERSHIFT CMP BL,BH JE DISP JNE NODISP DISP: INT 21H NODISP: ADD DX,64 ;‘Œ…‘’ˆ’œ DX € ‘‹…„“ž™“ž ‡€ˆ‘œ LOOP POISK POPA RET D10DISPLY ENDP ;------------------------------------------------------------- ; Ž—ˆ‘’Š€ Š€€ ˆ “‘’€Ž‚Š€ €’ˆ“’Ž‚ ;------------------------------------------------------------- Q10CLEAR PROC NEAR PUSHA MOV AX,0600H ;‡€Ž‘ˆ’œ ŽŠ“’Š“ Š€€ MOV BH,0AH ;€’ˆ“’ –‚…’€ - —๐›‰ Š€, ‘‚.‡…‹. “Š‚› MOV CX,0000 ;Ž’ 00,00 MOV DX,1D4FH ; „Ž 29,79 (…†ˆŒ 30*80) ; „‹Ÿ …†ˆŒ€ 24*80 “†Ž MOV DX,184F INT 10H MOV AX,0601H ;“Š€˜…ˆ… ‚…•…‰ Ž‹Ž‘› MOV BH,0EH ;€’ˆ“’ –‚…’€ - —๐›‰ ”Ž, †๐‹’›… “Š‚› MOV CX,0000 ;Ž’ 00,00 MOV DX,004FH ; „Ž 2,79 INT 10H POPA RET Q10CLEAR ENDP ;--------------------------------------------------------- ; “‘’€Ž‚Š€ Š“‘Ž€ ‚ ‘’Ž‹…– ˆ ‘’ŽŠ“ ;--------------------------------------------------------- ;DX ˆ‘Ž‹œ‡“…’‘Ÿ ˆ ‚•Ž„… Q20CURSOR PROC NEAR ;ˆ‘Ž‹œ‡“…’ AH ˆ BH MOV AH,02H ;‡€Ž‘ € “‘’€Ž‚Š“ Š“‘Ž€ MOV BH,00 ;PAGE 0 INT 10H RET Q20CURSOR ENDP ;--------------------------------------------------------- ; ‘„‚ˆƒ …ƒˆ‘’Ž‚ Ž‹œ˜ˆ• “Š‚ ‚ Œ€‹›… ˆ €ŽŽŽ’ ‚ …ƒ. BH ;--------------------------------------------------------- LETTERSHIFT PROC NEAR; CMP BH,143 JBE ADD32;„‹Ÿ Ž‹œ˜ˆ• “Š‚ „Ž  CMP BH,159 JBE ADD80;„‹Ÿ Ž‹œ˜ˆ• “Š‚ Ž’  „Ž Ÿ CMP BH,175 JBE SUB32 CMP BH,224;…‘‹ˆ … “Š‚€, ’Ž ‘‚€‹ˆ‚€’œ Ž’‘ž„€ JB EXPROC CMP BH,239 JBE SUB80 CMP BH,240 JE ADD1; ๐ CMP BH,241 JE SUB1; ๑ JA EXPROC;…‘‹ˆ … “Š‚€, ’Ž ‘‚€‹ˆ‚€’œ ADD32: ADD BH,32 JMP EXPROC ADD80: ADD BH,80 JMP EXPROC SUB32: SUB BH,32 JMP EXPROC SUB80: SUB BH,80 JMP EXPROC ADD1: ADD BH,1 JMP EXPROC SUB1: SUB BH,1 EXPROC: RET LETTERSHIFT ENDP ;--------------------------------------------------------- END A10MAIN