sy4-3.asm

来自「硬件电路测试参考数据包」· 汇编 代码 · 共 131 行

ASM
131
字号
;       实验四  8253定时/计数器实验

;       SY4-2.ASM

TIM_CTL EQU     293H
TIMER0  EQU     290H
TIMER1  EQU     291H
TIMER2  EQU     292H
MODE20  EQU     10010000B
NUM0    EQU     060H

DATA    SEGMENT
MESS2   DB      '8253A TIMER2 IN MODE0! COUNT=0FEH',0DH,0AH
	DB      'PRESS ANY KEY quit TO DOS !',0DH,0AH,'$'
DCTBL   DB      3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h
NUM     DW      ?
DATA    ENDS

STAC    SEGMENT PARA STACK 'STACK'
STA     DB      50 DUP(?)
TOP     EQU     LENGTH STA
STAC    ENDS

CODE    SEGMENT
MAIN    PROC    FAR
ASSUME  CS:CODE,DS:DATA
START:  NOP
	MOV     AX,NUM0
	MOV     NUM,AX
	MOV     AX,DATA
	MOV     DS,AX
	MOV     AX,STAC
	MOV     SS,AX
	MOV     AX,TOP
	MOV     SP,AX
	MOV     DX,OFFSET MESS2
	MOV     AH,09
	INT     21H
	CLI
	MOV     DX,TIM_CTL
	MOV     AL,MODE20
	OUT     DX,AL
	MOV     DX,TIMER2
	MOV     AX,NUM0
	OUT     DX,AL
	STI

LOP1:   MOV     DX,TIMER2
	IN      AL,DX
	MOV     AH,00H
	MOV     NUM,AX
	CALL    DISP
	MOV     AX,NUM
	CMP     AX,00H
	JNZ     LOP2
	MOV     AX,NUM0
	MOV     NUM,AX
LOP2:   NOP
	MOV     DL,0FFH
	MOV     AH,06H
	INT     21H
	JZ      LOP1

	MOV     AX,4C00H
	INT     21H
	RET
MAIN    ENDP

DISP    PROC    NEAR            
	PUSH    DS
	PUSH    CX
	PUSH    AX

DISP0:  MOV     CX,NUM
	MOV     AX,CX
	AND     AL,0FH
	MOV     AH,AL
	MOV     AL,CL
	MOV     CL,04H
	SHR     AL,CL
	MOV     CH,AL
	MOV     CL,AH

DISPL:  mov     dx,288h
	mov     al,02h
	out     dx,al
	mov     dx,284h
	mov     al,cl
	mov     ah,0
	lea     bx,dctbl
	mov     si,ax
	mov     al,[bx+si]
	out     dx,al
	CALL    DELAY1
DISPH:  mov     dx,288h
	mov     al,01h
	out     dx,al
	mov     dx,284h
	mov     al,ch
	mov     ah,0
	lea     bx,dctbl
	mov     si,ax
	mov     al,[si+bx]
	out     dx,al
	CALL    DELAY1
	POP     AX
	POP     CX
	POP     DS
	RET
DISP    ENDP

DELAY1  PROC    NEAR
	PUSH    CX
	MOV     CX,0F00H
	LOOP    $
	POP     CX
	RET
DELAY1  ENDP
DELAY2  PROC    NEAR
	PUSH    AX
	PUSH    CX
	MOV     CX,030H
DL21:   CALL    DELAY1
	LOOP    DL21
	POP     CX
	POP     AX
	RET
DELAY2  ENDP
CODE    ENDS
	END     START

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?