»ã±àÓïÑÔ³ÌÐòÉè¼Æ(ºÏ¹¤´ó°æ)ϰÌâ²Î¿¼´ð°¸ ÏÂÔØ±¾ÎÄ

repne scasb jz match nomatch:

lea dx,mess4 jmp exit match: lea dx,mess3

exit:

mov ah,09 int 21h

sub di,offset stok1 mov dx,di and dx,0fh add dl,30h mov ah,2 int 21h

ret main endp codesg ends

end main

5.8 ±àд³ÌÐò£¬´Ó¼üÅÌÊäÈëÒ»¸öNλ¶þ½øÖÆÊý£¬Í³¼Æ1³öÏֵĴÎÊý¡£ code segment

assume cs:code

start: mov cx,9 ;N<10 mov dl,30H next: mov ah,1 int 21h cmp al,13 jz write cmp al,30h jb exit cmp al,31h ja exit sub al,30h add dl,al dec cx jnz next write:

push dx mov dl,10 mov ah,2 int 21h pop dx

mov ah,2 int 21h exit: mov ah,4ch int 21h code ends

end start

5.9 ±àд³ÌÐò£¬´Ó¼üÅÌÊäÈëÒ»¸ö×Ö·û´®µ½BUFF£¬²¢°´Ï෴˳ÐòÏÔʾÊä³ö¡£ datasg segment

mess1 db 13,10, 'input string:$' mess2 db 13,10,'$' st1 label byte max1 db 6 act1 db ?

stok1 db 6 dup(?)

datasg ends

codesg segment

assume cs:codesg, ds:datasg main proc far push ds sub ax,ax push ax

mov ax,datasg mov ds,ax lea dx,mess1 mov ah,09

int 21h lea dx,st1 mov ah,0ah

int 21h lea dx,mess2 mov ah,09

int 21h mov cl,act1 mov ch,0

mov bx, offset stok1 add bx, cx next: dec bx

mov dl, [bx] mov ah,2 int 21h

loop next ret main endp codesg ends

end main

5.10 ±àд³ÌÐò£¬´Ó¼üÅÌÊäÈëÒ»¸ö°ËλµÄ¶þ½øÖÆÊý£¬ÏÔʾÆäÊ®Áù½øÖÆÊý¡£ code segment

assume cs:code start:

mov cx,8 mov bl,0 next: mov ah,1 int 21h cmp al,30h jb exit cmp al,31h ja exit sub al,30h shl bl,1 add bl,al loop next mov cl,4 mov di,2 out1: rol bl,cl mov dl,bl and dl,0fh add dl,30h cmp dl,39h jle dig add dl,7 dig: mov ah,2 int 21h dec di cmp di,0 jnz out1 exit: mov ah,4ch int 21h code ends end start

5.11 ±àд³ÌÐò£¬´Ó¼üÅÌÊäÈëij¸ö×Ö·ûµÄASCIIÂë(×÷ΪÆðµã)ºÍ¸öÊýN£¬ÏÔʾÊä³öÕâN¸öASCIIÂëºÍ×Ö·û¡£

5.12 ×ÖÊý×éARRAYΪÓзûºÅÊý£¬µÚÒ»¸öµ¥ÔªÎªÔªËظöÊýN£¬ºóÃæÎªN¸öÔªËØ£¬±àд³ÌÐò£¬ÇóÊý×éÔªËØÖеÄ×î´óÖµ£¬²¢°ÑËü·ÅÈëMAXµ¥Ôª¡£ data segment

array dw 5,9,4,5,15,3 max dw ? data ends code segment

assume cs:code,ds:data start:

mov ax, data mov ds, ax mov cx, array lea bx, array+1 mov ax, [bx] mov max, ax k1: mov ax, [bx] cmp ax, max jl next mov max,ax next: add bx,2 loop k1 mov ah,4ch int 21h code ends end start

6.11 ´Ó¼üÅÌÊäÈëÐÕÃûºÍµç»°ºÅÂ룬½¨Á¢Í¨Ñ¶Â¼£¬Í¨Ñ¶Â¼µÄ×î´óÈÝÁ¿Îª9Ìõ¼Ç¼£¬³ÌÐò½áÊøÊ±ÎÞÐë±£ÁôͨѶ¼£¬µ«³ÌÐòÔËÐÐʱҪ±£ÁôͨѶ¼ÐÅÏ¢¡£³ÌÐòµÄÈË»ú½çÃæºÍ˳ÐòÒªÇóÈçÏ£º

(1)ÌáʾÐÅÏ¢INPUT NAME£º(µ÷ÓÃ×Ó³ÌÐòINNAME¼ÈëÐÕÃû£¬ÐòºÅ×Ô¶¯²úÉú) (2)ÌáʾÐÅÏ¢INPUT TELEPHONE NUMBER£º(µ÷ÓÃ×Ó³ÌÐòINTELE¼Èëµç»°ºÅÂë) (3)ÌáʾÐÅÏ¢INPUT ÐòºÅ£º(µ÷ÓÃ×Ó³ÌÐòPRINTÏÔʾijÈ˵ÄÐÕÃûºÍµç»°ºÅÂ룬Èç¹ûÐòºÅ²»´æÔÚ£¬ÔòÌáʾÐÅÏ¢ NO THIS NUMB )¡£

;telephone number list phone struc

serial db 20h

tname db 3 dup (20h)

tnumb db 11 dup (20h), '$' phone ends data segment num db 0

mess1 db 13,10, 'input name(3):$' mess2 db 13,10, 'phone number(11):$' mess3 db 13,10, 'serial number(1):$' mess4 db 13,10, 'no this number!$'