΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ¿ÎºóϰÌâ´ð°¸(¹ùÀ¼Ó¢) ÏÂÔØ±¾ÎÄ

; disp: mov ah,2 ;ÏÔʾһ¸ö×Ö·û int 21h pop bx pop ax jmp restart done: ¡­

3.22 ±àÖÆ³ÌÐòÍê³É12H¡¢45H¡¢0F3H¡¢6AH¡¢20H¡¢0FEH¡¢90H¡¢0C8H¡¢57HºÍ34HµÈ10¸ö×Ö½ÚÊý¾ÝÖ®ºÍ£¬²¢½«½á¹û´æÈë×Ö½Ú±äÁ¿SUMÖУ¨²»¿¼ÂÇÒç³öºÍ½øÎ»£©¡£ £»wjxt322.asm .model small .stack .data b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h £»Ô­Ê¼Êý¾Ý num equ 10 £»Êý¾Ý¸öÊý sum db ? £»Ô¤Áô½á¹ûµ¥Ôª .code .startup xor si, si £»Î»ÒÆÁ¿ÇåÁã xor al, al £»È¡µÚÒ»¸öÊý mov cx, num £»ÀÛ¼Ó´ÎÊý again: add al, b_data[si] £»ÀÛ¼Ó inc si £»Ö¸ÏòÏÂÒ»¸öÊý loop again £»ÈçδÍ꣬¼ÌÐøÀÛ¼Ó mov sum, al £»ÍêÁË£¬´æ½á¹û .exit 0 end

3.23 ÇóÖ÷´æ0040h£º0¿ªÊ¼µÄÒ»¸ö64KBÎïÀí¶ÎÖй²ÓжàÉÙ¸ö¿Õ¸ñ? ; wjxt323.asm .model small .code start: mov ax,0040h £»ËͶεØÖ· mov ds, ax mov si, 0 £»Æ«ÒƵØÖ· mov cx, si £»¼ÆÊý£¨Ñ­»·´ÎÊý£© xor ax, ax £»¿Õ¸ñ¼ÆÊýÆ÷ÇåÁã again: cmp byte ptr [si], 20h £»Óë¿Õ¸ñµÄASCIIÂë±È½Ï jne next £»²»Êǿոñ£¬×ª inc ax £»Êǿոñ£¬¿Õ¸ñÊý¼Ó1 next: inc si £»Ð޸ĵØÖ·Ö¸Õë loop again £»cx£½cx£­1£¬Èçcx£½0 Í˳öÑ­»· .exit 0

9

end start

3.24 ±àд¼ÆËã100¸ö16λÕýÕûÊýÖ®ºÍµÄ³ÌÐò¡£Èç¹ûºÍ²»³¬¹ý16λ×ֵķ¶Î§£¨65535£©£¬Ôò±£´æÆäºÍµ½wordsum£¬È糬¹ýÔòÏÔʾ¡®overflow¡¯¡£ ´ð£º £»Êý¾Ý¶Î count equ 100 parray dw count dup(?) £»¼ÙÉèÓÐ100¸öÊý¾Ý wordsum dw 0 msg db ¡®overflow¡¯,¡¯$¡¯ £»´úÂë¶Î mov cx,count mov ax,0 mov bx,offset parray again: add ax,[bx] jnc next mov dx,offset msg mov ah,9 int 21h £»ÏÔʾÒç³öÐÅÏ¢ jmp done £»È»ºó£¬Ìø³öÑ­»·Ìå next: add bx,2 loop again mov wordsum,ax done: ¡­

3.25 ±à³Ì°Ñ¡ª¸ö16λÎÞ·ûºÅ¶þ½øÖÆÊýת»»³ÉΪÓÃ8421BCDÂë±íʾµÄ5λʮ½øÖÆÊý¡£×ª»»Ëã·¨¿ÉÒÔÊÇ£ºÓöþ½øÖÆÊý³ýÒÔ10000£¬ÉÌΪ¡°Íòλ¡±£¬ÔÙÓÃÓàÊý³ýÒÔ1000£¬µÃµ½¡°Ç§Î»¡±£»ÒÀ´ÎÓÃÓàÊý³ýÒÔl00¡¢10ºÍl£¬µÃµ½¡°°Ùλ¡±¡¢¡°Ê®Î»¡±ºÍ¡°¸öλ¡±¡£ ;wjxt325.asm .model small .stack 256 .data array dw ? £»Ô´×ÖÊý¾Ý dbcd db 5 dup(?) £»Îåλbcd½á¹û£¬¸ß¶Ô¸ßµÍ¶ÔµÍ .code .startup mov dx, array £»È¡Ô´Êý¾Ý£¨ÓàÊý£© mov bx, 10000 £»³ýÊý mov cx, 10 £»³ýÊýϵÊý mov si, 4 £»Ä¿µÄÊý¾Ý¸ßÎ»Î»ÒÆÁ¿ again: mov ax, dx £»dx.axÖдæ·Å±»³ýÊý mov dx, 0 div bx £»³ýÓÚbx£¬ÉÌax£¬ÓàÊýdx mov dbcd[si], al £»ÉÌ£¼10£¬´æ½á¹û

10

push dx £»ÔÝ´æÓàÊý mov ax, bx £»³ýÊý³ýÓÚ10 mov dx,0 div cx £»dx.ax³ýÓÚcx£¬ÉÌax¡¢ÓàÊý0´æÔÚdx mov bx, ax £»bxÊdzýÊý pop dx dec si £»Ä¿µÄÊý¾ÝÎ»ÒÆÁ¿¼õ1 jnz again mov dbcd, dl £»´æ¸öλÊý£¨ < 10 £© .exit 0 end

3.26 ½â£º

£¨1£©»ã±àÓïÑÔÖУ¬×Ó³ÌÐòÒªÓÃÒ»¶Ô¹ý³ÌαָÁîPROCºÍENDPÉùÃ÷£¬¸ñʽÈçÏ£º ¹ý³ÌÃû PROC [NEAR|FAR]

¡­¡­ £»¹ý³ÌÌå ¹ý³ÌÃû ENDP

£¨2£©±£»¤Óõ½µÄ¼Ä´æÆ÷ÄÚÈÝ£¬ÒÔ±ã×Ó³ÌÐò·µ»ØÊ±½øÐÐÏàÓ¦µÄ»Ö¸´¡£ £¨3£©¸Ä´í£º crazy proc

pish bx push cx xor ax,ax xor dx,dx again:add a,[bx] adc dx,0 inc bx inc bx

loop again pop cx pop bx

3.27 ½â£¨²»Ðèµ÷ÓÃHTOASC×Ó³ÌÐò£©£º again: mov ah,1 int 21h cmp al,1bh £»ESCµÄASCIIÂëÊÇ1bh je done mov dl,al mov ah,2 int 21h £»ÊÇ´óд×ÖĸÔòת»»ÎªÐ¡Ð´×Öĸ jmp again done: ¡­

3.28 ½â´ð£º

11

asctob proc push cx

asctob

3.29 ½â£ºDIPASC

DIPASC HTOASC

and dh,0fh shl dh,1 mov ch,dh shl dh,1 shl dh,1 add dh,ch and dl,0fh add dh,dl mov al,dh pop cx ret endp

proc push cx push dx push ax mov cl,4 shr al,cl call HTOASC mov dl,al mov ah,2 int 21h pop ax

call HTOASC mov dl,al mov ah,2 int 21h

mov dl,¡¯H¡¯mov ah,2 int 21h pop dx pop cx ret endp proc

and al,0fh cmp al,9 jbe htoasc1 add al,37h ret

£»ÏÈת»»Ê®Î»Êý

£»Ê®Î»Êý³ËÒÔ10£¨²ÉÓÃÒÆÎ»Ö¸Á

£»×ª»»¸öλÊý £»Ê®Î»Êý¼Ó¸öλÊý £»ÉèÖóö¿Ú²ÎÊý

£»Èë¿Ú²ÎÊý£ºAL£½ÒªÏÔʾµÄÒ»¸ö16½øÖÆÊý

£»×ª»»¸ßλ

£»ÏÔʾ

£»×ª»»µÍλ £»ÏÔʾ

£»ÏÔʾһ¸ö×Öĸ¡°H¡±

;½«ALµÍ4λ±í´ïµÄһλ16½øÖÆÊýת»»ÎªASCIIÂë;ÊÇ0AH¡«0FH£¬¼Ó37Hת»»ÎªASCIIÂë ;×Ó³ÌÐò·µ»Ø

12