资源描述
ess segment
x db 'a'
BUFF DB 'H',15,'e',15,'l',15,'l',15,'o',15,'$'
ess ends
stack segment
db 20 dup(?)
stack ends
DATA segment
KBEsc EQU 1BH
data ends
CODE segment
assume ds:data,es:ess,ss:stack
mov ax,data
mov ds,ax
mov es,ax
mov ss,ax
start:
;.STARTUP
CALL Clear
mov si,9
;again11:
; mov BUFF[si],15
; mov si,1
; jmp again1
;again22:
; mov BUFF[si],15
; MOV SI,9
; jmp again2
again1:
MOV BUFF[si],15 ;把前一次的红色还原
ADD SI,2
.IF SI>9
MOV SI,1
.ENDIF
mov bx,si
jmp show
again2:
mov BUFF[si],15
sub si,2
.if si<1
mov si,9
.ENDIF
.if si==-1
mov si,9
.ENDIF
mov bx,si
jmp show
;MOV BUFF[bx],4 ;把当前字符以红色显示
show:
MOV BH,0
MOV CX,5
MOV DH,5
MOV DL,20 ;显示位置从(5, 20)开始
mov BP,seg BUFF
mov es,bp
mov bp,offset BUFF
mov BUFF[bx],12
;lea bp,BUFF
MOV AL,2
MOV AH,13H
INT 10H ;调用中断10H之功能13H
mov ah,07h
int 21h
cmp al,'1'
je again1
cmp al,'2'
je again2
CMP AL,KBEsc ;若按键不是Escape,则继续循环
je exit
jmp again1
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
INT 10H
RET
Clear ENDP
exit:
mov ah,4ch
int 21h
code ends
end start
展开阅读全文