📄 06_03.asm
字号:
NAME EX06_03
DATA SEGMENT
MESS1 DB 'ERROR!',13,10,'$'
MESS2 DB 'Hi!',13,10,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
;建立用户数据段
START: MOV AX,DATA
MOV DS,AX
;8250初始化,波特率1200,数据位8,停止位1,奇校验,正常。
MOV AL,80H
MOV DX,3FBH ;(查?)
OUT DX,AL ;赋DLAB=1
MOV AX,60H ;波特率2400
MOV DX,3F8H
OUT DX,AL
MOV AL,AH
MOV DX,3F9H
OUT DX,AL ;赋除数寄存器
MOV AL,0BH
MOV DX,3FBH
OUT DX,AL ;数据位、停止位、校验
MOV AL,03H
MOV DX,3FCH
OUT DX,AL ;正常方式(OUT1,OUT2,RTS,DTR?!!)
MOV AL,0
MOV DX,3F9H
OUT DX,AL ;操作方式查询,屏蔽全部中断
;查询方式接收字符
WTING: MOV DX,3FDH
IN AL,DX
TEST AL,1EH ;出错否
JNZ ERROR ;若出错
TEST AL,01H ;接收数据就绪否
JNZ RECEIVE ;若就绪
TEST AL,20H ;发送器空否
JZ WTING ;若不空
;发送器空
MOV AH,0BH
INT 21H ;检查键盘状态
CMP AL,00H
JZ WTING ;无输入,等待
;有输入
MOV AH,01H
INT 21H ;读入字符
MOV DX,3F8H
OUT DX,AL ;发送字符
JMP WTING ;返回等待
RECEIVE: MOV DX,3F8H
IN AL,DX
CMP AL,20H
JZ FINISH
CMP AL,'S'
JZ OUTMESS
CMP AL,'R'
JZ INMESS
MOV DL,AL
MOV AH,02H
INT 21H
JMP WTING
ERROR: MOV DX,3F8H
IN AL,DX
LEA DX,MESS1
MOV AH,9
INT 21H
JMP WTING
FINISH: MOV AH,4CH
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -