΢»úÔ­ÀíÓë½Ó¿Ú¼¼ÊõÏ°Ì⼯ ÏÂÔر¾ÎÄ

6¡¢Ä³Èí¼þ¹²¿É½ÓÊÕ10¸ö¼üÅÌÃüÁ·Ö±ðΪA¡¢B¡¢C¡¢©©¡¢J£©£¬Íê³ÉÕâ10¸öÃüÁîµÄ³ÌÐò·Ö±ðΪ¹ý³ÌP0¡¢P1¡¢©©¡¢P9¡£±à³ÌÐò´Ó¼üÅ̽ÓÊÕÃüÁ²¢×ªµ½ÏàÓ¦µÄ¹ý³ÌÈ¥Ö´ ÐС£ÒªÇóÓÃÁ½ÖÖ·½·¨£º £¨1£©ÓñȽϡ¢×ªÒÆÖ¸ÁîʵÏÖ¡£ £¨2£©ÓÃÌøת±íʵÏÖ

MOV DS£¬AX LEA BX£¬BUF MOV CX£¬100 MOV AH£¬0 MOV DH£¬0 MOV DL£¬0

£»³É¼¨±íÊ×Ö· £»Ñ§ÉúÈËÊý

£»µÍÓÚ60·ÖÈËÊý £»60-89·ÖѧÉúÈËÊý £»90-100·ÖѧÉúÈËÊý

AAA1£º MOV AL£¬[BX]

CMP AL£¬ 60 JGE BBB1 INC AH JMP CCC1

£»Óë90±È½Ï £»´óÓÚµÈÓÚתBBB2

£»Óë60±È½Ï £»´óÓÚµÈÓÚתBBB1

7¡¢ÄÚ´æ×ÔBUFµ¥Ôª¿ªÊ¼µÄ»º³åÇøÁ¬Ðø´æ·Å×Å100¸öѧÉúµÄÓ¢ÎÄ·ÖÊý£¬±à³ÌÐòͳ¼ÆÆä ÖÐ90-100¡¢60-89¡¢60ÒÔÏÂÕ߸÷ÓжàÉÙÈË£¬²¢°Ñ½á¹ûÁ¬Ðø´æ·Åµ½×ÔRESUT¿ªÊ¼µÄµ¥Ôª £¨ÒªÇó»­³ö³ÌÐòÁ÷³Ìͼ£¬¸÷¶Î¶¨ÒåÍêÕû£©¡£ ³ÌÐòÇåµ¥£º

DATA SEGMENT

£»Êý¾Ý¶Î

BBB1£º CMP AL£¬90

£»¶ÑÕ»¶Î

JGE BBB2 INC DL JMP CCC1 INC AH

BUF DB £¿£¬£¿£¬¡­ £¬£¿ £»¶¨ÒåѧÉú³É¼¨±í RESUT DB £¿£¬£¿£¬£¿ £»·ÅÖ÷ÖÊý¶Îͳ¼ÆÖµ

DATA ENDS STACK SEGMENT

DB 50 DUP£¨0£©

CCC1£º INC BX

LOOP AAA1

£»Ð޸ijɼ¨±íλÖÃ

STACK ENDS CODE SEGMENT

£»¶ÑÕ»¶Î

£»±£»¤DOS

MOV RESUT£¬AH MOV RESUT+1£¬DL MOV RESUT+2£¬DH RET

MAIN ENDP

£»´æ·Åͳ¼Æ½á¹û

ASSUME CS£ºCODE£¬DS£ºDATA£¬SS£ºSTACK

MAIN RPOC FAR

PUSH DS XOR AX£¬0 PUSH AX£¬0 MOV AX£¬DATA

CODE ENDS

END

8¡¢±à³ÌÐòÒ»±ß´Ó¼üÅÌÉϽÓÊÕ×Ö·û£¬Ò»±ß½«ÆäдÈëÖ¸¶¨µÄÎļþ£¬×Ö·û¸öÊý¹²60¡£

9

³ÌÐòÇåµ¥£º DATA SEGMENT

ENGLISH DB ?PRESS RETURN KEY TO EXIT?£¬ODH£¬OAH£¬?$?

BUF DB 60

£»µÚÒ»¸ö×Ö½ÚÉèµÄ×î´ó³¤¶È(º¬0DH-»Ø³µ·û) DB 0

£»µÚ¶þ¸ö×Ö½Ú¿Õ³ö,ÓÉDOS×îºóÌîʵ¼Ê³¤¶È(²»º¬0DH)

DB 61 DUP (0) £»µÚÈý×Ö½Ú¿ªÊ¼Ð´×Ö·û DB ?$? DATA ENDS

