超高分求一段汇编语言程序,好可以加分!!!

来源:百度知道 编辑:UC知道 时间:2024/06/01 01:55:15
八回路闪光报警器

1、按实验键,数码管显示E八个发光二极管慢闪指示,有音响长响。
2、按确认键,当前闭合的开关量输入点对应的发光二极管平光亮,无音响。数码管巡回顺序显示闭合的开关量输入点对应的点数号。
3、无实验及确认按键按下时,数码管巡回顺序显示曾闭合的开关量输入点对应的点数号。对应曾闭合的开关量输入点的发光二极管闪烁指示,其中最后闭合对应点发光二极管快闪,其余慢闪,音响断续鸣响。注意系统有记忆功能,只要在确认键松后有开关量闭合过,则灯光及数码管及音响均有反应并一直保持(不管对应输入点是否保持闭合状态),直到下一次按确认键。

状态表:
状态
结果 试验 确认 无键按下
开关量 闭合 断开 闭合 断开
数码管 E 巡回指示 无 巡回指示 无
灯光 闪 长亮 无 闪(最后一点快闪) 无
音响 长响 不响 不响 断续响 不响
如果状态图看不清。见http://img.blog.163.com/photo/k16IXlGsCr4wAhoqNzEsRA==/1174313602837615050.jpg

PUBLIC GENSOUND
CODE SEGMENT PARA ‘CODE’
ASSUME CS:CODE
GENSOUND PROC FAR
PUSH AX ;保存将要用到的寄存器
PUSH BX
PUSH CX PUSH DX
PUSH DI
MOV AL,0B6H;向8253-5/8254-2计数器2写控制字
OUT 43H,AL;方式3、双字节写和二进制计数方式写到控制口
MOV DX,12H;设置被除数
MOV AX,533H*896
DIV DI;其商(AX)为预置值
OUT 42H,AL;先送LSB
MOV AL,AH
OUT 42H,AL;后送MSB
IN AL,61H;读8255端口B(61H)原值
MOV AH,AL;保存端口原值
OR AL,3
OUT 61H,AL;接通扬声器
WAIT1:MOV CX,8FF0H;在80486/DX2/66中取
DELAY:LOOP DELAY;循环次数为8FF0H
DEC BX;循环持续BX次
JNZ WAIT1
MOV AL,AH
OUT 42H,AL;后送MSB
IN AL,61H;读8255端口B(61H)原值
MOV AH,AL;保存端口原值
OR AL,3
OUT 61H,AL;接通扬声器
WAIT1:MOV CX,8FF0H;在80486/DX2/66中取
DELAY:LOOP DELAY;循环次数为8FF0H
DEC BX;循环持续BX次
JNZ WAIT1
MOV AL,AH;写回61H口原值,关闭扬声OUT 61H,AL
POP DI;恢复寄存器
POP DX POP CX
POP BX POP AX
RET ;子程序结束返回
GENSO