
page 60,132
TITLE 设置光标
;------------------------------------
.MODEL SMALL
;------------------------------------
.DATA
.CODE
MAIN PROC FAR
mov ah,02h ;表求设置光标
mov bh,0 ;页号0
mov dh,08 ;第8行
mov dl,15 ;第15列
int 10h ;调用中断服务
MOV AX,4C00H
INT 21H
MAIN ENDP ;过程结束
END MAIN ;程序结束
page 60,132
TITLE 清除屏幕
;------------------------------------
.MODEL SMALL
;------------------------------------
.DATA
.CODE
MAIN PROC FAR
mov ax,0600h ;AH=06(滚动),AL=00(全屏空白)
mov bh,71h ;白色背景(7),蓝色前景(1)
mov cx,0000h ;左上角行:列
mov dx,184fh ;右下角行:列 (第25行,80列)
int 10h ;调用中断服务
MOV AX,4C00H
INT 21H
MAIN ENDP ;过程结束
END MAIN ;程序结束
page 60,132
TITLE 显示串
;------------------------------------
.MODEL SMALL
;------------------------------------
.DATA
CUS_MSG DB 'Hello World!','$' ;显示串
.CODE
MAIN PROC FAR
mov ax,@data
mov ds,ax
mov ah,09h ;请求显示
lea dx,cus_msg ;装入提示符地址
int 21h ;调用中断服务
MOV AX,4C00H
INT 21H
MAIN ENDP ;过程结束
END MAIN ;程序结束
TITLE A08CTRNM (EXE) ;从键盘接收名字,并在屏幕中央显示名字,并响铃
.MODEL SMALL
.STACK 64
.DATA
PARLIST LABEL BYTE ;名字的参数表
MAXNLEN DB 30 ; 名字的最大长度
ACTULEN DB ? ; 输入的字符数
KBNAME DB 31 DUP(' ') ; 存入名字
PROMPT DB 'Name?','$' ;
;------------------------------------------------
.CODE
.386
A10MAIN PROC FAR
MOV AX,@data
MOV DS,AX
MOV ES,AX
CALL Q10CLEAR ;CLEAR SCREEN
A20:
MOV DX,0000
CALL Q20CURSOR ;SET CURSOR
CALL B10INPUT ;INPUT NAME
CALL Q10CLEAR
CMP ACTULEN,00
JE A30
CALL C10CENTER ;设置响铃和'$'
CALL D10DISPLY ;在中央显示名字
JMP A20
A30:
MOV AX,4C00H
INT 21H
A10MAIN ENDP
; 显示提示符并接收输入的名字
;------------------------------------------------
B10INPUT PROC NEAR
PUSH AX
PUSH DX
MOV AH,09H ;请求显示
LEA DX,PROMPT
INT 21H
MOV AH,0AH ;请求输入
LEA DX,PARLIST
INT 21H
POP DX
POP AX
RET
B10INPUT ENDP
; 设置响铃和'$'定界符,在屏幕中央设置光标
;------------------------------------------------
C10CENTER PROC NEAR
MOVZX BX,ACTULEN
MOV KBNAME[BX],07
MOV KBNAME[BX+1],'$'
MOV DL,ACTULEN
SHR DL,1
NEG DL
ADD DL,40
MOV DH,12
CALL Q20CURSOR
RET
C10CENTER ENDP
; 显示中心位置的名字
;------------------------------------------------
D10DISPLY PROC NEAR
MOV AH,09H
LEA DX,KBNAME
INT 21H
RET
D10DISPLY ENDP
; 清屏并设置属性
;------------------------------------------------
Q10CLEAR PROC NEAR
PUSHA
MOV AX,0600H
MOV BH,30
MOV CX,0000
MOV DX,184FH
INT 10H
POPA
RET
Q10CLEAR ENDP
; 设置光标的行列
;------------------------------------------------
Q20CURSOR PROC NEAR ;DX已输入光标
MOV AH,02H ;请求设置光标
MOV BH,00 ;页号0
INT 10H
RET
Q20CURSOR ENDP
END A10MAIN