LEA SI£¬ASC1 LEA DI£¬ASC2 LEA BX£¬ASC3 MOV CX£¬2 CLC
NEXT£º MOV AX£¬[SI] MOV DX£¬[DI] SBB AX£¬DX MOV [BX]£¬AX INC SI INC SI INC DI
INC DI INC BX INC BX
LOOP NEXT
CH03 »ã±àÓïÑÔ³ÌÐòÉè¼Æ ϰÌâÓë˼¿¼Ìâ
1£®ÏÂÁÐÓï¾äÔÚ´æ´¢Æ÷ÖзֱðΪ±äÁ¿·ÖÅä¶àÉÙ×ֽڿռ䣿²¢»³ö´æ´¢¿Õ¼äµÄ·ÖÅäͼ¡£
VAR1 DB 10£¬2
VAR2 DW 5 DUP£¨£¿£©£¬0
VAR3 DB ?HOW ARE YOU£¿?£¬3 DUP£¨1£¬2£© VAR4 DD -1£¬1£¬0
½â´ð£º×Ö½Ú¿Õ¼ä----VAR1£º2£»VAR2£º12£»VAR3£º20£»VAR4£º12¡£ ´æ´¢¿Õ¼äµÄ·ÖÅäͼ£º
DS£º0000 0A 02 00 00 00 00 00 00¡ª00 00 00 00 00 00 48 4F 0010 57 20 20 41 52 45 20 20¡ª59 4F 55 3F 01 02 01 02 0020 01 02 FF FF FF FF 01 00¡ª00 00 00 00 00 00
2£®¼Ù¶¨VAR1 ºÍVAR2 Ϊ×Ö±äÁ¿£¬LAB Ϊ±êºÅ£¬ÊÔÖ¸³öÏÂÁÐÖ¸ÁîµÄ´íÎóÖ®´¦¡£
£¨1£©ADD VAR1£¬VAR2 £¨2£©SUB AL£¬VAR1 £¨3£©JMP LAB[CX] £¨4£©JNZ VAR1
£¨5£© MOV [1000H]£¬100 £¨6£©SHL AL£¬ 4 ½â´ð£º(1)Á½¸ö²Ù×÷ÊýÖÐÖÁÉÙÓÐÒ»¸öΪ¼Ä´æÆ÷£» (2)AL Ϊ×Ö½Ú£¬VAR1 Ϊ×Ö±äÁ¿£¬²»Æ¥Å䣻 (3)[]Öв»ÄÜÓÃCX£¬LAB Ϊ±êºÅ£¬·Ç±äÁ¿£» (4)תÏòµØÖ·Ó¦Îª±êºÅ£¬²»ÄÜÊDZäÁ¿£» (5)Ä¿µÄ²Ù×÷ÊýµÄÀàÐͲ»È·¶¨£»
(6)SHL Ö¸ÁîÖУ¬µ±ËùÒÆÎ»Êý³¬¹ý1 ʱ£¬±ØÐëÓÃCL »òCX À´È¡´úËùÒÆÎ»Êý¡£ 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 䶨Ò壬ÎÞ·¨×ö±È½ÏÖ¸Á
(4)K1 ÖØÐ¸³ÖµÇ°£¬±ØÐëÓÃPURGE ÊÍ·Å¡£ 4£®Êý¾Ý¶¨ÒåÓï¾äÈçÏÂËùʾ:
FIRST DB 90H£¬5FH£¬6EH£¬69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?)
×ÔFIRST µ¥Ôª¿ªÊ¼´æ·ÅµÄÊÇÒ»¸öËÄ×Ö½ÚµÄÊ®Áù½øÖÆÊý(µÍλ×Ö½ÚÔÚǰ),ÒªÇó: ±àÒ»¶Î³ÌÐò½«Õâ¸öÊý×óÒÆÁ½Î»ºó´æ·Åµ½×ÔSECOND ¿ªÊ¼µÄµ¥Ôª,ÓÒÒÆÁ½Î»ºó´æ·Åµ½×Ô
THIRD ¿ªÊ¼µÄµ¥Ôª¡£(×¢Òâ±£ÁôÒÆ³ö²¿·Ö) ½â´ð£º DATA SEGMENT
FIRST DB 90H£¬5FH£¬6EH£¬69H SECOND DB 5 DUP(?) THIRD DB 5 DUP(?) DATA ENDS CODE SEGMENT
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£¬[SI]£»AX=5F90H ΪµÍÊ®ÁùλÊý¾Ý INC SI INC SI
MOV DX£¬[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 [DI] £¬AX MOV [DI+2] £¬DX £»ÓÒÒÆ2 λ LEA SI£¬FIRST LEA DI£¬THIRD MOV CX£¬2 CLC
MOV AX£¬[SI]£»AX=5F90H ΪµÍÊ®ÁùλÊý¾Ý INC SI INC SI
MOV DX£¬[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 [DI+1] £¬AX MOV [DI+3] £¬DX MOV AH£¬4CH INT 21H CODE ENDS END START
5£®£¨14£©ÔÚµ±Ç°Êý¾ÝÇø´Ó400H ¿ªÊ¼µÄ256 ¸öµ¥ÔªÖдæ·Å×ÅÒ»×éÊý¾Ý£¬ÊÔ±à³ÌÐò½«ËüÃÇ˳Ðò
°áÒÆµ½´ÓA000H ¿ªÊ¼µÄ˳Ðò256 ¸öµ¥ÔªÖС£ ½â´ð£º
DATA SEGMENT ORG 400H
DAT1 DB ...;256 DUP (?) ORG 0A000H
DAT2 DB ...;256 DUP (?) DATA ENDS
;
STACK SEGMENT STACK ENDS ;
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX ;CH3-14
LEA SI,DAT1 LEA DI,DAT2 MOV CX,128
AGAIN: MOV AL,[SI] MOV [DI],AL INC SI INC DI
LOOP AGAIN
;CH3-15,½«Á½¸öÊý¾Ý¿éÖð¸öµ¥Ôª½øÐбȽϣ¬ÈôÓдíBL=00H£¬·ñÔòBL=FFH LEA SI,DAT1 LEA DI,DAT2 MOV CX,128
NEXT: MOV AL,[SI] MOV BL,[DI] CMP AL,BL JNZ ERROR INC SI INC DI
LOOP NEXT MOV BL,0FFH JMP EXIT
ERROR: MOV BL,00H EXIT: MOV AX,4C00H INT 21H CODE ENDS END START
6£®ÊÔ±à³ÌÐò½«µ±Ç°Êý¾ÝÇø´ÓBUFF ¿ªÊ¼µÄ4K ¸öµ¥ÔªÖоùдÈë55H£¬²¢Öð¸öµ¥Ôª¶Á³ö±È½Ï£¬
¿´Ð´ÈëµÄÓë¶Á³öµÄÊÇ·ñÒ»Ö¡£ÈôÈ«¶Ô£¬Ôò½«ERR µ¥ÔªÖÃ0H£»Èç¹ûÓÐ´í£¬Ôò½«ERR µ¥Ôª ÖÃFFH¡£ ½â´ð£º
DATA SEGMENT
BUFF DB 1000H DUP(?) ERR DB ? DATA ENDS ;
CODE SEGMENT
ASSUME CS:CODE,DS:DATA