📄 发送前台.txt
字号:
;发送方
DATA SEGMENT
MESG DB 'CE SHI DIAN WEN...',0DH,0AH,'$'
TEXT DB 10,0,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初始化
MOV AH,9
MOV DX,OFFSET MESG
INT 21H
LEA DX,TEXT
MOV AH,0AH
INT 21H
MOV CH,10 ;电文个数送ch-------------------------------------
AGAIN: MOV CL,TEXT+1 ;一行电文的字符数送cl
MOV BX,OFFSET TEXT ;电文首字符偏移地址送BX
TSCAN: MOV DX,C_8251
IN AL,DX ;8251状态字送AL
TEST AL,01H ;TxRDY=1?
JZ TSCAN ;否,转
SEND: MOV AL,[BX+2]
MOV DX,D_8251
OUT DX,AL ;发送数据
DEC CH
INC BX
JNZ AGAIN
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 + -