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