本帖最后由 小啊小精灵 于 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
s
ti ;开中断
li: MOV DX,400H
MOV AL,60h
OUT DX,AL
jmp li
剩下就是int0 proc的程序。
-
8086!汇编!我声明哈!我的自我说明中没有8086!我不懂汇编!一直没研究过!
希望有朋友帮帮她,我也学学!
一周热门 更多>