principle and application of microcomputer 微 机 原 理 与 应 用
DESCRIPTION
YSU. Principle and Application of Microcomputer 微 机 原 理 与 应 用. 教 师:田 行 斌 单 位:机 电 系. 学习内容. 微型计算机系统概述 微处理器指令系统 汇编语言程序设计 微处理器外部特性 半导体存储器系统 基本输入输出接口. 学习目的. 了解微型计算机的硬件知识 掌握汇编语言程序设计方法 掌握微机基本接口应用方法. 第一章 微型计算机系统概述. 微型计算机的发展 微型计算机系统组成 计算机中的数据表示. 微型计算机的发展. 第1代: 4位微机。CPU:4004 - PowerPoint PPT PresentationTRANSCRIPT
-
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:
- AX MOV AXV1 ;V1 CMP AXV2 ;V2 JBE NEXT ;V1
-
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
- 1.MODEL SMALL.STACK.DATA A1 DW 9676H B1 DW 6769H E1 DB A>B, $ E2 DB A
-
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