principle and application of microcomputer 微 机 原 理 与 应 用

Click here to load reader

Upload: kaz

Post on 11-Jan-2016

254 views

Category:

Documents


18 download

DESCRIPTION

YSU. Principle and Application of Microcomputer 微 机 原 理 与 应 用. 教 师:田 行 斌 单 位:机 电 系. 学习内容. 微型计算机系统概述 微处理器指令系统 汇编语言程序设计 微处理器外部特性 半导体存储器系统 基本输入输出接口. 学习目的. 了解微型计算机的硬件知识 掌握汇编语言程序设计方法 掌握微机基本接口应用方法. 第一章 微型计算机系统概述. 微型计算机的发展 微型计算机系统组成 计算机中的数据表示. 微型计算机的发展. 第1代: 4位微机。CPU:4004 - PowerPoint PPT Presentation

TRANSCRIPT

  • 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