΢»úÔÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£© Ç廪´óѧ³ö°æÉç
(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