µ±Ç°Î»ÖãºÊ×Ò³ > ΢»úÔÀíÓë½Ó¿Ú¼¼Êõ ¹ËêÍ Ï°Ìâ²Î¿¼´ð°¸
MESS2 DB 'LETTER:$' MESS3 DB 'LENGTH:$' DATA ENDS MOV DL,0AH MOV AH,2
INT 21H ;»»ÐÐÏÔʾ MOV AH,9 LEA DX,MESS3 INT 21H 25
23. ´ð£º DATA SEGMENT
STRING DB 'HELL MY MASM!' COUNT=$-STRING DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,0 26 27
µÚ6Õ ϰÌâ´ð°¸
ÂÔ¡£
µÚ7Õ ϰÌâ´ð°¸
1£®°ëµ¼Ìå´æ´¢Æ÷µÄ·ÖÀàÈçÏ£º
2£®Ê²Ã´ÊÇRAMºÍROM?RAMºÍROM¸÷ÓÐÊ²Ã´ÌØµã£¿2·Ö
Ëæ»ú´æÈ¡´æ´¢Æ÷RAM£¬ÓÖ³ÆÎª¶Á/д´æ´¢Æ÷£¬Æäÿ¸ö´æ´¢µ¥ÔªµÄÄÚÈÝ¿ÉÒÔËæÊ±°´ÐèÒª½øÐжÁ/д²Ù×÷¡£RAMÖ÷ÒªÓÃÀ´±£´æ¸÷ÖÖÊäÈë/Êä³öÊý¾Ý¡¢Öмä½á¹û¡¢ÓëÍâ´æ½»»»µÄÐÅÏ¢£¬Ò²¿É×÷¶ÑջʹÓ᣶øROMµÄÄÚÈÝÖ»ÄܶÁ³ö£¬²»ÄÜдÈë»ò¸Äд£¬Ò»°ãÓÃÀ´´æ·Å¹Ì¶¨µÄ³ÌÐòºÍÊý¾Ý¡£
3£®°ëµ¼Ìå´æ´¢Æ÷µÄÖ÷Òª¼¼ÊõÖ¸±ê£º´æ´¢ÈÝÁ¿¡¢¶Á/дËÙ¶È£¨´æÈ¡Ê±¼äºÍ´æ´¢ÖÜÆÚ£©¡¢¿É¿¿ÐÔ¡£ 4£®8086CPUºÍ´æ´¢Æ÷Á¬½ÓʱҪ¿¼ÂÇÄÄЩ·½ÃæµÄÒòËØ£¿£¨2·Ö£©
8086CPUºÍ´æ´¢Æ÷Á¬½ÓʱҪ¿¼ÂÇ£º´æ´¢Ð¾Æ¬Êý£¬AB¡¢DBºÍһЩ¿ØÖÆÐźŵÄÁ¬½Ó£¬Ææ¡¢Å¼Æ¬µÄÉèÖ㬵ØÖ·ÒëÂ뷽ʽµÈ¡£
5£®³£ÓõĴ洢Æ÷µØÖ·ÒëÂ뷽ʽÓÐÄÄЩ£¿£¨2·Ö£©
³£ÓõĴ洢Æ÷µØÖ·ÒëÂ뷽ʽÓУºÈ«µØÖ·ÒëÂë¡¢²¿·ÖµØÖ·ÒëÂë¡¢ÏßÑ¡·¨¡£ 6.ÔÚ8086ϵͳÖУ¬ÈôÓÃ1024*1λµÄRAMоƬ×é³É16K*8λµÄ´æ´¢Æ÷£¬ÐèÒª¶àÉÙоƬ£¿ÏµÍ³µØÖ·
29
×ÜÏßÖÐÓжàÉÙλ²ÎÓëÆ¬ÄÚѰַ£¿¶àÉÙλÓÃ×÷оƬѡÔñÐźţ¿£¨2·Ö£©
ÐèÒª(16k?8)/(1024?1)=128Ƭ£¬CPUµØÖ·ÏßÖÐÆ¬ÄÚѰַ10λ£¬Æ¬Íâ4λ¡£ 7£®
µÚ8Õ ϰÌâ´ð°¸
1£®¼òÊöI/O ½Ó¿ÚµÄ¹¦ÄÜ¡££¨2·Ö£©
I/O ½Ó¿ÚµÄ¹¦ÄÜ£º¶ÔÊäÈë/Êä³öÊý¾Ý½øÐлº³åºÍËø´æ¡¢¶ÔÐźŵÄÐÎʽºÍÊý¾ÝµÄ¸ñʽ½øÐÐ±ä »»¡¢¶ÔI/O ¶Ë¿Ú½øÐÐѰַ¡¢ÌṩÁªÂçÐźŵȡ£
2£®CPUÓëÍâÉèÖ®¼äµÄÊý¾Ý´«Ê䷽ʽÓÐÄÄЩ£¿¼òҪ˵Ã÷¸÷×Եĺ¬Òå¡££¨2·Ö£©
CPUÓëÍâÉèÖ®¼äµÄÊý¾Ý´«Ê䷽ʽÓгÌÐò¿ØÖÆ·½Ê½£¨ÎÞÌõ¼þ´«Ê䷽ʽºÍ³ÌÐò²éѯ·½Ê½£©¡¢ÖжϷ½Ê½¡¢DMA¡¢Í¨µÀ¿ØÖƺÍI/O´¦ÀíÆ÷¡£
ÎÞÌõ¼þ´«Ê䷽ʽ£ºCPU²»ÐèÒªÁ˽âÍâÉè״̬£¬Ö±½ÓÓëÍâÉè´«ÊäÊý¾Ý£¬ÊÊÓÃÓÚ°´Å¥¿ª¹Ø¡¢·¢¹â¶þ¼«¹ÜµÈ¼òµ¥ÍâÉèÓëCPUµÄÊý¾Ý´«Ë͹ý³Ì¡£
³ÌÐò²éѯ·½Ê½£ºCPUÓëÍâÉè´«ÊäÊý¾Ý֮ǰ£¬Ïȼì²éÍâÉè״̬£¬Èç¹ûÍâÉè´¦ÓÚ¡°×¼±¸ºÃ¡±×´Ì¬£¨ÊäÈëÉ豸£©»ò¡°¿ÕÏС±×´Ì¬£¨Êä³öÉ豸£©£¬²Å¿ÉÒÔ´«ÊäÊý¾Ý¡£
ÖжϷ½Ê½£ºÍâÉèÔÚÊý¾Ý×¼±¸ºÃÖ®ºóÔÙ֪ͨCPU£¬ÕâÑù£¬CPUÔÚû½Óµ½ÍâÉè֪ͨǰֻ¹Ü×ö×Ô¼ºµÄÊÂÇ飬ֻÓнӵ½Í¨ÖªÊ±²ÅÖ´ÐÐÓëÍâÉèµÄÊý¾Ý´«Ê乤×÷¡£
DMA£ºÖ±½Ó´æ´¢Æ÷´æÈ¡·½Ê½£¬½«ÍâÉèÓëÄÚ´æ¼ä½¨Á¢ÆðÖ±½ÓµÄͨµÀ£¬CPU²»ÔÙÖ±½Ó²Î¼ÓÍâÉèÓëÄÚ´æ¼äµÄÊý¾Ý´«Ê䣬¶øÊÇÔÚϵͳÐèÒª½øÐÐDMA´«Êäʱ£¬½«CPU¶ÔµØÖ·×ÜÏß¡¢Êý¾Ý×ÜÏß¼°¿ØÖÆ×ÜÏߵĹÜÀíȨ½»ÓÉDMA¿ØÖÆÆ÷½øÐпØÖÆ¡£
ͨµÀ¿ØÖƺÍI/O´¦ÀíÆ÷£ºÖ÷CPUÆô¶¯Í¨µÀ¹¤×÷£¬Í¨µÀ¿ØÖÆÆ÷¼´´ÓÖ÷´æ»òͨµÀ´æ´¢Æ÷ÖÐÈ¡³öÏàÓ¦µÄ³ÌÐò£¬¿ØÖÆÊý¾ÝµÄÊäÈë/Êä³ö¡£
3£®Ê²Ã´ÊǶ˿ڣ¿Í¨³£ÓÐÄļ¸Àà¶Ë¿Ú£¿I/O¶Ë¿ÚµÄѰַ·½Ê½ÓÐÄÄÁ½ÖÖ£¿ÔÚ80X86ϵͳÖУ¬²ÉÓÃÄÄÒ»ÖÖ£¿£¨2·Ö£©
ÿ¸öI/O½Ó¿ÚÄÚ²¿Ò»°ãÓÉ3Àà¼Ä´æÆ÷×é³É£¬CPUÓëÍâÉè½øÐÐÊý¾Ý´«Êäʱ£¬¸÷ÀàÐÅÏ¢ÔÚ½Ó¿ÚÖнøÈ벻ͬµÄ¼Ä´æÆ÷£¬Ò»°ã³ÆÕâЩ¼Ä´æÆ÷ΪI/O¶Ë¿Ú¡£°üÀ¨Êý¾Ý¶Ë¿Ú¡¢×´Ì¬¶Ë¿Ú¡¢¿ØÖƶ˿ڡ£¶Ë¿ÚѰַ·½Ê½Óд洢Æ÷Ó³ÏñµÄI/OѰַ¡¢I/OÓ³ÏñµÄI/OѰַ¡£80X86ϵͳ²ÉÓúóÕß¡£
4£®M/£ºµÍµçƽ£¬ALE£º¸ßµçƽ£¬£ºµÍµçƽ£»ÊäÈëʱDT/ΪµÍµçƽ£¬ÎªµÍµçƽÓÐЧ£»Êä³öʱDT/Ϊ¸ßµçƽ£¬ÎªµÍµçƽÓÐЧ¡£
5£®ÔÚÊäÈë/Êä³öµç·ÖУ¬ÎªÊ²Ã´³£³£ÒªÊ¹ÓÃËø´æÆ÷ºÍ»º³åÆ÷£¿£¨2·Ö£© ÔÚÍâÉè½Ó¿Úµç·ÖУ¬¾³£ÐèÒª¶Ô´«Êä¹ý³ÌÖеÄÐÅÏ¢½øÐÐËø´æ»ò»º³å£¬ËùÒÔÐèÒªËø´æÆ÷ºÍ»º³åÆ÷¡£ 6£®
DATA SEGMENT AT 2000H ORG 2000H
BUF DB 100 DUP(£¿) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA MAIN PROC FAR
START: MOV AX,DATA
30
MOV DS,AX LEA SI,BUF MOV CX,100
INPUT: MOV DX,0FFE2H IN AL,DX ;¶Á״̬¶Ë¿Ú
TEST AL,01H ;²âÊäÈë״̬D0λ JZ INPUT ;δ¡°×¼±¸ºÃ¡±×ªINPUT MOV DX,0FFE0H ;¶ÁÈ¡ÊäÈë×Ö·û IN AL,DX
MOV [SI],AL ;ÊäÈë×Ö·û´æ»º³åÇø INC SI 30
LOOP INPUT
MOV AH,4CH ;·µ»ØDOS INT 21H CODE ENDS END START 7£® LED0 IOW LED1 LED7 OE G Q0
74LS373 D0¡«D7 Q1 Q7
. .
...
Y ¡Ý1 D0¡«D7
CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0
31
PUSH AX
MOV DX,200H ;ÉèI/O ¶Ë¿ÚΪ200H AGAIN: MOV AH,1 ;¶Á¼üÅÌ»º³åÇø×Ö·û INT 16H
CMP AL,1BH ;ÈôΪ¡°Esc¡±¼ü,ÔòÍ˳ö JZ EXIT
MOV AL,0FFH ;µÆÈ«ÁÁ OUT DX,AL ;Êä³ö¿ØÖÆLED
MOV BX,5 ;Ïò×Ó³ÌÐò´«µÝ²ÎÊý,ʵÏÖ50ms ÈíÑÓʱ CALL DELAY ;×Ó³ÌÐòDELAY ʵÏÖ10ms ÑÓʱ NOT AL ;µÆÈ«Ãð
MOV BX,2 ;Ïò×Ó³ÌÐò´«µÝ²ÎÊý,ʵÏÖ20ms ÈíÑÓʱ CALL DELAY JMP AGAIN EXIT: RET MAIN ENDP
DELAY PROC NEAR PUSH CX
WAIT0: MOV CX,2801 WAIT1: LOOP WAIT1 DEC BX JNZ WAIT0 POP CX 31 RET
DELAY ENDP CODE ENDS END START 8£®
CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX
MOV DX,200H ;ÉèI/O¶Ë¿ÚΪ200H MOV CL,01H ;ÉèÖÃÊä³ö³õÖµ
AGAIN: MOV AH,1 ;¶Á¼üÅÌ»º³åÇø×Ö·û INT 16H
CMP AL,1BH ;ÈôΪ¡°Esc¡±¼ü,ÔòÍ˳ö JZ EXIT MOV AL,CL
OUT DX,AL ;Êä³ö¿ØÖÆLED
MOV BX,50 ;Ïò×Ó³ÌÐò´«µÝ²ÎÊý,ʵÏÖ0.5sÈíÑÓʱ
32
¹²·ÖÏí92ƪÏà¹ØÎĵµ