MOV AL,BUFFER MOV CL,4 SHR AL,CL CMP AL,10 JC L1 ADD AL,7 L1: ADD AL,30H MOV ANSWER,AL
MOV AL,BUFFER
AND AL,0FH CMP AL,10 JC L2 ADD AL,7 L2: ADD AL,30H
MOV ANSWER+1,AL
MOV AH,4CH
INT 21H CODE ENDS
END START
6£® ¼ÙÉèÊý¾ÝÏÒåÈçÏ£º
DATA1 DB ¡®HELLO£¡ GOOD MORNING£¡¡¯ DATA2 DB 20 DUP£¨?£©
Óô®²Ù×÷Ö¸Áî±àд³ÌÐò¶Î£¬Ê¹Æä·Ö±ðÍê³ÉÒÔϹ¦ÄÜ£º i. ´Ó×óµ½ÓÒ½«DATA1ÖеÄ×Ö·û´®´«Ë͵½DATA2ÖУ»
ii. ´«ËÍÍêºó£¬±È½ÏDATA1ºÍDATA2ÖеÄÄÚÈÝÊÇ·ñÏàͬ£» iii. °ÑDATA1ÖеĵÚ3ºÍµÚ4¸ö×Ö½Ú×°ÈëAX£» iv. ½«AXµÄÄÚÈÝ´æÈëDATA2+5¿ªÊ¼µÄ×Ö½Úµ¥ÔªÖС£ ½â£º±àд³ÌÐò¶ÎÈçÏ£º (1) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20
CLD
REP MOVSB (2) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20
CLD
µÚ 13 Ò³ ¹² 27 Ò³
REPE CMPSB
JNZ NO £»²»Í¬×ªÒƵ½NO £»·ñÔò¶þ×Ö·û´®Ïàͬ
NO:
(3) LEA SI,DATA1+2 LODSB MOV AH,AL LODSB
(4) LEA DI,DATA2+5 XCHG AH,AL STOSB MOV AL,AH STOSB
7£® Ö´ÐÐÏÂÁÐÖ¸Áîºó£¬AX¼Ä´æÆ÷ÖеÄÄÚÈÝÊǶàÉÙ£¿
TABLE DW 10£¬20£¬30£¬40£¬50 ENTRY DW 3 ?
MOV BX£¬OFFSET TABLE ADD BX£¬ENTRY MOV AX£¬[BX] ½â£º·ÖÎö£º
MOV BX£¬OFFSET TABLE £»BX=0000H ADD BX£¬ENTRY £»BX=0003H MOV AX£¬[BX] £»AX=1E00H
ÓÉÒÔÉÏ·ÖÎö¿ÉÖª£¬Ö´ÐÐÖ¸Áîºó£¬AX=1E00H¡£
8£® ±àд³ÌÐò¶Î£¬½«STRING1ÖеÄ×îºó20¸ö×Ö·ûÒÆµ½STRING2ÖУ¨Ë³Ðò²»±ä£©¡£
½â£º³ÌÐò±àдÈçÏ£º LEA SI,STRING1 LEA DI,STRING2 MOV CX,60 CLD LOAD£ºLODSB DEC CX CMP CX,20 JNZ LOAD REP MOVSB
9£® ¼ÙÉèÒ»¸ö48λÊý´æ·ÅÔÚDX£ºAX£ºBXÖУ¬ÊÔ±àд³ÌÐò¶Î£¬½«¸Ã48λÊý³Ë2¡£
½â£º±àд³ÌÐò¶ÎÈçÏ£º
µÚ 14 Ò³ ¹² 27 Ò³
CLC
SHL BX,1 SHL AX,1 SHL DX,1
10£®ÊÔ±àд³ÌÐò£¬±È½ÏAX£¬BX£¬CXÖдø·ûºÅÊýµÄ´óС£¬²¢½«×î´óµÄÊý·ÅÔÚAXÖС£
½â£º±àд³ÌÐòÈçÏ£º
CMP AX,BX
JG LL1 XCHG AX,BX
LL1: CMP AX,CX JG LL2 XCHG AX,CX LL2:
11£®Èô½Ó¿Ú03F8HµÄµÚ1루b1£©ºÍ£¨b3£©Í¬Ê±Îª1£¬±íʾ½Ó¿Ú03F8HÓÐ×¼±¸ºÃµÄ8λÊý
¾Ý£¬µ±CPU½«Êý¾ÝÈ¡×ߺó£¬b1ºÍb3¾Í²»ÔÙͬʱΪ1ÁË¡£½öµ±ÓÖÓÐÊý¾Ý×¼±¸ºÃʱ²ÅÔÙͬʱΪ1¡£
ÊÔ±àд³ÌÐò£¬´ÓÉÏÊö½Ó¿Ú¶ÁÈë200BµÄÊý¾Ý£¬²¢Ë³Ðò·ÅÔÚDATA¿ªÊ¼µÄµØÖ·ÖС£ ½â£º±àд³ÌÐòÈçÏ£º
LEA BX,DATA MOV CX,200
LP0: MOV DX,03F8H £»×´Ì¬¶Ë¿ÚµØÖ·
LP1: IN AL,DX AND AL,0AH CMP AL,0AH JNZ LP1
MOV DX,03F9H £»Êý¾Ý¶Ë¿ÚµØÖ· IN AL,DX MOV [BX],AL INC BX
LOOP LP0
12£®»Í¼ËµÃ÷ÏÂÁÐÓï¾ä·ÖÅäµÄ´æ´¢¿Õ¼ä¼°³õʼ»¯µÄÊý¾ÝÖµ¡£ £¨1£©DATA1 DB ¡®BYTE¡¯£¬12£¬12H£¬2 DUP£¨0£¬£¿£¬3£© £¨2£©DATA2 DW 4 DUP£¨0£¬1£¬2£©£¬£¿£¬-5£¬256H
½â£º£¨1£©´æ´¢¿Õ¼ä·ÖÅäÇé¿öÈçͼ£¨a£©Ëùʾ£» £¨2£© ´æ´¢¿Õ¼ä·ÖÅäÇé¿öÈçͼ£¨b£©Ëùʾ¡£
µÚ 15 Ò³ ¹² 27 Ò³
ͼ£¨a£© ͼ£¨b£©
13£®ÇëÓÃ×Ó³ÌÐò½á¹¹±àдÈçϳÌÐò£º´Ó¼üÅÌÊäÈëÒ»¸ö¶þλʮ½øÖƵÄÔ·ÝÊý£¨01¡«12£©£¬È»
ºóÏÔʾ³öÏìÓ¦µÄÓ¢ÎÄËõдÃû¡£ ½â£º±àд³ÌÐòÈçÏ£º
DATA SEGMENT
TAB DB ¡°Jan.Feb.Mar.Apr.May.Jun.Jul.Aug.Sep.Oct.Nov.Dec.¡± MESS DB ¡°ÇëÊäÈë¶þλÔ·Ý:¡±,24H CR DB 10,13,24H DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX LP: LEA DX,MESS MOV AH,9 INT 21H
CALL KEYMONTH £»¼üÅÌÊäÈë¶þλÔÂ·Ý CMP AL,¡®Q¡¯ JZ QUIT
CALL DISMONTH £»ÏÔʾÔ·ݵÄÓ¢ÎÄËõдÃû JMP LP QUIT: MOV AH,4CH INT 21H
µÚ 16 Ò³ ¹² 27 Ò³