STACK SEGMENT

DW 20 DUP (0)

STACK ENDS CODE SEGMENT

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

BEGIN: MOV AX,DATA MOV DS,AX LEA DX,ENGLISH MOV AH,09H INT 21H LEA DX,BUF MOV AH,0AH INT 21H MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

±¾ÌâÖУ¬×î¶à¿ÉÊäÈë60¸ö×Ö·û£¬BUFÖеÚ61¸öÄÚ´æµ¥Ôª¿É´æ·Å»Ø³µ´úÂë¡£ 9¡¢±àÖÆÒ»¸ö³ÌÐò£¬ÊµÏÖDAT1ºÍDAT2Ïà¼Ó£¬Êý¾Ý¸ñʽÈçÏ DAT1 DB 4£¬12H£¬34H£¬56H£¬78H DAT2 DB 3£¬12H£¬34H£¬56H

ÆäÖÐDAT1ºÍDAT2µ¥ÔªµÄµÚÒ»¸öÊý¾ÝÖ¸¶¨¸ÃÊýµÄ×Ö½ÚÊý¡£

DATA SEGMENT PARA ?DATA?

DAT1 DB 4£¬12H£¬34H£¬56H£¬78H DAT2 DB 3£¬12H£¬34H£¬56H DATA ENDS

STACK SEGMENT PARA ?STACK?

DW 100 DUP(?)

STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA

START PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,DAT1

LEA DI,DAT2

MOV BX,[SI] MOV CX,[DI] INC SI INC DI CLC MM:

MOV AL,[DI]

ADC [SI],AL

10

INC DI INC SI DEC BX LOOP MM M1:

JZ,M2

JNC M2

ADC BYTE PRT [SI],0

INC SI DEC BX JMP M1 M2: RET

START ENDP CODE ENDS END

10¡¢±àÖÆÒ»³ÌÐò£¬°Ñ×Ö·û´®?1234567890?ÖеÄ?4567?Çå³ý£¬½«×Ö·û´®±äΪ?123890?DATA SEGMENT PARA ?DATA?

DAT DB ?1234567890? DATA ENDS

STACK SEGMENT PARA ?STACK? DW 100 DUP(?)

STACK ENDS CODE SEGMENT

ASSUME CS:CODE,SS:STACK,DS:DATA,ES:DATA START PROC FAR MOV AX,DATA MOV DS,AX

MOV ES,AX LEA SI,DAT LEA DI,DAT CLC ADD DI,3

ADD SI,7

MOV CX,3 CLD REP MOVSB RET START ENDP CODE ENDS ENDS

11¡¢¶¨ÒåÒ»ÌõºêÖ¸ÁËü¿ÉÒÔʵÏÖÈÎÒ»Êý¾Ý¿éµÄ´«ËÍ£¬Ö»Òª¸ø³öÔ´ºÍÄ¿µÄÊý¾Ý¿éµÄÊ×µØÖ·ÒÔ¼°Êý¾Ý¿éµÄ³¤¶È¼´¿É¡£È»ºó²ÉÓúêµ÷ÓðÑBUF1¿ªÊ¼µÄ100¸ö×Ö½Úµ¥ÔªÖеÄÊý¾ÝÒÀ´Î´«Ë͵½BUF2¿ªÊ¼µÄ100¸ö×Ö½Úµ¥ÔªÖС£

12¡¢ÒÑÖªÊý¾Ý¶ÎDATµ¥Ôª´æ·ÅijһÊýN£¨-6¨QN¨Q6£©£¬Çë±àд³ÌÐò£¬Óòé±í·¨ÇóÊýNµÄƽ·½Öµ£¬½á¹ûËÍSQRµ¥Ôª¡£

DATA SEGMENT

TABLE DB 0£¬1£¬4£¬9£¬16£¬25£¬36 DAT DB N SQR DB £¿

DATA ENDS STACK SEGMENT

DW 20 DUP£¨0£©

STACK ENDS

11

CODE SEGMENT

ASSUME CS£ºCODE£¬DS£ºDATA£¬SS£ºSTACK

4¡¢ÊÔ±àд³ÌÐò£¬½«´Ó8255AµÄ¶Ë¿ÚAÊäÈëµÄÊý¾Ý£¬Ëæ¼´Ïò¶Ë¿ÚBÊä³ö£¬²¢¶ÔÊäÈëµÄÊý¾Ý¼ÓÒÔÅжϣ¬µ±´óÓÚµÈÓÚ80Hʱ£¬ÖÃλPC5ºÍPC2£¬·ñÔò¸´Î»PC5ºÍPC2¡£Éè8255AµÄ¶Ë¿ÚµØַΪ00F2H¡¢00F4H¡¢00F6H¡¢00F8H¡£

