新人求问下面关于8259的proteus仿真程序实现了什么功能

2019-07-18 10:05发布

proteus截图: 数码管的输出可以改变吗?怎么改变?程序实现了什么功能?

代码:
    ORG       100H
   CT8255SET  EQU       86H         ;CPU-8255控制寄存器
       PORTA  EQU       80H         ;8086 A1接8255 A0;A2 接 A1; A3,A4,A5控制片选 ,A7控制E门
       PORTB  EQU       82H
       PORTC  EQU       84H
      CTAIBO  EQU       90H         ;A IN, B OUT

;8259地址 ,设置奇偶地址
CT8259_EVEN  EQU       88H         ;片选A3=1.100010A0 ;A1负责奇偶地址
  CT8259_ODD  EQU       8AH

;----SET 8255-------------------------------------------
              MOV       DX,CT8255SET            ;pc to  8255 control byte;设置8255工作方式
              MOV       AL,CTAIBO   ;control byte addr
              OUT       DX,AL


              MOV       AL,10
              MOV       BX,OFFSET LED
              XLATB
              MOV       DX,PORTB
              OUT       DX,AL
   ;-----------------------------------------------------

;--------------------------------
;设置8259
              MOV       AL,13H
              MOV       DX, CT8259_EVEN         ;ICW1 偶地址 ;单片;边缘触发方式
              OUT       DX,AL

              MOV       AL, 80H
              MOV       DX,CT8259_ODD           ; ICW2 基地址;设置中断号80-87H
              OUT       DX,AL

              MOV       AL, 03H
              OUT       DX,AL       ;定义ICW4,非级联,非缓冲   ,自动EOI

        ;定义OCW2 中断嵌套方式
              MOV       AL,00000000B
              MOV       DX, CT8259_EVEN         ;OCW2 普通EOI方式
              OUT       DX,AL
       
       
;----------------------------------------------
              Sti
;----------------------------------------------
       ;25h, 设置中断向量
      ; 把由AL指定的中断类型的中断向量DS:DX放在中断向量表中
        ;预置:AH=25H
         ; AL=中断类型号
         ; DS:DX=中断向量
        ;执行:INT 21H  
              PUSH      DS          ;调用21H中断的25H子功能
              MOV       AX ,SEG INT80          ;取基地址
              MOV       DS ,AX
              MOV       DX ,OFFSET INT80        ;取偏移地址
              MOV       AH ,25H
              MOV       AL ,80H
              INT       21H
              POP       DS
;------------------------------------------------------      
              PUSH      DS          ;调用21H中断的25H子功能
              MOV       AX ,SEG INT81
              MOV       DS ,AX
              MOV       DX ,OFFSET INT81
              MOV       AH ,25H
              MOV       AL ,81H
              INT       21H
              POP       DS
;------------------------------------------------------  
              PUSH      DS          ;调用21H中断的25H子功能
              MOV       AX ,SEG INT82
              MOV       DS ,AX
              MOV       DX ,OFFSET INT82
              MOV       AH ,25H
              MOV       AL ,82H
              INT       21H
              POP       DS
         G1:

     ;-------------
              PUSH      CX
              MOV       CX,40H      ;延时
      DELAY:  LOOP      DELAY
              POP       CX
;-------------------
      ; MOV DX,PORTB
      ; OUT DX,AL

              JMP       G1

              HLT

         LED  DB        3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H         ;////共阴数码管段码表,0-9,A-F
;中断
;-----------------------------------------------

       INT80  PROC                  ;INT 18H
              PUSH      AX
              PUSH      DX

              MOV       DX,CT8255SET            ;pc to  8255 control byte;设置8255工作方式
              MOV       AL,CTAIBO   ;control byte addr
              OUT       DX,AL

              MOV       AL,1
              MOV       BX,OFFSET LED
              XLATB
              MOV       DX,PORTB
              OUT       DX,AL

              POP       DX
              POP       AX

              IRET
       INT80  ENDP
    ;------------------------------------------------
       INT81  PROC
              PUSH      AX
              PUSH      DX
              MOV       DX,CT8255SET            ;pc to  8255 control byte;设置8255工作方式
              MOV       AL,CTAIBO   ;control byte addr
              OUT       DX,AL

              MOV       AL,2
              MOV       BX,OFFSET LED

              XLATB
              MOV       DX,PORTB
              OUT       DX,AL

              POP       DX
              POP       AX
              IRET
       INT81  ENDP

    ;------------------------------------------------
       INT82  PROC
              PUSH      AX
              PUSH      DX

              MOV       DX,CT8255SET            ;pc to  8255 control byte;设置8255工作方式
              MOV       AL,CTAIBO   ;control byte addr
              OUT       DX,AL
           
              MOV       AL,3
              MOV       BX,OFFSET LED

              XLATB
              MOV       DX,PORTB
              OUT       DX,AL

              POP       DX
              POP       AX
              IRET
    ;------------------------------------------------
       INT82  ENDP
              RET





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。