📄 8251.asm
字号:
code segment
assume cs:code
CONTROLPORT EQU 51H
DATAPORT EQU 50H
DATA EQU 600H
ORG 1000H
START:
call FORMAT
call LEDDISP
;初始化
out CONTROLPORT,00H ;空操作
mov al,40H
out CONTROLPORT,al ;内部复位
NOP
mov al,01001110B
out CONTROLPORT,al ;异步1停止位,无校验,8位字符长度,波特率因子16
mov al,00110111B
out CONTROLPORT,al ;RTS,ER,RxE,DTR,TxEN均设置为1
;发送数据55H
LOOP1:
in al,CONTROLPORT
and al,01H ;检查是否能发送
JZ LOOP1
mov al,55H
out DATAPORT,al ;输出数据
jmp LOOP1 ;循环发送
RET
;显示8251---1
LEDDISP:
MOV AL,90H
MOV DX,00DFH
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1:
CMP BYTE PTR DS:[0600H],07H
JA LED2
mov bl,ds:[0600H]
mov bh,0h
MOV AL,ds:[BX+DATA]
MOV DX,00DEH
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
;格式化8251---1
FORMAT:
MOV BX,0
MOV WORD PTR DS:[BX+0600H],4006H ;'8251---1'
ADD BX,2
MOV WORD PTR DS:[BX+0600H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0600H],6D06H
ADD BX,2
MOV WORD PTR DS:[BX+0600H],7F5BH
RET
code ends
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -