?? 微機(jī)實(shí)驗(yàn)4.txt
字號(hào):
DATA51 EQU 208H ;8251A DATA PORT
CTRL51 EQU 209H ;8251A COMMAND PORT
TIMER2 EQU 202H ;8253 COUNT 2
TIMCTL EQU 203H ;8253 CTRL PORT
CLK00 EQU 8192 ;8251A CLK 4.77M
BPS00 EQU 1200 ;BPS=1200
FACTOR EQU 16 ;8251A BPS FACTOR=16
DATA SEGMENT
MES1 DB 'NOW YOU CAN PLAY A KEY ON THE CPU_KEYBOARD',0AH,0DH
DB 'IT WILL DISPLAY ON THE TERMINAL_SCREEN!',0AH,0DH
DB 'END WITH !',0AH,0DH,'$'
MES2 DB 'YOU HAVE ALREADY PLAY A KEY:',0AH,0DH,'$'
DATA ENDS
stack segment para stack 'stack'
db 100(?)
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
INIT51 PROC NEAR
MOV DX,CTRL51
XOR AX,AX
MOV CX,3
LL: CALL CHAROUT
LOOP LL
MOV AL,40H
CALL CHAROUT
MOV AL,4EH
CALL CHAROUT
MOV AL,27H
CALL CHAROUT
RET
CHAROUT:OUT DX,AL
PUSH CX
MOV CX,2
GG: LOOP GG
pop cx
RET
INIT51 ENDP
SET_BPS PROC NEAR
MOV DX,0
MOV AX,CLK00
MOV BX,1000
MUL BX
MOV BX,BPS00
DIV BX
MOV DX,0
MOV BX,FACTOR
DIV BX
MOV BX,AX
MOV DX,TIMCTL
MOV AL,0B6H
OUT DX,AL
MOV DX,TIMER2
MOV AX,BX
OUT DX,AL
MOV AL,AH
OUT DX,AL
RET
SET_BPS ENDP
MAIN PROC NEAR
START:
CALL SET_BPS
CALL INIT51
MOV AX,DATA
MOV DS,AX
LEA DX,MES1
MOV AH,9
INT 21H
M0: MOV AH,1
INT 21H
MOV BL,AL
M1: MOV DX,CTRL51
IN AL,DX
TEST AL,1
JZ M1
MOV DX,DATA51
MOV AL,BL
OUT DX,AL
NEXT: MOV DX,CTRL51
IN AL,DX
TEST AL,2
JZ NEXT
MOV DX,DATA51
IN AL,DX
INC AL
MOV DL,AL
MOV AH,2
INT 21H
DEC AL
CMP AL,'!'
JNZ M0
OVER: MOV AX,4C00H
INT 21H
CODE ENDS
END START
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -