汇编实验 固定时间改变背景色及字符位置
2016-05-12 22:25
441 查看
题目:在屏幕上显示一个“*”字符。要求背景颜色不断改变(间隔0.5 秒),且“*”字符可在屏幕上无规则移动(速度0.1 秒)。
用中断来控制时间间隔。写的心好累。。。。然而这个随机数的生成好像根据个人电脑的情况不同,我的电脑好像挺有规律的。。。
用中断来控制时间间隔。写的心好累。。。。然而这个随机数的生成好像根据个人电脑的情况不同,我的电脑好像挺有规律的。。。
RAND MACRO N ;通过中断,获取返回在N内的随机数 MOV AH,0 INT 1AH MOV AX,DX AND AH,3 MOV DL,N DIV DL ;余数存在AH中,即随机数 ENDM STACKSG SEGMENT STACK 'S' DW 64 DUP('ST') STACKSG ENDS DATA SEGMENT CHAR DB '*' ;输出的字符 COUNT DW 1 ;中断调用时间间隔(0.1秒) N DW 1 ;控制屏幕变换时间间隔(0.5秒) COLOR DB 0FH ;上一帧屏幕颜色 DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA , SS:STACKSG MAIN PROC FAR MOV AX, DATA MOV DS, AX MOV ES, AX MOV AH, 0 ;置显示模式为80*25彩色文本方式 MOV AL, 3 INT 10H MOV AH,35H ;取原1CH中断向量 MOV AL,1CH INT 21H PUSH ES ;保存原1CH中断向量 PUSH BX PUSH DS MOV DX,SEG INTERUPT1 MOV DS,DX LEA DX,INTERUPT1 MOV AH,25H ;设置新1CH中断向量 MOV AL,1CH INT 21H POP DS MOV AH, 0 ;等待按任意键 INT 16H EXIT0: POP DX ;恢复1CH中断向量 POP DS MOV AH,25H MOV AL,1CH INT 21H MOV AH,6 ;以黑底白字清屏 MOV AL,0 MOV BH,07H MOV CX,0 MOV DX,184FH INT 10H MOV AX,4C00H ;返回操作系统 INT 21H MAIN ENDP INTERUPT1 PROC FAR ;新1CH中断处理子程序 PUSH AX ;保存寄存器 PUSH BX PUSH CX PUSH DX PUSH DS STI ;开中断 MOV AX,DATA MOV DS,AX DEC COUNT JNZ EXIT STI ;-------------------------------------- MOV AX,N CMP AX,6 JNL CHANGE ;判断是否已到0.5秒的周期,若到则屏幕改变颜色,否则屏幕颜色不变 NOTCHANGE: INC AX MOV N,AX MOV BH,COLOR JMP CONTINUE CHANGE: RAND 8 ;随机数存在AH中 MOV BH,AH MOV CL,4 SAL BH,CL ADD BH,0FH MOV COLOR,BH MOV AX,0 MOV N,AX JMP CONTINUE CONTINUE: MOV AH, 6 ;清全屏 MOV AL, 0 MOV CX, 0 MOV DX, 184FH INT 10H ;设置屏幕颜色 RAND 80 ;光标横坐标 MOV BL,AH RAND 25 ;光标纵坐标 MOV BH,AH MOV DX,BX MOV AH ,2 ;设置光标位置 MOV BH ,0 INT 10H MOV AH , 2 MOV DL , CHAR ;输出字符‘*’ INT 21H ;-------------------------------------- MOV COUNT,2 ;0.1秒计数值重新初始化 EXIT: CLI ;关中断 POP DS POP DX POP CX POP BX POP AX ;恢复寄存器 IRET ;中断返回 INTERUPT1 ENDP CODE ENDS END MAIN
相关文章推荐
- 第八周项目(3)—教职工工资
- Codeforces Round #352 (Div. 2) C
- haroxy hdr
- haroxy hdr
- 布隆过滤器(Bloom Filter)
- 数据库增删改查 4000 之增
- 时间格式化输出
- struts中数据处理
- 安装软件时遇到的一系列问题
- 57-003-1 bootstrap附加导航Affix实现页面的滚动监听
- RHEL7文件权限管理
- perl正则表达式(一)
- CodeForces - 141B Hopscotch (模拟)水
- hdu 4003 Find Metal Mineral 树形DP
- Linux 监控内存,CPU,负载,硬盘等小结
- 杨氏三角 汇编 16位
- PHY芯片 AR8033 学习笔记
- iOS开发封装带有Button的UIView控件,使用代理给button添加点击事件
- UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图
- 【小白成长日记】准备朝着目标前进