£¨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