8259A中断控制器的应用,帮我看一下代码有问题吗,还有硬件应该怎么连线

实验内容
用8259A的输出作为中断请求信号使8259A产生中断,进入中断后显示一个字符串。中断请求通过8259的IRQ3端输入,中断源要求是8253定时器输出的脉冲,并把8253的OUT0和总线槽IRQ3连接好.
编写程序,要求每次主机响应外部中断IRQ3时,显示字符串“THIS IS A 8259A INTERRUPT!”(或其它串),中断十次后,程序退出。

data segment
io8253a equ 280h
io8253b equ 281h
io8253c equ 283h

mess db 'THIS IS A 8259A INTERRUPT!',0dh,0ah,'$'

data ends
code segment
assume cs:code,ds:data
start:

mov ax,cs
mov ds,ax
;此处输入代码段代码

       mov dx,io8253c         ;向8253写控制字
        mov al,36h               ;使0通道为工作方式3
        out dx,al
        mov ax,1000          ;写入循环计数初值1000
        mov dx,io8253a
        out dx,al                ;先写入低字节
        mov al,ah
        out dx,al                ;后写入高字节


 mov dx,offset int3  ;设置0BH号中断向量
  mov ax,250bh
  int 21h


    cli                ;关中断
    in al,21h          ;读中断屏蔽寄存器
    and al,0f7h             
    out 21h,al             ;写IMR,开放IRQ3中断
    mov cx,10               ;记中断循环次数为10次
    sti                    ;开中断

ll: jmp ll

int3 proc ;中断服务程序
mov ax,data
mov ds,ax
mov dx,offset mess
mov ah,09 ;显示每次中断的提示信息
int 21h
mov al,20h ;发出EOI结束中断(写入ocw2)
out 20h,al

    sub cx,1      ;计数器减1

    jnz next       ;转去执行中断返回       

    in al,21h
    or al,08h                ;关闭IRQ3中断
    out 21h,al
    sti                     ;开中断


MOV AH,4CH
INT 21H

next: iret
int3 endp

CODE ENDS
END START