΢»úÔ­ÀíÓë½Ó¿Ú¼¼ÊõÖܺÎÇٿκóϰÌâ´ð°¸ - ͼÎÄ ÏÂÔØ±¾ÎÄ

£¨5£©TEST DH£¬0FH £¨DH£©=18H CF=0 £¨6£©CMP CX£¬00H £¨CX£©=0004H CF=0 £¨7£©SHR DX£¬CL £¨DX£©=0186H CF=0 £¨8£©SAR AL£¬1 £¨AL£©=04H CF=0 £¨9£©SHL BH£¬CL £¨BH£©=0F0H CF=0 £¨10£©SAL AX£¬1 £¨AX£©=4A10H CF=0

£¨11£©RCL BX£¬1 CF=1,£¨BX£©=1E6DH, CF=0,£¨BX£©=1E6CH CF=0 £¨12£©ROR DX£¬CL £¨DX£©=4186H CF=0 11. ¼ÙÉèÊý¾Ý¶¨ÒåÈçÏ£º DATA SEGMENT

STRING DB ¡®The Personal Computer & TV¡¯ DATA ENDS

ÊÔÓÃ×Ö·û´®²Ù×÷Ö¸Áî±à³ÌÍê³ÉÒÔϹ¦ÄÜ£º

£¨1£©°Ñ¸Ã×Ö·û´®´«Ë͵½¸½¼Ó¶ÎÖÐÆ«ÒƵØÖ·ÎªGET_CHAR¿ªÊ¼µÄÄÚ´æµ¥ÔªÖС£ ½â£º³ÌÐò¶ÎÈçÏ£º

LEA SI£¬STRING £»ÖÃÔ´´®Æ«ÒƵØÖ· LEA DI£¬GET_CHAR£»ÖÃÄ¿µÄ´®Æ«ÒƵØÖ· MOV CX£¬26£»Öô®³¤¶È

CLD £»·½Ïò±êÖ¾¸´Î» REP MOVSB £»×Ö·û´®´«ËÍ

12£®±à³Ì½«AX¼Ä´æÆ÷ÖеÄÄÚÈÝÒÔÏà·´µÄ´ÎÐò´«Ë͵½DX¼Ä´æÆ÷ÖУ¬²¢ÒªÇóAXÖеÄÄÚÈݲ»±»ÆÆ»µ£¬È»ºóͳ¼ÆDX¼Ä´æÆ÷ÖÐ1µÄ¸öÊýÊǶàÉÙ¡£

½â£º½«AXµÄÄÚÈÝÓÃRORÑ­»·ÓÒÒÆ£¬16´ÎÖ®ºóAXµÄÄÚÈݲ»±ä£¨Èç¹ûÓÃËãÊõ/Âß¼­ÓÒÒÆSHL/SAL£¬ÔòAXµÄÄÚÈÝÆÆ»µ£¬ÐèÒªÓöÑÕ»PUSHU AX/POP AX±£»¤£©£¬Æä×îµÍÎ»ÒÆÈëCFÖУ¬ÔÙʹÓÃRCLÑ­»·×óÒÆ½«CFÖеÄÖµÒÆÈëDXÖС£²¢ÇÒ£¬Èç¹ûCFµÄֵΪ1£¬Ôò½«BL¼Ó1¡£

MOV CX, 16 XOR BL, BL

LP1: ROR AX, 1

JNC LP2 INC BL

LP2: RCL DX,1

LOOP LP1 HLT

µ÷ÊÔ³ÌÐò£º

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT BUF DW 12

BUF1 DW 100 DUP (?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS

MOV AX,DATA

MOV DS,AX MOV AX,1234H MOV CX, 16 XOR BL, BL

LP1: ROR AX, 1 JNC LP2 INC BL LP2: RCL DX,1 LOOP LP1 HLT CODE ENDS

END START

15. ij°àÓÐÆß¸öͬѧµÄÓ¢Óï³É¼¨µÍÓÚ80·Ö£¬·ÖÊý´æÔÚARRAYÊý×éÖУ¬ÊÔ±à³ÌÍê³ÉÒÔϹ¤×÷£º¸øÃ¿È˼Ó5·Ö£¬½á¹û´æµ½NEWÊý×éÖÐ. ½â£º

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT ARRAYDB 7 DUP(?)

NEW DB 7 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV CX, 7 MOV BX, 0

LP1: MOV AL, ARRAY[BX] ADD AL, 05H DAA

MOV NEW[BXI], AL INC BX LOOP LP1 HLT CODE ENDS

END START µ÷ÊÔ³ÌÐò£º

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT

ARRAY DB 65H,76H,78H,54H,90H,85H,68H NEW DB 7 DUP(?) BUF1 DW 100 DUP (?)

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS

MOV AX,DATA

MOV DS,AX MOV CX, 7 MOV BX, 0

LP1: MOV AL, ARRAY[BX] ADD AL, 05H DAA

MOV NEW[BXI], AL INC BX LOOP LP1 HLT CODE ENDS

END START

£¨1£©¸øÃ¿È˼Ó5·Ö£¬½á¹û´æµ½NEWÊý×éÖÐ £¨2£©°Ñ×Ü·Ö´æµ½SUMµ¥ÔªÖÐ £¨3£©°Ñƽ¾ù·Ö´æµ½AVERAGEµ¥ÔªÖÐ ½â£º

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT ARRAYDB 7 DUP(?)

NEW DB 7 DUP(?) SUM DW 0 AVG DB 0 DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV CX, 7 MOV SI, 0 MOV SUM, 0 MOV AH, 0 LP1: MOV AL, ARRAY[SI] ADD AL, 05H DAA

MOV NEW[SI], AL ADD AL ,SUM DAA

MOV SUM,AL

ij°àÓÐÆß¸öͬѧµÄÓ¢Óï³É¼¨µÍÓÚ80·Ö£¬·ÖÊý´æÔÚARRAYÊý×éÖУ¬ÊÔ±à³ÌÍê³ÉÒÔϹ¤×÷£º

ADC AH, 0 DAA

MOV SUM+1, AH INC SI LOOP LP1

MOV AX, SUM MOV BL,07H DIV BL MOV AVG, AL HLT CODE ENDS

END START µ÷ÊÔ³ÌÐò£º

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT

ARRAY DB 65H,76H,78H,54H,90H,85H,68H NEW DB 7 DUP(?) SUM DB 00H,00H AVG DB 0

BUF1 DW 100 DUP (?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS

MOV AX,DATA

MOV DS,AX MOV CX, 7 MOV SI, 0 MOV SUM, 0 MOV AH, 0 LP1: MOV AL, ARRAY[SI] ADD AL, 05H DAA

MOV NEW[SI], AL ADD AL , SUM DAA

MOV SUM,AL ADC AH, 0 MOV SUM+1, AH INC SI LOOP LP1 MOV AL, SUM