实验4-1 计数器实验
io8253a equ 283h
io8253b equ 280h
code segment
assume cs:code
start:
;补充编程,设置8253通道0的工作方式,送计数初值为0FH
MOV AL,14H ;设置8253通道0工作方式2,二进制计数
MOV DX,io8253a
OUT DX,AL ;将工作方式送到283H窗口
MOV AL,0FH ;设置初始值0FH
MOV DX,io8253b
OUT DX,AL ;送初始值
lll:
IN AL,DX ;补充编程,读计数初值
call disp ;调显示子程序
push dx ;保护作用
mov ah,06h ;直接控制台的读写功能
mov dl,0ffh ;输入,dl为输入字符的ascii码
int 21h
pop dx
jz lll
mov ah,4ch ;退出
int 21h
disp PROC NEAR ;补充,显示子程序
PUSH DX ;保护作用
AND AL,0FH
MOV DL,AL
CMP DL,9 ;判断是否小于9
JLE NUM ;如果在'0'-'9',跳转到NUM 0--48
ADD DL,7 ;否则为‘A’-'F'加37H a的ASCII码为97 A的ASCII码为65
NUM:
ADD DL,30H
MOV AH,02H ;显示
INT 21H
mov dl,0dh ;加回车符
int 21h
mov dl,0ah ;加换行符
int 21h
pop dx
ret ;子程序返回
disp endp
code ends
end start
实验4-2 定时器实验
io8253a equ 280h
io8253b equ 281h
io8253c equ 283h
code segment
assume cs:code
start:
mov dx,io8253c
mov AL,36h ;设通道0的工作方式为3 00110110
out dx,al ;向8253写控制字
mov ax,1000 ;写入初始值1000
mov dx,io8253a
out dx,al ;写入低字节
mov al,ah
out dx,al ;写入高字节
mov dx,io8253c
mov al, 76h
out dx,al ;设通道1为工作方式3 01110110
mov ax,1000
mov dx,io8253b
out dx,al ;写入低字节
mov al,ah
out dx,al ;写入高字节
mov ah,4ch ;程序退出
int 21h
code ends
end start