Click here to load reader
Upload
kaz
View
255
Download
18
Embed Size (px)
DESCRIPTION
YSU. Principle and Application of Microcomputer 微 机 原 理 与 应 用. 教 师:田 行 斌 单 位:机 电 系. 学习内容. 微型计算机系统概述 微处理器指令系统 汇编语言程序设计 微处理器外部特性 半导体存储器系统 基本输入输出接口. 学习目的. 了解微型计算机的硬件知识 掌握汇编语言程序设计方法 掌握微机基本接口应用方法. 第一章 微型计算机系统概述. 微型计算机的发展 微型计算机系统组成 计算机中的数据表示. 微型计算机的发展. 第1代: 4位微机。CPU:4004 - PowerPoint PPT Presentation
Citation preview
Principle and Application of Microcomputer YSU
1 4CPU40042 8CPU8080316CPU80868088432CPU80386Pentium564CPUItanium
CPUI/OI/O ()
(Bit) 01(Byte) 8 (Word) 2(16)(DWord)4(32)(KB) 210(MB) 220
(Binary)Bb (Decimal)Dd (Hexadecimal)Hh
10000101B127122120133D
272625242322212010000101
0000B0H1000B8H0001B1H1001B9H0010B2H1010BAH0011B3H1011BBH0100B4H1100BCH0101B5H1101BDH0110B6H1110BEH0111B7H1111BFH
BCD ASCII
0 1
0 (2)(00000010B)
1 1 (2)(11111110B)
8
01111111B+1277FH01111110B+1267EH00000010B+202H00000001B+101H00000000B+000H11111111B-1FFH11111110B-2FEH10000001B-12781H10000000B-12880H
8
11111111B255FFH11111110B254FEH11111101B253FDH00000011B303H00000010B202H00000001B101H00000000B000H
16
0111111111111111B7FFFH+327670111111111111110B7FFEH+327660000000000000010B0002H+20000000000000001B0001H+10000000000000000B0000H+01111111111111111BFFFFH-11111111111111110BFFFEH-21000000000000001B8001H-327671000000000000000B8000H-32768
16
1111111111111111BFFFFH655351111111111111110BFFFEH655341111111111111101BFFFDH655330000000000000011B0003H30000000000000010B0002H20000000000000001B0001H10000000000000000B0000H0
(X) (Y)(X Y) (X) (Y)(X Y)
0+0=00+1=11+0=11+1=0 0-0=01-1=01-0=10-1=1
00101011B(+43)(43)+ 10011100B+ (-100)+ (156)11000111B(-57)(199)
BCDBinary Coded Decimal 8421BCD 8421BCD
8421BCD12DBCD00010010B
00000B50101B10001B60110B20010B70111B30011B81000B40100B91001B
8421BCD34DBCD0000001100000100B
000000000B500000101B100000001B600000110B200000010B700000111B300000011B800001000B400000100B900001001B
ASCII American Standard Code for Information Interchange 73494
ASCIIAZASCII41H5AH azASCII61H7AH 09ASCII30H39H ASCII0DH ASCII0AH
BCD
8086/8088 8086/8088
ALU Arithmetic Logic Unit
8086/8088BIU Bus Interface Unit CPU EU Execution Unit
112233
8086/8088AXBXCXDXSIDIBPSPIPFLAGSCSSSDSES
16(1)AX (Accumulator) BX(Base address) CX(Counter) DX(Data register)
16(2)SI (Source Index) DI(Destination Index) SP(Stack Pointer) BP(Base Pointer)
8416AXBXCXDX888 AHAL BHBL CHCL DHDL
IPIP(Instruction Pointer) IP
FLAGSFlag 16FLAGS
OFDFIFTFSFZFAFPFCF
CF(Carry Flag)CF10
01101000B10101011B+ 01000000B+ 11111111B10101000B10101010BCF=0CF=1
PF(Parity Flag)8lPF10
01101000B10101011B+ 01000000B+ 11111111B10101000B10101010BPF=0PF=1
AF(Auxitiary Carry Flag)D3D4AF10
01101000B10101011B+ 01000000B+ 11111111B10101000B10101010BAF=0AF=1
ZF(Zero Flag)0ZF1ZF0
01101000B00010000B+ 01000000B+ 11110000B10101000B00000000BZF=0ZF=1
SF(Sign Flag)1SF1SF0
00101000B10101011B+ 01000000B+ 11111111B01101000B10101010BSF=0SF=1
OF(Overflow Flag)OF10
01101000B(+104)10101011B(-85)+01000000B+ (+64)+11111111B+ (-1)10101000B(-88)10101010B(-86)OF=1OF=0
TF(Trap Flag)TF1CPUTF0CPU
IF(Interrupt enable Flag)CPU IF1IF0
DF(Direction Flag) DF0 DF1
8086/8088 8086/808820 2201MB 00000HFFFFFH [00002H]34H
24 [00002H]1234H [00002H]34H [00003H]12H
8086/80881MB64KB ()20 16
160H16(CS,DS,ES,SS)
64KB16
12340H67H1234H:0000H12341H67H1234H:0001H12342H67H1234H:0002H12343H67H1234H:0003H12344H67H1234H:0004H67H2233EH67H1234H:FFFEH2233FH67H1234H:FFFFH
10H + B821H4567H BC777H
Code Segment CS IP
Data Segment DS
Extra Segment ES
Stack Segment(Stack) SS SP
.MODEL SMALL .STACK .DATA MESSAGE DB HELLOWORLD$ .CODE .STARTUP MOV AH09H MOV DXOFFSET MESSAGE INT 21H .EXIT END
MOV AH0B9H
8086/8088()
(Immediate) (Register) (Memory)
(imm) 8(i8)16(i16) MOV AX1234H 1234H
(reg)CPU8(r8)16(r16) MOV AXBX AXBX
(mem)DS MOV AH[2000H]DS=1492H[16920H]=12H [2000H]AH=12H
MOV AX1234H 1234H AX=1234HAH=12HAL=34H
MOV AXBX AXBX AXBX BX
5
DS DS=ES=1492H[16920H]=12H[16921H]=34HMOV AH [2000H]AH=12HMOV AXES:[2000H]AX=3412H
WVAR DW 3412HWVAR2000H MOV AX[2000H]AX=3412H MOV AX[WVAR] AX=3412H MOV AX WVAR
31_$?@
DB Define Byte DW Define Word DD Define Double Word
X DB 12H 34H 56H 78H Y DW 1122H 3344H Z DD 1A2B3C4DH ? MOV ALX+1 AL=34H MOV BXY BX=1122H MOV CXWORD PTR ZCX=3C4DH
X12HZ4DHX+134H3CHX+256HZ+22BHX+378H1AHY22HZ+400H11H00HY+244HZ+600H33H00H
X DB 12H 34H 56H 78H MOV ALX ALX12H MOV BXOFFSET X BXX MOV DXSEG X DXX
BX/BP/SI/DIBPSS DS DS=1492HES=1492HBX=2000H[16920H]=12HMOV AL [BX]AL=12HMOV DHES:[BX]DH=12H
X DB 12H 34H MOV BXOFFSET X MOV AL[BX] AL=12H INC BX BX1 MOV AH[BX] AH=34H
(BX/BP/SI/DI)816 DS=ES=1492HSI=2000H[16926H]=12HMOV AL [SI+06H]AL=12HMOV DHES:[SI+06H]DH=12H
X DB 12H 34H MOV BX0 MOV ALX[BX] AL=12H INC BX BX1 MOV AHX[BX] AH=34H
(BXBP)(SIDI) DS=1492HBX=2000HSI=06H[16926H]=12HMOV AL[BXSI]AL=12H
(BXBP)(SIDI)816 DS=1492HBX=2000HDI=04H[16926H]=12HMOV AL[BXDI+02H]AL=12H
8086/8088
(1)i8 8i1616 immi8i16 r8 8r1616 regr8r16 segCSDSESSS
(2)m8 8 m1616 memm8m16 dest src
MOVMOV reg/memimm MOV reg/mem/segreg () MOV reg/segmem ()MOV reg/memseg
MOV(1) MOV AXBH MOV 2000AX WV1WV2 MOV WV1WV2
MOV(2)CS MOV CSAX IP MOV AXIP
MOV(3) MOV DSES MOV DS2000H
MOVWV2WV1 ESDS DS2000H
MOVMOV AXWV2 MOV WV1AX MOV AXES MOV DSAX MOV AX2000H MOV DSAX
XCHG(exchange)XCHG regreg/memXCHG reg/memreg MOV AX1234HAH=12HAL=34H XCHG AHAL AH=34HAL=12H
XCHGAB A DW 1234H B DW 5678H
XCHG1 MOV AXB XCHG AXA MOV BAX2 MOV AXA MOV BXB MOV ABX MOV BAX
XLATXLAT () BX AL XLATAL
ASCIITABLE1 DB 30H,31H,32H,33H,34H,35H, \ 36H,37H,38H,39H,41H,42H,43H,44H,45H,46H MOV BXOFFSET TABLE1 MOV AL04H XLAT AL=34H
Stack SS SP
PUSH r16/m16/seg SP=SP-2 SS:SP=r16/m16/seg POP r16/m16/seg r16/m16/seg=SS:SP SP=SP+2
MOV AX1234H MOV BX5678H PUSH AX PUSH BX POP CX POP DX
16 SPSS:SP
PUSHPOP CALLRET INT
AB
AB PUSH A PUSH B POP A POP B
(1)CLC CF=0 Clear Carry FlagSTC CF=1 Set Carry Flag CMC CF Complement Carry Flag
(2)CLD DF=0 STD DF=1 CLI IF=0 STI IF=1
(3)PUSHF SP=SP-2SS:SP=FLAGS POPF FLAGS=SS:SPSP=SP+2
LEA(Load Effective Address)LEA r16memr16=mem LEA BX[SI+06H]SI=1000HBX=1006H
LEAWVAR DW 1234H0001H MOV BXWVAR BX=1234H LEA SIWVAR SI=0001H MOV DX[SI] DX=1234H
ADD destsrcdest=dest+src SUB destsrcdest=dest-src
ADD(Addition)ADD reg imm/reg/mem ADD mem imm/reg 6
SUB(Subtraction)SUB reg imm/reg/mem SUB mem imm/reg 6
MOV ADD ()CLC ()MUL
MOV AH96H ADD AH78H ADD AH78HAH=0EH CF=1PF=0AF=0 ZF=0SF=0OF=0AH=86H CF=0PF=0AF=1 ZF=0SF=1OF=1
/ADC destsrcdest=dest+src+CF SBB destsrcdest=dest-src-CF
ADC(Add with Carry)ADC reg imm/reg/mem ADC mem imm/reg 6
SBB(Subtract with Borrow)SBB reg imm/reg/mem SBB mem imm/reg 6
ADCADCADD 16(ADD) (ADC)
SBBSBBSUB 16(SUB) (SBB)
/X DD 12345678H Y DD 9ABCDEF0H MOV AXWORD PTR X ADD AXWORD PTR Y MOV DXWORD PTR X+2 ADC DXWORD PTR Y+2
CMP(Compare)CMP destsrcdest-src 6 CMP CMP
ZF=1ZF=0 CF=1CF=0 OFSFOF=SF
INC(Increment)INC reg/memreg/mem=reg/mem+1 CF
DEC(Decrement)DEC reg/memreg/mem=reg/mem-1 CF
NEG(Negate)NEG reg/memreg/mem=0-reg/mem 6 12832768OF1 CF=10
MUL(Multiplication)MUL r8/m8 AX=ALr8/m8 MUL r16/m16DX.AX=AXr16/m16
IMUL(Integer Multiply)IMUL r8/m8 AX=ALr8/m8 IMUL r16/m16DX.AX=AXr16/m16
OFCF AH=00H(8)DX=0000H(16)OF=CF=01 OF=CF=01
DIV(Division)DIV r8/m8 AL=AXsrc AH=AXsrc DIV r16/m16AX=DX.AXsrc DX=DX.AXsrc
IDIV(Integer Division)IDIV r8/m8 AL=AXsrc AH=AXsrc IDIV r16/m16AX=DX.AXsrc DX=DX.AXsrc
6 00
(XY+125)ZXYZ16XY
MOV AXX IMUL Y ADD AX125 ADC DX0 IDIV Z MOV XAX MOV YDX
CBW(Convert Byte to Word)CBWALAX AL0AH=00H AL1AH=FFH
CWD(Convert Word to Dword)CWDAXDX.AX AX0DX=0000H AX1DX=FFFFH
AND destsrcdest=dest srcOR destsrcdest=dest srcXOR destsrcdest=dest srcTEST destsrcdest srcNOT reg/mem reg/mem=reg/mem
OF=CF=0 SFZFPFAF NOT
00 1
0011 0 1 0 10001
11 0
0011 0 1 0 10111
10
0011 0 1 0 10110
AL1AX0CF0ALD7~D4D3~D0AL0~9ASCIIALASCIIALASCII
OR AL80HAL1XOR AXAX AX0CF0XOR AL0FHD7~D4D3~D0OR AL30H0~9ASCIIAND AL5FHASCIIOR AL20HASCII
SHL(Shift Logic Left)SHL reg/mem1/CLreg/mem1/CL MOV AL10111110BSHL AL1 AL=01111100BCF=1
SHR(Shift Logic Right)SHR reg/mem1/CLreg/mem1/CL MOV AL10111110BSHR AL1 AL=01011111BCF=0
SAL(Shift Arithmetic Left)SAL reg/mem1/CLreg/mem1/CL MOV AL10111110BSAL AL1 AL=01111100BCF=1
SAR(Shift Arithmetic Right)SAR reg/mem1/CLreg/mem1/CL MOV AL10111110BSAR AL1 AL=11011111BCF=0
/CF SFZFPFAF 1OF=1OF=01OF
ROL(Rotate Left)ROL reg/mem1/CL1/CL MOV AL10111110BROL AL1 AL=01111101BCF=1
ROR(Rotate Right)ROR reg/mem1/CL1/CL MOV AL10111110BROR AL1 AL=01011111BCF=0
RCL(Rotate through CF Left)RCL reg/mem1/CL MOV AL10111110BCF=0RCL AL1 AL=01111100BCF=1
RCR(Rotate through CF Right)RCR reg/mem1/CL MOV AL10111110BCF=1RCR AL1 AL=11011111BCF=0
CF SFZFPFAF 1OF=1OF=01OF
AL10AX ASCIIBCD ASCII DB 33H38H BCD DB ?
SHL2SHR2 XOR AH, AH ; AH0 SHL AX, 1 ; AX = AL * 2 MOV BX, AX ; BX = AL * 2 SHL AX, 1 ; AX = AL * 4 SHL AX, 1 ; AX = AL * 8 ADD AX, BX ; AX = AL * 10
ASCIIBCDASCII DB 33H38HBCD DB ?
MOV AL, ASCII AL = 33HAND AL, 0FH AL = 03HMOV AH, ASCII+1 AH = 38H MOV CL, 4SHL AH, CL AH = 80HOR AL, AH AL = 83H MOV BCD, AL
CS:IPIP IPCS
CSIP CSIP
(Near) 32KB (Short) 127128
(Far) 1MB
IP (IP)IP
(CSIP)
JMP(Jump)JMP LABEL NEXTMOV AXBX JMP NEXT
LABELLABEL LABEL
JMPJMP LABEL JMP r16/m16
JMPJMP FAR PTR LABEL JMP FAR PTR mem
Jcc Jcc LABEL LABEL
Conditioncc16
cc(1)
JZ/JEZF=1Zero/EqualJNZ/JNEZF=0Not Zero/Not EqualJSSF=1SignJNSSF=0Not SignJP/JPEPF=1Parity/Parity EvenJNP/JPOPF=0Not Parity/Parity Odd
cc(2)
JOOF=1OverflowJNOOF=0Not OverflowJCCF=1CarryJNCCF=0Not Carry
cc
JB/JNAECF=1Below/Not Above or EqualJNB/JAECF=0Not Below/Above or EqualJBE/JNACF=1ZF=1Below or Equal/Not AboveJNBE/JACF=0ZF=0Not Below or Equal/Above
cc
JL/JNGESFOFLess/Not Greater or EqualJNL/JGESF=OFNot Less/Greater or EqualJLE/JNGSFOFZF=1Less or Equal/Not GreaterJNLE/JGSF=OFZF=0Not Less or Equal/Greater
CMP AL0 JGE NEXT NEXT NEG AL NEXT:
1
2
CBW CBW AX
CBW1 MOV AL, BVAR; TEST AL, 80H ; JZ NEXT ;0NEXT MOV AH, 0FFH;1AH=FFH JMP DONE ;NEXT:MOV AH, 0 ;0DONE:
CBW2 MOV ALBVAR; CMP AL0 ;0 JNS NEXT ;0NEXT MOV AH0FFH;1AH=FFH JMP DONE ;NEXT:MOV AH0 ;0DONE:
LOOPLOOP LABEL CX=CX-1,CX0 LOOPCX LABEL (128)~(127)
LOOPE LABEL CX=CX-1,CX0ZF=1 LOOPNE LABEL CX=CX-1,CX0ZF=0 JCXZ LABEL CX=0,
ARRAYSUM ARRAY DB 12H34H56H78H SUM DB ?
MOV CX,4 JCXZ DONE ;0 XOR AX,AX ;0 MOV BX,AX ;0AGAIN:ADD AL,ARRAY[BX] ; INC BX LOOP AGAINDONE: MOV SUM,AL ;
() CALL () RET
CALLCALL LABEL CALL FAR PTR LABEL LABEL
CALLCALL r16/m16 CALL FAR PTR mem
CALLCALL CALLCSIP
RETRET RET i16SP=SP+i16 RET
RETCALLRET RETCSIPSP
PROC [NEAR/FAR] ; ENDP
(Interrupt)CPU()
8086/8088CPU256 00000H~003FFH
003FFH255CS003FEH003FDH255IP003FCH00003H0CS00002H00001H0IP00000H
INT i8 i8 IRET INTO
DOSMS-DOS 1AH23INT 21H4
01AH=01H AL=ASCII ASCIIAL
01MOV AH01H INT 21H
02AH=02H DL=ASCII DL (08H)(0DH)(0AH)
02MOV AH02H MOV DL41H INT 21H
09AH=09H DS:DX= DS:DX$$
09MSG DB HELLO!0DH0AH$ MOV AH09H MOV DXOFFSET MSG INT 21H
0AHAH=0AH DS:DX= DS:DX
0AHBUFFER DB 2550255 DUP(0) MOV AH0AH MOV DXOFFSET BUFFER INT 21H
4CHAH=4CH AL=DOS DOS
4CHMOV AH4CH MOV AL00H INT 21H
BL216 16ASCII
.MODEL TINY .STACK .CODE .STARTUP MOV BL, 34H CALL DISPLAY .EXIT
-1DISPLAY PROC MOV DL, BL MOV CL, 4 SHR DL,CL CALL HTOASC MOV DL, BL AND DL, 0FH CALL HTOASC RETDSPLAY ENDP
-2HTOASC PROC ADD DL, 30H CMP DL, 39H JBE NEXT ADD DL, 07HNEXT: MOV AH, 02H INT 21H RETHTOASC ENDP END
NOP
8086/8088 8086/8088
///
() NEXTMOV AX1234H 1234H
X1 DB 12H34H56H
31_$?@
MASM \
.MODEL SMALL .STACK .DATA .CODE .STARTUP .EXIT END
TINYSMALLCOMPACTMEDIUMLARGEHUGEFLAT
TINY 64KB SMALL 64KB
.STACK [] STACK @STACK 1KB
.DATA _DATA @DATA
.CODE [] _TEXT @CODE
.STARTUPDS .STARTUP STARTMOV AX@DATA MOV DSAX START
.EXIT .EXIT4CHDOS MOV AH4CH INT 21H
END END END END END START
///
MOV AX1234H ADD AL-77 CMP AH10010001B
ASCII 'd'= 64H'AB'= 4142H MOV AL 'A' MOV AL 41H
EQU EQU EQU
COUNT EQU 100 DOSCALL EQU MOV CXCOUNT MOV CX100 MOV AH 01H DOSCALL INT 21H
///
(1)+*/MOD ANDORXORNOT
(2)SHLSHR SHL/SHR EQNEGTLTGELE FFFFH 0000H
ADD AX100*4+2 ADD AX402 OR AL3 AND 47H OR AL3 MOV AX1024 SHR 4 MOV AX40H MOV AX1234H GT 1024HMOV AX0FFFFH
DB DW DD DF 3 DQ 4 DT 10
DUP
DUP DUP () X1 DB 3 DUP (12H) X1 DB 12H12H12H
ORG EVEN ALIGN n n $
BYTE/WORD/DWORD (/)NEAR/FAR
OFFSET / SEG /
1 PTR / / THIS BYTE/WORD/DWORDNEAR/FAR
PTRVARW DW 1234H MOV AXWORD PTR VARW AX=1234H MOV BLBYTE PTR VARW BL=34H MOV BHBYTE PTR VARW+1BH=12H MOV WORD PTR [BX]1 MOV BYTE PTR [BX]1
THISMYBYTE EQU THIS BYTE MYWORD DW 1234H MOV AX MYWORD AX=1234H MOV BL MYBYTE BL=34H MYWORD DW 1234H MYBYTE1 EQU BYTE PTR MYWORD MYBYTE2 EQU BYTE PTR MYWORD+1
2TYPE / / //1/2/4 //FF01H/FF02H/FF05H LENGTHOF SIZEOF
TYPE/LENGTHOF/SIZEOFVARW DW 1234H5678H VARD DD 12345678H BUFF DB HELLO MOV AXTYPE VARW AX=2 MOV BXLENGTHOF VARDBX=1 MOV CXSIZEOF BUFF CX=5
CPU
Hello! .MODEL SMALL .STACK .DATA MESSAGE DB HELLO0DH0AH$ .CODE .STARTUP MOV AH09H MOV DXOFFSET MESSAGE INT 21H .EXIT END
2.CODE.STARTUP MOV AX,A1 L1: MOV DX,OFFSET E3 CMP AX,B1 JMP L3 JB L2 L2: MOV DX,OFFSET E2 JZ L1 L3: MOV AH,9 MOV DX,OFFSET E1 INT 21H JMP L3 .EXIT END
DOWHILEDOUNTIL
1 .MODEL SMALL .STACK .DATA W1 DW 533,0A6H,77,A,20,-1 A1 DW ? B1 DW ?
2 .CODE .STARTUP MOV CX,5 JAE L3 LEA BX,W1 MOV DX,[BX+2] MOV AX,[BX] L3: ADD BX,2 MOV DX,[BX] LOOP L1L1: CMP AX,[BX+2] MOV A1,AX JBE L2 MOV B1,DX MOV AX,[BX+2] .EXITL2: CMP DX,[BX+2] END
1 .MODEL SMALL .STACK .DATA S1 DB 'Let us have a try !$' .CODE .STARTUP MOV DX, OFFSET S1 MOV DI, OFFSET S1
2L1: MOV AL,[DI] MOV BH,[SI] CMP AL,'$' CMP BH,'$' JZ L4 JNZ L2 CMP AL,20H JMP L1 JNZ L3 L3: INC DI MOV SI,DI JMP L1 L2: INC SI L4: MOV AH,09 MOV AH,[SI] INT 21H MOV [SI-1],AH .EXIT END
CALL RET RET
CALLIP(CS:IP)CALL ()CALL ()IP(CS:IP)RET
()()
CALL RET
PUSHPOP
A1 .MODEL SMALL .STACK .DATA W1 DW 100 DUP (10) W3 DW ? .CODE .STARTUP LEA BX,W1 MOV CX,LENGTHOF W1 CALL P1 MOV W3,AX .EXIT
A2 P1 PROC NEAR PUSH BX PUSH CX MOV AX,0 L1: ADD AX,[BX] ADD BX,2 LOOP L1 POP CX POP BX RET P1 ENDP END
8088 8088
8088
1AD7AD0Address/Data /8A7A08D7D0
2A15A8Address 8 208A15A8
3A19/S6A16/S3Address/Status /4A19A16S6S3
1ALEAddress Latch Enable ALEAD7AD0A19/S6A16/S3ALE
2
3
4
1INTRInterrupt Request CPUCLIFLAGSIF
2
3NMINon-Maskable Interrupt CPUINTRCPU
1RESET 8088CSFFFFHIP0000H
2CLKClock CPU80885MHzIBM PC/XT80884.77MHz210ns
3VccCPU5V GNDCPU
8088 8088
CPU
RAM(Random Access Memory) ROM(Read Only Memory)
RAMRAM(Static RAM) RAM(Dynamic RAM) MOS
ROMEPROM(Erasable Programmable ROM) EEPROM(Electrically EPROM) (Flash Memory) EEPROM
1()() 2MN MN
SRAM2114
SRAM6264
DRAM4116
DRAM2164
EPROM2716
EPROM2764
EEPROM2817A
EEPROM2864A
CPU
8 8 8 () 8
()
00000H07FFFH0
() ()
74LS13874LS138
E3 E2 E1C B AY7 Y01 0 00 0 0111111100 0 1111111010 1 0111110110 1 1111101111 0 0111011111 0 1110111111 1 0101111111 1 101111111 11111111
() ()
1
2
A19 A15A14 A12A11A01234101010100 0 00 0 10 1 00 1 10101010120000H20FFFH21000H21FFFH22000H22FFFH23000H23FFFH
0
CPU
I/O
I/OCPUI/O I /O
I/O
I/O CPUI/O
I/O
I/O CPUCPU CPU
I/OCPUCPU
I/OI/O
I/OI/O I/O8086/8088 I/O M6800
I/OI/OI/OI/O
I/OI/OI/OI/O
ININ ALi8;IN ALDX; IN AXi8;IN AXDX;
OUTOUT i8AL;OUT DXAL; OUT i8AX;OUT DXAX;
8086/8088I/O8086/8088I/O I/O I/O 16 21665536 0000H~FFFFH
8086/8088I/O00H~FFH256i8 64K DX FFH
8086/8088I/OALAX ALAHALAH
CPU LED
INMOV DX8000HIN ALDXMOV BUFINAL OUTMOV ALBUFOUTMOV DX8000HOUT DXAL
CPU
MOV DX,8000H;DXS1:IN AL,DX ; TEST AL,01H ;D0 JZ S1 ;D0=0 INC DX ;D0=1DX IN AL,DX ;
MOV DX,8000H ;DXS1:IN AL,DX ; TEST AL,80H ;D7 JNZ S1 ;D7=1 INC DX ;D7=0DX MOV AL,BUF ;BUFAL OUT DX,AL ;
CPU CPU
8088 0 4 1 NMI2 INTR
8088FLAGSIF=0TF=0CS:IPCS:IPFLAGS
82538253 8253 8253
82538253316 012
8253
8253
CS A1 A0PC0 0 00040H0 0 11141H0 1 02242H0 1 143H
8253
D7D6D5D4D3D2D1D0 00:0 01:1 10:2 11:00: 01: 10: 11: 000:0 001:1 *10:2 *11:3 100:4 101:50: 1:BCD
8253 0000HFFFFH BCD() 0000H9999H
8253[]110
82530
WR3
CLK
GATE
OUT3210
82530825304H07H 10 880H MOV AL50H OUT 07HAL MOV AL80H OUT 05HAL
82531
WR3
CLK
GATE
OUT3210
82531825304H07H 01 BCD3000 MOV AL23H OUT 07HAL MOV AL30H OUT 04HAL
82532
WR3
CLK
GATE
OUT3213213
82532825304H07H 221234H MOV AL84H OUT 07HAL MOV AL34H OUT 06HAL MOV AL12H OUT 06HAL
82533
WR4
CLK
GATE
OUT43214321
82534
WR3
CLK
GATE
OUT3210
82535
WR3
CLK
GATE
OUT3210
PC82530CLK01.19318MHz MOV AL36H OUT 43HAL MOV AL0 OUT 40HAL OUT 40HAL
PC82531CLK11.19318MHz MOV AL54H OUT 43HAL MOV AL12H OUT 41HAL
PC82532CLK21.19318MHz MOV AL0B6H OUT 43HAL MOV AL33H OUT 42HAL MOV AL05H OUT 42HAL
8253 8253 8253
8255
81632 81632
82558255 3(ABC) 24 3 0 1 2
8255
8255APA0PA70/1/2 BPB0PB70/1 CPC0PC70
8255
CS A1 A0PC0 0 0AA60H0 0 1BB61H0 1 0CC62H0 1 163H1 * *
8255
D7D6D5D4D3D2D1D01 A A I/O C 4 I/O B B I/O C 4 I/O100:0 01:1 1*:20:1:0:1:0:0 1:10:1:0:1:
8255A1B0 C44 10110001B0B1H MOV DX,0FFFEH;0FFFEHMOV AL,0B1H;OUT DX,AL;
8255PCA0 B0 C0 MOV AL ,99H;OUT 63H,AL;
C/
D7D6D5D4D3D2D1D00 0***000:PC0 100:PC4 001:PC1 101:PC5 010:PC2 110:PC6 011:PC3 111:PC70:1:
82551
82552MOV DX,0FFFEH;MOV AL,10000001B;OUT DX,ALMOV AL,00001111BOUT DX,AL;PC71
82553PRNCPROCPUSH AXPUSH DXPRN: MOV DX,0FFFCH;CIN AL,DX;AND AL,04H;(PC20?)JNZ PRN;PC21MOV DX,0FFF8H;PC20MOV AL,AHOUT DX,AL;
82554MOV DX,0FFFEH;MOV AL,00001110B;PC70OUT DX,ALNOPMOV AL,00001111B;PC71OUT DX,ALPOP DXPOP AXRETPRNCENDP
7LEDLEDLED
LED
LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,\ 80H,90H,88H,83H,0C6H,0C1H,86H,8EH MOV BX,1 ; BXMOV AL,LED[BX] ; ALLED[BX]MOV DX,PORT ; OUT DX,AL ;
828
8255 8255