06_01.asm

来自「计算机原理作业6。压缩包里面有.asm,.exe文件」· 汇编 代码 · 共 72 行

ASM
72
字号
NAME	EX06_01
DATA	SEGMENT
MESS1	DB	'ERROR!',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,13H
	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	;出错否(为什么不是0EH?)
	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	;读入字符
	CMP	AL,20H
	JZ	FINISH	;遇空格结束
	MOV	DX,3F8H
	OUT	DX,AL	;发送字符
	JMP	WTING	;返回等待
RECEIVE:	MOV	DX,3F8H
	IN	AL,DX
	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 + =
减小字号Ctrl + -
显示快捷键?