5¡¢ÊÔ¶Ô8255A½øÐгõʼ»¯

£¨1£©Éè¶Ë¿ÚA¡¢¶Ë¿ÚBºÍ¶Ë¿ÚC¾ùΪ»ù±¾I/O·½Ê½£¬ÇÒ²»ÔÊÐíÖжϡ££¨ÊäÈë¡¢Êä³ö·Ö±ð¿¼ÂÇ£©

£¨2£©Éè¶Ë¿ÚAΪѡͨÊä³ö·½Ê½£¬¶Ë¿ÚBΪ»ù±¾ÊäÈ뷽ʽ£¬¶Ë¿ÚCÊ£ÓàλΪÊä³ö·½Ê½£¬ÔÊÐí¶Ë¿ÚAÖжϡ£

£¨3£©Éè¶Ë¿ÚAΪ˫Ïò·½Ê½£¬¶Ë¿ÚBΪѡͨÊä³ö·½Ê½£¬ÇÒ²»ÔÊÐíÖжϡ£

£¨4£©Éè¶Ë¿ÚAΪѡͨÊäÈ뷽ʽ£¬¶Ë¿ÚBΪѡͨÊä³ö·½Ê½£¬½«¶Ë¿ÚCÊ£ÓàÁ½Î»ÖеÄPC7ÖÃ1£¬PC6Çå0¡£

6¡¢8255AµÄ·½Ê½Ñ¡Ôñ×ÖºÍC¿Ú°´Î»ÖÃλ/¸´Î»×Ö¶¼Ð´Èëʲô¶Ë¿Ú£¿ÓÃʲô·½Ê½Çø·ÖËüÃÇ£¿

7¡¢Éè8255AµÄA¿Ú¡¢B¿Ú¡¢C¿ÚºÍ¿ØÖÆ×ּĴæÆ÷µÄ¶Ë¿ÚµØַΪ80H¡¢82H¡¢84H¡¢86H£¬

START£ºPUSH DS

XOR AX£¬AX PUSH AX LEA BX£¬TABLE MOV AL£¬DAT CMP AL£¬6 JG AA CMP AL£¬-6 JGE NEXT JMP AA

NEXT£º XLAT

MOV SQR£¬AL

AA£º

RET

CODE ENDS

END

µÚÁùÕÂ Ï°Ìâ

ÄÄЩÌص㣿

ÈôA¿Ú¹¤×÷ÔÚ·½Ê½0ÊäÈ룬B¿Ú¹¤×÷ÔÚ·½Ê½1Êä³ö£¬C¿Ú¸÷λµÄ×÷ÓÃÊÇʲô£¿¿ØÖÆ×Ö

1¡¢¿É±à³Ì²¢ÐнӿÚоƬ8255AÃæÏòI/OÉ豸һ²àµÄ¶Ë¿ÚÓм¸¸ö£¿ÆäÖÐC¿ÚµÄʹÓÃÓÐÊÇʲô£¿ÈôB¿Ú¹¤×÷ÔÚ·½Ê½0Êä³ö£¬A¿Ú¹¤×÷ÔÚ·½Ê½1ÊäÈ룬C¿Ú¸÷λ×÷ÓÃÊÇʲô£¿

¿ØÖÆ×ÖÊÇʲô£¿

2¡¢¡°ÓÉÓÚ°´ÖÃλºÍ¸´Î»ÃüÁîÊǶÔC¿Ú½øÐвÙ×÷£¬ËùÒÔ¿ÉÒÔдµ½C¿Ú¡±£¬Õâ¾ä»°¶ÔÂ𣿠Ϊʲô£¿

3¡¢¿É±à³Ì²¢ÐнӿÚоƬ8255AÓÐÄļ¸ÖÖ¹¤×÷·½Ê½£¿¸÷×ÔµÄÌصãÊÇʲô£¿

8¡¢Éè8255¶Ë¿ÚA¹¤×÷ÔÚË«Ïò·½Ê½£¬ÔÊÐíÊäÈëÖжϣ¬½ûÖ¹Êä³öÖжϣ¬B¿Ú¹¤×÷ÔÚ·½Ê½0Êä³ö£¬C¿ÚÊ£ÓàÊý¾ÝÏßÈ«²¿ÊäÈ룬Çë³õʼ»¯±à³Ì¡£Éè8255¶Ë¿ÚµØַΪ60H¡¢62H¡¢64H¡¢66H¡£

12