首页
社区
课程
招聘
[旧帖] [求助]汇编汇编想说爱你不容易,问题求解 0.00雪花
发表于: 2010-7-13 23:36 1318

[旧帖] [求助]汇编汇编想说爱你不容易,问题求解 0.00雪花

2010-7-13 23:36
1318
用“霓虹灯”的显示方式显示字符串“Hello”,按ESC键时结束程序的运行。

解:我们用显示颜色的变化来模拟霓虹灯的显示方式,即用颜色15(亮白)作为字符的主要显示颜色,再用颜色12(亮红)从左到右逐个扫描。

.MODEL SMALL, C
.DATA
 KBEsc EQU 1BH
 BUFF DB "H", 15, "e", 15, "l", 15, "l", 15, "o", 15
.CODE
Clear PROC Near Uses AX BX CX DX ;清屏幕,并保护所用寄存器
MOV CL, 0
MOV CH, 0
MOV DL, 79
MOV DH, 24 ;(0,0)-(24,79)是屏幕的左上角和右下角 //不明白这两句的作用
MOV BH, 7
MOV AL, 0
MOV AH, 6    //对bh赋值是何用?中断那些功能号该如何记住啊?每一次都查一下好麻烦
INT 10H
RET
Clear ENDP
.STARTUP
CALL Clear
MOV AX, DS
MOV ES, AX
MOV SI, 9
again:
MOV BUFF[SI], 15 ;把前一次的红色还原
ADD SI, 2
.IF  SI > 9
  MOV SI, 1
.ENDIF
MOV BUFF[SI], 12 ;把当前字符以红色显示
MOV BH, 0
MOV CX, 5
MOV DH, 5
MOV DL, 20 ;显示位置从(5, 20)开始    //这两句是怎么控制的?
LEA BP, BUFF
MOV AL, 2
MOV AH, 13H
INT 10H ;调用中断10H之功能13H
MOV AH, 1
INT 16H ;检查是否有按键
JZ again ;若无字符可读,则继续循环
MOV AH, 0
INT 16H
CMP AL, KBEsc
JNZ again ;若按键不是Escape,则继续循环
.EXIT 0
END

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 137
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
Clear PROC Near Uses AX BX CX DX ;清屏幕,并保护所用寄存器
MOV CL, 0
MOV CH, 0
MOV DL, 79
MOV DH, 24 ;(0,0)-(24,79)是屏幕的左上角和右下角 //不明白这两句的作用
MOV BH, 7
MOV AL, 0
MOV AH, 6    //对bh赋值是何用?中断那些功能号该如何记住啊?每一次都查一下好麻烦
INT 10H
RET
Clear ENDP

这段,就是调用INT 10 中断的功能6中断。
这个是参数 
    AL = 上卷行数
  AL =0全屏幕为空白
  BH = 卷入行属性
  CH = 左上角行号
  CL = 左上角列号
  DH = 右下角行号
  DL = 右下角列号,BH=6是什么属性倒是不知道……
********************************************
MOV BUFF[SI], 12 ;把当前字符以红色显示
MOV BH, 0
MOV CX, 5
MOV DH, 5
MOV DL, 20 ;显示位置从(5, 20)开始    //这两句是怎么控制的?
LEA BP, BUFF
MOV AL, 2
MOV AH, 13H
INT 10H ;调用中断10H之功能13H

这段,就是调用INT 10 中断的功能13中断。
这个是参数
    ES:BP = 串地址
  CX = 串长度
  DH, DL = 起始行列
  BH = 页号
  AL = 0,BL = 属性
  串:Char,char,……,char
  AL = 1,BL = 属性
  串:Char,char,……,char
  AL = 2
  串:Char,attr,……,char,attr
  AL = 3
  串:Char,attr,……,char,attr
********************************************
调用INT中断的时候 会先对约定的寄存器赋值,以达到需要效果。
不知道说的对不对,我就当抛砖引玉啦。
反正我是背不出INT中断的,要用的时候么去查的,呵呵
2010-7-14 06:23
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嗯,经你一说,我懂了。
谢谢你详细地解决吖,祝你好运如你昵称:)
2010-7-14 22:07
0
游客
登录 | 注册 方可回帖
返回
//