📄 jkzzbb.asm
字号:
assume cs:code
code segment public
org 100h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>初始化8253
start:cli
mov dx,04a6h ;控制寄存器
mov ax,36h ;计数器0,方式3
out dx,ax
mov dx,04a0h
mov ax,6000
out dx,al
mov al,ah
out dx,al ;计数值1s
mov dx,04a6h
mov ax,76h
out dx,al
mov dx,04a2h
mov ax,2000
out dx,al
mov al,ah
out dx,al
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>初始化8259
start1:mov dx,04b0h
mov ax,13h
out dx,ax ; ICW4 NEEDED
mov dx,04b2h
mov ax,80h
out dx,ax ;ICW2 中断类型80h
mov ax,01h;
out dx,ax ;ICW4
mov ax,00h
out dx,ax ;OCW1, 开放所有中断
nop ;以上为8259初始化
mov ax,0
mov ds,ax
mov di,200h ;初始化中断向量表
mov ax,offset int0
mov ds:[di],ax
add di,2
mov ds:[di],100h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>主程序
main: mov ax,0100h
mov ds,ax
start2: mov dx, 04d6h ;初始化8255
mov al, 81h
out dx, al
sti
mov dx,04d4h
mov al,0
out dx,al
push cx
mov cx,2000
lop1:loop lop1
pop cx
mov dx,04c0h ;开启AD
mov ax,34h
out dx,al
mov si,offset buff ;
mov di,offset LED
mov ah,0f7h
mov cx,3
again: mov dx,04d0h
mov al,ah
out dx,al
rol ah,1
push bx
mov bx,0
mov bl,[si]
mov dx,04d2h
mov al,[di+bx]
push si
cmp si,offset buff
jnz then
cmp byte ptr[si],0eh
jz then
or al,80h
then: pop si
pop bx
out dx,al
push cx
mov cx,400
lop:loop lop
pop cx
inc si
loop again
jmp start2
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>中断程序
int0:cli
mov dx,04c0h
mov ax,34h
out dx,al
mov dx, 04d4h ;读EOC的值
wait: in al,dx
and al,1
cmp al,1
jnz wait
mov al,80h
out dx,al
mov dx,04c0h
in al,dx
mov dx,04e0h ;DA转换并显示
out dx,al
mov dx,04e2h
out dx,al
mov si,offset buff ; 数据处理
and ah,0
mov bx,100
mul bx
mov bx,51
div bx
mov bl,100
div bl
mov [si],al
inc si
mov bl,10
mov al,ah
and ah,0
div bl
mov [si],al
inc si
mov [si],ah
mov dx,04b0h
mov al,20h
out dx,al
iret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>数据段定义
buff db 0eh,4h,07h
KEY: db 0,1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh
LED: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -