⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy5-2.asm

📁 硬件电路测试参考数据包
💻 ASM
字号:
;       实验五:系统硬中断实验

;       SY5-2.ASM

DATA    SEGMENT
MESS1   DB      'Press any to quit DOS !',0DH,0AH,'$'
MESS2   DB      'A 8259 interrupt, press any to quit DOS !',0DH,0AH,'$'
my1     db 0h
DCTBL   DB      3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h
INTMASK DB      0
CSREG   DW      ?
IPREG   DW      ?
NUM     DW      ?
NUM2    DW      ?
DATA    ENDS

stac    segment para stack 'stack'
db      128 dup(?)
stac    ends

code    segment
assume  cs:code,ss:stac,ds:data,ES:DATA
start:  MOV     AX,00H
	MOV     NUM,AX
	MOV     NUM2,AX
	CLI
	mov     ax,data
	mov     ds,ax
	mov     ax,stac
	mov     ss,ax
	LEA     DX,MESS1
	MOV     AH,09H
	INT     21H
	mov     al,0bh
	mov     ah,35h
	int     21h
	MOV     AX,ES
	MOV     CSREG,AX
	MOV     IPREG,BX
	push    ds
	MOV     AX,CS
	MOV     DS,AX
	mov     dx,offset INTPROC
	MOV     AL,0BH
	MOV     AH,25H
	INT     21H
	pop     ds

	in      al,21h
	and     al,0f7h
	out     21h,al
	sti

LOP1:   NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	CALL    DISP
	MOV     AX,NUM
	CMP     AX,060H
	JNZ     LOP2
	MOV     AX,00H
	MOV     NUM,AX
	MOV     NUM2,AX
LOP2:   NOP
	MOV     DL,0FFH
	MOV     AH,06H
	INT     21H
	JZ      LOP1

	in      al,21h
	or      al,08h
	out     21h,al
	MOV     DX,IPREG
	MOV     AX,CSREG
	MOV     DS,AX
	MOV     AL,0Bh
	MOV     AH,25H
	INT     21H
	STI
	MOV     AX,4C00H
	INT     21H

INTPROC PROC    NEAR
	PUSH    DS
	NOP
	MOV     AX,NUM
	INC     AX
	MOV     NUM,AX
	NOP
	MOV     AL,20H
	OUT     20H,AL
	POP     DS
	IRET
INTPROC ENDP

DISP    PROC    NEAR            
	PUSH    DS
	PUSH    CX
	PUSH    AX

	MOV     CX,NUM
	MOV     AX,CX
	MOV     BX,NUM2
	CMP     AX,BX
	JZ      DISP0
	MOV     AX,DATA
	MOV     DS,AX
	MOV     DX,OFFSET MESS2
	MOV     AH,09H
	INT     21H
	MOV     NUM2,CX

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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -