东南大学计算机代码,定时中断 源程序代码 东南大学微机实验

本文详细介绍了在BIOS环境下,如何使用汇编语言进行字符显示、延迟处理以及中断服务子程序的设计。通过设置缓冲区、调用延迟函数和显示函数,实现字符在屏幕上的动态显示,并通过中断服务程序控制显示次数和间隔,展示了底层系统编程的基本技巧。

STACK SEGMENT STACK

DW 200H DUP(?) ;设置缓冲区

STACK ENDS

DATA SEGMENT

COUNT DB ?

LOS DB ?

BUF DB "OK"

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK,DS:DATA

DELAY PROC

PUSH CX

PUSH DX

MOV DX,4FFFH

DL500:MOV CX,2801

DL10MS:LOOP DL10MS ;延迟10MS

DEC DX

JNZ DL500

POP DX

POP CX

RET

DELAY ENDP

DISP1 PROC FAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX ;保护现场

MOV AH,15 ;读当前显示器状态,返回当前显示方式至AL

INT 10H

MOV AH,0 ;设置显示方式,即AL

INT 10H

MOV CX,1 ;要显示字符个数

MOV DX,0 ;行号为0,列号为0

REPT:MOV AH,2 ;设置光标位,入口DH=0,DL=0

INT 10H

MOV AL,0DH ;读出音符图形

MOV BL,47H

MOV AH,9 ;在光标位置写字符,即AL,重复CX=1次,红底白色

INT 10H

CALL DELAY

SUB AL,AL

MOV AH,10 ;清除原图形

INT 10H

INC DH ;行号加1

ADD DL,2 ;列号加2

CMP DH,25

JNE REPT ;行号不等于25时,跳转

POP DX

POP CX

POP BX

POP AX ;恢复现场

RET

DISP1 ENDP

DISP2 PROC FAR

PUSH CX

PUSH BX

PUSH AX ;保护现场

MOV CX,3 ;设置“OK!”的长度为3

NEXTC:LODSB ;AL=[SI]

MOV AH,0EH ;写字符AL,并移动光标

MOV BX,06 ;设置颜色

INT 10H

CALL DELAY

LOOP NEXTC

POP AX

POP BX

POP CX ;恢复现场

RET

DISP2 ENDP

LOSINT PROC

PUSH AX

PUSH SI

STI ;允许中断

MOV AX,DATA

MOV DS,AX

INC COUNT

CMP COUNT,30

JNE GO ;中断次数不等于30,则跳转

MOV COUNT,0

MOV SI,OFFSET BUF

CALL DISP2

INC LOS

GO:POP SI

POP AX ;恢复现场

IRET

LOSINT ENDP

START:MOV AX,STACK

MOV SS,AX

MOV AX,DATA

MOV DS,AX

MOV AX,0

MOV ES,AX ;附加段清零

MOV AX,ES:[70H]

PUSH AX

MOV AX,ES:[72H]

PUSH AX

CLI

MOV AX,OFFSET LOSINT

MOV ES:

[70H],AX

MOV AX,SEG LOSINT

MOV ES:[72H],AX

STI

MOV LOS,0

MOV COUNT,0

AGAIN:CALL DISP1

CMP LOS,10 ;如果显示音符次数小于1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值