; 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