(ÍêÕûword°æ)΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ(µÚ¶þ°æ)¿ÎºóϰÌâ´ð°¸ÍêÕû°æ ÏÂÔØ±¾ÎÄ

΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£© Ç廪´óѧ³ö°æÉç

(6) SHL Ö¸ÁîÖУ¬µ±ËùÒÆÎ»Êý³¬¹ý1 ʱ£¬±ØÐëÓÃCLÈ¡´úËùÒÆÎ»Êý¡£

3£®¶ÔÓÚÏÂÃæµÄ·ûºÅ¶¨Ò壬ָ³öÏÂÁÐÖ¸ÁîµÄ´íÎó¡£

A1 DB £¿ A2 DB 10 K1 EQU 1024

£¨1£© MOV K1£¬AX £¨2£©MOV A1£¬AX £¨3£©CMP A1£¬A2 £¨4£©K1 EQU 2048 ´ð£º(1)K1 Ϊ³£Á¿£¬²»ÄÜÓÃMOV Ö¸Áֵ£» (2)A1 Ϊ×Ö½Ú£¬AX Ϊ×Ö±äÁ¿£¬ÀàÐͲ»Ò»Ö£» (3)A1 ºÍA2ͬΪ´æ´¢Æ÷Ѱַ·½Ê½£¬²»·ûºÏÓï·¨¹æÔò£» (4)K1 ÖØÐ¸³ÖµÇ°£¬±ØÐëÓÃPURGE ÊÍ·Å¡£

4£®Êý¾Ý¶¨ÒåÓï¾äÈçÏÂËùʾ: FIRST DB 90H£¬5FH£¬6EH£¬69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?) FORTH DB 4 DUP (?)

×ÔFIRST µ¥Ôª¿ªÊ¼´æ·ÅµÄÊÇÒ»¸öËÄ×Ö½ÚµÄÊ®Áù½øÖÆÊý(µÍλ×Ö½ÚÔÚǰ),ÒªÇó: ±àÒ»¶Î³ÌÐò½«Õâ¸öÊý×óÒÆÁ½Î»ºó´æ·Åµ½×ÔSECOND ¿ªÊ¼µÄµ¥Ôª,ÓÒÒÆÁ½Î»ºó´æ·Åµ½×ÔTHIRD ¿ªÊ¼µÄµ¥Ôª,Ç󲹺ó·Åµ½FORTH¿ªÊ¼µÄµ¥Ôª¡£(×¢Òâ±£ÁôÒÆ³ö²¿·Ö) ´ð£º

DATA SEGMENT

FIRST DB 90H£¬5FH£¬6EH£¬69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?) FORTH DB 4 DUP (?) DATA ENDS

CODE SEGMENT

13

΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£© Ç廪´óѧ³ö°æÉç

ASSUME CS£ºCODE£¬DS£ºDATA START£ºMOV AX£¬DATA

MOV DS£¬AX LEA SI£¬FIRST LEA DI£¬SECOND MOV CX£¬2 CLC

£»×óÒÆ2 λ

MOV AX£¬WORD PTR [SI] £»AX=5F90H ΪµÍÊ®ÁùλÊý¾Ý INC SI INC SI

MOV DX£¬WORD PTR [SI] £»DX=696EH Ϊ¸ßÊ®ÁùλÊý¾Ý PUSH DX £»±£´æÔ­ÓеĸßÊ®ÁùλÊý¾Ý PUSH AX £»±£´æÔ­ÓеĵÍÊ®ÁùλÊý¾Ý ROL DX£¬CL

£»½«¸ßλÊý¾Ý²»´ø½øÎ»Ñ­»·×óÒÆÁ½Î»£¬¼´¸ß2 λÊý¾ÝÔÚDL µÄµÍ

2 λ

AND DL£¬03H £»ÈÃDL Öнö±£´æÒƳöµÄ¸ß2 λÊý¾Ý MOV [DI+4] £¬DL£»½«ÒƳöµÄ¸ß2 λÊý¾Ý·ÅÈëSECOND ÖеÄ×î¸ßµ¥ÔªÖÐ ROL AX£¬CL

£»½«µÍλÊý¾Ý²»´ø½øÎ»Ñ­»·×óÒÆÁ½Î»£¬¼´AX µÄ¸ß2 λÔÚAL µÄ

µÍ2 λ

AND AL£¬03H£»ÈÃAL Öнö±£´æÒƳöµÄAX ¸ß2 λÊý¾Ý MOV BL £¬AL£»½«AL ÖеÄÊý¾Ý·ÅÈëBL Öб£´æ POP AX£»µ¯³öÔ­ÓеĵÍÊ®ÁùλÊý¾Ý POP DX£»µ¯³öÔ­ÓеĸßÊ®ÁùλÊý¾Ý

