关于8086用8253,8259实现定时中断,不知道问题出在哪里

2019-07-18 12:11发布

本帖最后由 小啊小精灵 于 2015-5-13 21:06 编辑


没有执行到中断子程序。
程序如下:
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
cli                  ;中断初始化
mov ax,0
mov es,ax         
mov si,60H*4         ;设置中断向量指针
mov ax,offset int0  
mov es:[si],ax
mov ax,cs            

mov es:[si+2],ax   
                     ;中断初始化完成,开始8259初始化
mov al,00010011b
mov dx,a8259          ;ICW1=0001 0011 B //0100 0001 0000  A0=0,D4=1,CS=0
out dx,al
mov al,060h
mov dx,b8259          ;ICW2=0110 0000 B //0100 0000 0010 A0=1,CS=0   
out dx,al
mov al,1bh             ;ICW4=0001 1011 B //1bh
out dx,al
MOV DX,b8259
MOV AL,00H             ;OCW1,八个中断全部开放
OUT DX,AL
MOV DX,a8259
MOV AL,60H              ;OCW2,非特殊EOI结束中断
OUT DX,AL
                        ;完成8259初始化 ,开始8255初始化
mov dx, Q8255           
mov al, 89h
out dx, al
mov dx, b8255
mov al, 0ffh
out dx, al
mov al, 0fh
out dx, al
mov al, 0ffh
out dx, al
;mov si,offset tempdata   
                          ;完成8255初始化,开始8253初始化
mov al,00110100b          ;计数器0,先读写计数器低字节,后高字节,方式2,二进制计数
mov dx,d8253              
out dx,al
mov ax,2e9ch              ;0010111010011100b
mov dx,a8253
out dx,al
mov al,ah                  ;写入计数初始值
out dx,al
mov al,01010110b          ;计数器1,只读写低字节,方式3,二进制计数
mov dx,d8253
out dx,al
mov ax,100                ;写入计数初始值
mov dx,b8253
out dx,al
sti                     ;开中断
li:     MOV DX,400H
MOV AL,60h           
OUT DX,AL
jmp li
剩下就是int0 proc的程序。


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