asm视频与键盘处理入门
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