SHL DX£¬CL£»½«¸ßλÊý¾ÝËãÊõÂß¼­×óÒÆ2 λ SHL AX£¬CL£»½«µÍλÊý¾ÝËãÊõÂß¼­×óÒÆ2 λ

OR DL£¬BL£»½«AX ÖÐÒÆ³öµÄ¸ß2 λÊý¾Ý·ÅÈëDX µÄµÍ2 λ MOV WORD PTR [DI] £¬AX MOV WORD PTR [DI+2] £¬DX

14

΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£© Ç廪´óѧ³ö°æÉç

£»ÓÒÒÆ2 λ

LEA SI£¬FIRST LEA DI£¬THIRD MOV CX£¬2 CLC

MOV AX£¬WORD PTR [SI] £»AX=5F90H ΪµÍÊ®ÁùλÊý¾Ý INC SI INC SI

MOV DX£¬WORD PTR [SI] £» DX=696EH Ϊ¸ßÊ®ÁùλÊý¾Ý PUSH DX£»±£´æÔ­ÓеĸßÊ®ÁùλÊý¾Ý PUSH AX£»±£´æÔ­ÓеĵÍÊ®ÁùλÊý¾Ý

ROR AX£¬CL£»½«µÍλÊý¾Ý²»´ø½øÎ»Ñ­»·ÓÒÒÆÁ½Î»£¬¼´µÍ2 λÊý¾ÝÔÚAH µÄ¸ß2 λ

AND AH£¬0C0H£»ÈÃAH Öнö±£´æÒƳöµÄµÍ2 λÊý¾Ý PUSH CX MOV CX£¬6 SHR AH£¬CL POP CX

MOV [DI] £¬AH £»½«ÒƳöµÄµÍ2 λÊý¾Ý·ÅÈëTHIRD ÖеÄ×îµÍµ¥ÔªÖÐ ROR DX£¬ CL

£»½«µÍλÊý¾Ý²»´ø½øÎ»Ñ­»·×óÒÆÁ½Î»£¬¼´AX µÄ¸ß2 λÔÚAL µÄ

µÍ2 λ

AND DH£¬0C0H £»ÈÃDH Öнö±£´æÒƳöµÄDX µÍ2 λÊý¾Ý MOV BL £¬DH £»½«DH ÖеÄÊý¾Ý·ÅÈëBL Öб£´æ POP AX £»µ¯³öÔ­ÓеĵÍÊ®ÁùλÊý¾Ý POP DX £»µ¯³öÔ­ÓеĸßÊ®ÁùλÊý¾Ý SHR DX£¬CL £»½«¸ßλÊý¾ÝËãÊõÂß¼­×óÒÆ2 λ SHR AX£¬CL £»½«µÍλÊý¾ÝËãÊõÂß¼­×óÒÆ2 λ

OR AH£¬BL £»½«DX ÖÐÒÆ³öµÄµÍ2 λÊý¾Ý·ÅÈëAX µÄ¸ß2 λ MOV WORD PTR [DI+1] £¬ AX MOV WORD PTR [DI+3] £¬DX

15

΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£© Ç廪´óѧ³ö°æÉç

£»Çó²¹ LEA SI£¬FIRST LEA DI£¬FORTH

MOV AX£¬WORD PTR [SI] £»AX=5F90H ΪµÍÊ®ÁùλÊý¾Ý INC SI INC SI

MOV DX£¬WORD PTR [SI] £» DX=696EH Ϊ¸ßÊ®ÁùλÊý¾Ý XOR AX£¬ 0FFFFH £»½«µÍÊ®Áùλȡ·´ XOR DX£¬ OFFFFH £»½«¸ßÊ®Áùλ°´Î»È¡·´ CLC

ADD AX£¬01H £»µÍλ¼Ó1£¬¼´¿ÉΪԭÊýµÄÇó²¹ ADC DX£¬0 £»¸ßλ¼ÓµÍλ¼Ó·¨Ê±µÄ½øÎ» MOV WORD PTR [DI] £¬ AX MOV WORD PTR [DI+2] £¬DX MOV AH£¬4CH INT 21H

CODE ENDS

END START

5. ÊÔ±à³ÌÐò½«ÄÚ´æ´Ó40000Hµ½4BFFFHµÄÿ¸öµ¥ÔªÖоùдÈë55H£¬²¢ÔÙÖð¸öµ¥Ôª¶Á³ö±È½Ï£¬¿´Ð´ÈëµÄÓë¶Á³öµÄÊÇ·ñÒ»Ö¡£ÈôÈ«¶Ô£¬Ôò½«ALÖÃ7EH; Ö»ÒªÓÐ´í£¬Ôò½«ALÖÃ81H¡£ ´ð£º

DATA SEGMENT DA1 DB 55H CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,4000H MOV DS,AX MOV CX,0C000H MOV BX,0000H

16