⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pccom2.asm

📁 汇编程序
💻 ASM
字号:
; FILENAME:
; 内容: 微机串口通信功能综合检测
DISP	MACRO    VAR
      	MOV   AH, 9
       	MOV   DX, OFFSET VAR
       	INT   21H
       	ENDM
DATA  	SEGMENT
TEXT 	DB 'THE QUICK BROWN FOX JUMPS OVER LAZY DOG',0DH,0AH
LLL  	EQU $-TEXT
MESG1	DB  0DH,0AH
      	DB  '(1)  TEST COM1  (2)  TEST COM2  (3)  TEST END $'
MESG2 	DB  0DH,0AH
       	DB  '(1)   INTERNAL LOOP  (2)  EXTERNAL LOOP  $'
MESG3 	DB  0DH,0AH,'$'
ERROR 	DB  'COM BAD !',0DH,0AH,'$'
XF8   	DW 	?
XFC   	DW 	?
XFD   	DW 	?
COM   	DW 	?
MODE  	DB 	?
DATA  	ENDS
CODE  	SEGMENT
       	ASSUME	CS: CODE, DS: DATA
BEG:  	MOV	 AX, DATA
       	MOV DS, AX
LAST1:	DISP MESG1              	;显示操作信息
       	MOV  AH, 1
       	INT  21H               		;等待键入
       	CMP  AL,'1'
       	JE 	 NEXT1             	; 转测主串口,转(这种说法比较随意,应写明转去执行哪个程序。).
       	CMP  AL, '2'
    	JE 	 NEXT2             	; 转测辅串口,转
       	CMP	  AL, '3'
       	JNE  LAST1
       	JMP  EXIT              		;测试结束,转退出
NEXT1:	MOV  XF8,3F8H
       	MOV  XFC, 3FCH
       	MOV  XFD, 3FDH
       	MOV  COM, 0
       	MOV  ERROR+3, '1'
       	JMP  NEXT3
NEXT2:	MOV  XF8,2F8H
       	MOV  XFC, 2FCH
       	MOV  XFD, 2FDH
       	MOV  COM, 1
       	MOV  ERROR+3, '2'
NEXT3:	DISP MESG2              	;显示操作信息
       	MOV  AH, 1
	INT	 21H 			;等待键入
       	CMP  AL,'1'
       	JE  NEXT4               	; 转内环测试,转
       	CMP  AL,'2'
       	JE  NEXT5               	; 转外环测试,转
       	JMP NEXT3
NEXT4:	MOV MODE, 00010000B   		;内环控制字→MODE单元
       	JMP NEXT6
NEXT5:	MOV MODE, 00000000B     	;正常通信控制字→MODE单元
NEXT6:	DISP  MESG3
       	CALL I8250              	;串口初始化
       	MOV  CH,10            		;电文行数→CH
AGAIN:	MOV  CL, LLL            	;电文长度→CL
       	MOV  BX, OFFSET TEXT   		;首字符偏移地址→BX
SCANT:	MOV  DX, XFD
       	IN   AL, DX
       	TEST AL,20H           		;发送保持寄存器空闲?
       	JZ  SCANT             		;是,转等待键盘输入
       	MOV  DX, XF8
       	MOV  AL, [BX]           	;取数据→AL
       	OUT  DX,AL             		;发送一个数据
       	MOV  SI,0                	;计数值→SI
SCANR:	MOV  DX, XFD
       	IN   AL, DX
       	TEST  AL,01H        		;接收数据准备好?
       	JNZ   RECEIVE          		;是,转接收数据
      	DEC   SI                	;减1计数
       	JNE   SCANR
       	JMP ERR                   	;超时,转出错处理
RECEIVE:        
MOV  DX, XF8
       	IN   AL,DX              	;接收1个数据→AL
       	MOV  AH, 0EH
      	INT  10H               		;屏幕显示
       	INC  BX
       	DEC  CL                		;电文长度计数
       	JNZ  SCANT
       	DEC  CH                  	;行计数
       	JNZ  AGAIN
       	JMP  LAST1
ERR: 	DISP  ERROR            		;显示出错信息
       	JMP  BEG
EXIT: 	MOV  AH, 4CH
       	INT  21H
I8250 	PROC
       	MOV  AX, 00C7H       		;波特率4800
       	MOV  DX,COM           		;无校验,8位数据
       	INT  14H
       	MOV  DX, XFC
       	MOV  AL, MODE
     	OUT DX, AL             		;写MODEM控制字
       	RET
I8250  ENDP
CODE  	ENDS
      	END  BEG

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -