0
点赞
收藏
分享

微信扫一扫

微机原理-8251实验汇编代码


微机原理-8251实验汇编代码

D8251   EQU     460H    ;2号机改为464H
Z8251 EQU 462H ;2号机改为465H
DATA SEGMENT
MESS DB 'Press any key to send, [!] key to exit ...',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT
STA DW 32 DUP(?)
TOP DW ?
STACK ENDS
CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK
go: MOV AX,DATA
MOV DS,AX
MOV ES,AX
NOP ;INIT 8251 START
LEA DX,MESS
MOV AH,09H
INT 21H
MOV CX,100
LOOP $

MOV DX,Z8251 ;送00
MOV AL,00H
OUT DX,AL
MOV CX,100
LOOP $
MOV DX,Z8251 ;送00
MOV AL,00H
OUT DX,AL
MOV CX,100
LOOP $
MOV DX,Z8251 ;送00
MOV AL,00H
OUT DX,AL
MOV CX,100
LOOP $
MOV DX,Z8251 ;初始化8251
MOV AL,40H
OUT DX,AL
MOV CX,100
LOOP $
MOV AL,0CEH ;设置为8个数据位,两个停止位波特率因子为16
OUT DX,AL ;无奇偶校验位
MOV CX,100
LOOP $
MOV AL,25H ;设为请求发送,允许发送,允许接收状态
OUT DX,AL
MOV CX,100
LOOP $
NOP ;INIT 8251 END
REC: MOV DX,Z8251
MOV AH,02H
WAIT9: IN AL,DX ;有数据送到吗?
AND AL,AH
JZ SEND ;没有数据送到则跳转至发送
MOV DX,D8251 ;有数据送到则从数据缓冲区读入
IN AL,DX
CMP AL,0FFH
JE REC ;可能未上电
MOV DL,AL
MOV AH,02H ;显示在屏幕上
INT 21H
CMP AL,'!'
JE ED ;接收到结束符则返回DOS
JMP REC ;不是结束符则继续接收
ED: MOV AX,4C00H
INT 21H


SEND: MOV CX,10
LOOP $
MOV DX,Z8251
MOV AH,01H
WAIT8: IN AL,DX
AND AL,AH
JZ WAIT8 ;发送缓冲器不空则等待
MOV DL,0FFH
MOV AH,06H
INT 21H
JZ REC ;无键按下则跳回"接收"处
MOV DX,D8251 ;有键按下则发送相应字符
OUT DX,AL
CMP AL,'!' ;是结束字符则返回DOS
JE ED1
JMP REC ;不是结束字符则跳回"接收"处
ED1: MOV AX,4C00H
INT 21H

CODE ENDS
END go


举报

相关推荐

0 条评论