📄 pccom1.asm
字号:
;FILENAME: PCCOM1.ASM
; 内容:微机串口通信内环自检
DATA SEGMENT
TEXT DB 'THE QUICK BROWN FOX JUMPS OVER LAZY DOG', 0DH, 0AH
LLL EQU $-TEXT
ERROR DB 'COM2 BAD !', 0DH, 0AH, '$'
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
BEG: MOV AX, DATA
MOV DS, AX
CALL I8250 ;辅串口初始化
AGAIN: MOV CX, LLL ;电文长度→CX
MOV BX, OFFSET TEXT
SCANT: MOV AH, 1
INT 16H
JNZ EXIT ;有键入,转退出
MOV DX, 2FDH
IN AL,DX
TEST AL,20H ;发送保持寄存器空闲?
JZ SCANT ;否,转输入检查
MOV DX, 2F8H
MOV AL, [BX] ;取数据
OUT DX,AL ;发送一个数据
MOV SI, 0
SCANR: MOV DX, 2FDH
IN AL, DX
TEST AL,1 ;接收数据准备好?
JNZ RECEIVE ;是,转接收数据
DEC SI
JNZ SCANR
JMP DISPERR ;有故障,转显示错误
RECEIVE:
MOV DX, 2F8H
IN AL,DX ;接收一个数据
MOV AH, 2
MOV DL, AL
INT 21H ;送屏幕显示
INC BX
LOOP SCANT ;电文长度计数
JMP AGAIN
DISPERR:
MOV AH, 9
MOV DX, OFFSET ERROR
INT 21H ;显示出错信息
EXIT: MOV AH, 4CH
INT 21H ;返回DOS
I8250 PROC
MOV AX, 00C7H ;波特率4800
MOV DX,1 ;无校验,8位数
INT 14H
MOV DX, 2FCH
MOV AL, 00010000B
OUT DX,AL ;自检方式
RET
I8250 ENDP
CODE ENDS
END BEG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -