📄 接收终端.txt
字号:
;接收方
DATA SEGMENT
MESG DB 'please wait...',0DH,0AH,'$'
TEXT DB 10 DUP(?),0DH,0AH,'$'
;LENS EQU $-TEXT
ERROR DB 0DH,0AH,'8251 BAD! $'
C_8251 EQU 213H ;8251控制口地址
D_8251 EQU 210H ;8251数据口地址
C_8253 EQU 203H ;8253控制口地址
D_8253 EQU 200H ;8253数据口地址
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
CALL I8253 ;8253初始化
CALL I8251 ;8251初始化
LEA DX,MESG
MOV AH,9
INT 21H ;显示please wait...
MOV BX,OFFSET TEXT
MOV CL,10;---------------------
MOV SI,0
RSCAN: MOV DX,C_8251
IN AL,DX ;8251状态字送AL
TEST AL,02H ;RxRDY=1?
JNZ REVETCE ;是,转
DEC SI
JNZ RSCAN
JMP ERR ;超时
REVERCE:MOV DX,D_8251
IN AL,DX
MOV AH,0EH
INT 10H ;屏幕显示
INC BX
DEC CL
JNZ RSCAN
JMP EXIT
ERR: MOV AH,9
MOV DX,OFFSET ERROR
INT 21H
EXIT: MOV AH,4CH
INT 21H
;------------------------------
I8253 PROC ;8253的0号计数器初始化
MOV DX,C_8253
MOV AL,16H ;控制字
OUT DX,AL ;送控制寄存器
MOV DX,D_8253
MOV AL,104 ;计数初值送AL
OUT DX,AL ;写入初值低8位
RET
I8253 ENDP
;---------------------------------
I8251 PROC
MOV CX,3
MOV AL,0
MOV DX,C_8251
AGA: OUT DX,AL ;写入复位命令字
LOOP AGA ;延时
MOV AL,40H
OUT DX,AL
CALL DELAY
MOV DX,C_8251
MOV AL,4EH ;异步16,一个停止位,无校验8位数据
OUT DX,AL ;写入方式选择命令字
MOV AL,13H ;错误标志复位,允许发送接受
OUT DX,AL ;写入工作命令字
RET
I8251 ENDP
;----------------------- ;延时10us
DELAY PROC
MOV AH,86H
MOV CX,0
MOV DX,10
INT 15H
RET
DELAY ENDP
;-------------------------
CODE ENDS
END BEG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -