ASSUME CS:CODES
CODES SEGMENT
START:
MOV AH,3;功能号
MOV AL,01000010B;前景色,背景色的颜色设置
MOV BX,0B800H
MOV ES,BX
MOV DI,0
MOV SI,0
MOV CX,2000
PRINT:
MOV BYTE PTR ES:[DI],CL
MOV ES:[DI+1],00100100B
ADD DI,2
INC SI
LOOP PRINT
CALL SETSCREEN
MOV AH,4CH
INT 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SetScreen:
;JMP SHORT SET
;TABLE DW SUB1,SUB2,SUB3,SUB4
;SET:
;PUSH BX ;000F
;CMP AH,3
;JA SRET;0013 0b
;
;MOV BL,AH
;MOV BH,0
;ADD BX,BX
;CALL WORD PTR TABLE[BX];001c
;SRET:
;POP BX
;RET
;;;;;方法二
SetScreen:
CMP AH,0
JE DO1
CMP AH,1
JE DO2
CMP AH,2
JE DO3
CMP AH,3
JE DO4
JMP SHORT SRET
DO1:
CALL SUB1
JMP SHORT SRET
DO2:
CALL SUB2
JMP SHORT SRET
DO3:
CALL SUB3
JMP SHORT SRET
DO4:
CALL SUB4
SRET:
RET
;清屏:将显存中当前屏幕中的字符设为空格符
SUB1:
PUSH BX
PUSH CX
PUSH ES
MOV BX,0B800H
MOV ES,BX
MOV BX,0
MOV CX,2000;25行*80个字符
SetNull:
MOV BYTE PTR ES:[BX],' '
ADD BX,2
LOOP SetNull
POP ES
POP CX
POP BX
RET
;设置前景色:设置显存中处于奇地址的属性字节的第0,1,2位
SUB2:
PUSH BX
PUSH CX
PUSH ES
;;;;
MOV BX,0B800H
MOV ES,BX
MOV BX,1
MOV CX,2000
SETFRONTCLR:
AND BYTE PTR ES:[BX],10001111B
OR ES:[BX],AL
ADD BX,2
LOOP SETFRONTCLR
POP ES
POP CX
POP BX
RET
;;;;;
;设置背景色:设置显存中当前屏幕中处于奇地址的第4,5,6位
SUB3:
PUSH BX
PUSH CX
PUSH ES
MOV BX,0B800H
MOV ES,BX
MOV BX,1
MOV CX,2000
SETBKCLR:
AND BYTE PTR ES:[BX],10001111B
OR ES:[BX],AL
ADD BX,2
LOOP SETBKCLR
POP ES
POP CX
POP BX
RET
;向上滚动一行:一次将第N+1行的内容复制到第N行处;最后一行为空
SUB4:
PUSH CX
PUSH SI
PUSH DI
PUSH ES
PUSH DS
MOV SI,0B800H
MOV ES,SI
MOV DS,SI
MOV SI,160
MOV DI,0
CLD
MOV CX,24;一共复制24行
ROLLABV:
PUSH CX
MOV CX,160;每行80个字符,一个字符占2个字节
REP MOVSB
POP CX
LOOP ROLLABV
MOV CX,80
MOV SI,0
ROLLLST:
MOV BYTE PTR [160*24+SI],' '
ADD SI,2
LOOP ROLLLST
POP DS
POP ES
POP DI
POP SI
POP CX
RET
CODES ENDS
END START
- [tomato] MOV BX,0B800H MOV ES,BX MOV 04/17 15:26
- [游客] 程序有问题,你的返回指令处 MOV AH,4C 这条指令丢了H了,所以数据就不对了。 04/15 11:28
- [游客] 结论正确。第一题的原因是? 04/15 11:20
- [游客] 回答OK。 04/15 10:24
- [游客] 没问题。想显示完全年份的话,可以搜搜博客中的文章,有提到的。 04/15 10:10
- [游客] 理解OK。 04/15 09:00
- [bslg123] 支持一下! 04/13 10:01
- [caroline0712] 3ks 已经改正 04/08 15:18
- [crazyman] 监测点16.2第二个空不对。仔细看看assume关联。 04/07 21:25
- [caroline0712] ;数值显示 改进版()显示部分的改进) ;将DATA中的数据以十进制显示; ;将二进制信息存储 03/30 15:47