南邮微机实验 串行口的测试(查询发送,中断接收)

在查询方式的基础上,设计查询发送,中断方式接收的串行通信自发自收方式测试。

.586
DATA SEGMENT USE16
MESG DB 'HELLO'
LENS EQU $-MESG
OLD0B DD ?
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA 
BEG:   MOV AX,DATA
	   MOV DS,AX
	   CLI                        ;关中断
	   CALL I8250
	   CALL I8259
	   CALL RD0B                  ;读中断向量
	   CALL WR0B 				  ;写中断向量
	   STI                        ;开中断
	   
	   MOV BX,OFFSET MESG
	   MOV CX,LENS

SCANT: MOV DX,2FDH
	   IN AL,DX
	   TEST AL,20H
	   JZ SCANT
	   
	   MOV DX,2F8H
	   MOV AL,[BX]
	   OUT DX,AL
	   INC BX
	   MOV EDX,0
SINEXT:DEC EDX
	   JNZ SINEXT
	   LOOP SCANT	   
	   
RETURN:CALL RESET
	   MOV AH,4CH
	   INT 21H   
	   
RECEIVE PROC
	   PUSH AX
	   PUSH DX
	   PUSH DS
	   MOV AX,DATA
	   MOV DS,AX
	   MOV DX,2F8H
	   IN AL,DX
	   AND AL,7FH
	   MOV AH,2
	   MOV DL,AL
	   INT 21H
	   JMP EXIT	   
EXIT:  MOV AL,20H      ;中断结束命令
	   OUT 20H,AL
	   POP DS
	   POP DX
	   POP AX
	   IRET
RECEIVE ENDP

I8250 PROC
	   MOV DX,2FBH
	   MOV AL,80H
	   OUT DX,AL
	   MOV DX,2F9H
	   MOV AL,0
	   OUT DX,AL
	   MOV DX,2F8H
	   MOV AL,60H
	   OUT DX,AL
	   MOV DX,2FBH
	   MOV AL,03H
	   OUT DX,AL
	   MOV DX,2F9H
	   MOV AL,01H
	   OUT DX,AL
	   MOV DX,2FCH
	   MOV AL,08H
	   OUT DX,AL
	   RET
I8250 ENDP

I8259 PROC
	   IN AL,21H
	   AND AL,11101111B
	   OUT 21H,AL
	   RET
I8259 ENDP

RD0B PROC 
	   MOV AX,350CH
	   INT 21H
	   MOV WORD PTR OLD0B,BX
	   MOV WORD PTR OLD0B+2,ES
	   RET
RD0B ENDP

WR0B PROC
	   PUSH DS
	   MOV AX,CODE
	   MOV DS,AX
	   MOV DX,OFFSET RECEIVE
	   MOV AX,250CH
	   INT 21H
	   POP DS
	   RET
WR0B ENDP

RESET PROC
	   IN AL,21H
	   OR AL,00010000B
	   OUT 21H,AL
	   MOV AX,250CH
	   MOV DX,WORD PTR OLD0B
	   MOV DS,WORD PTR OLD0B+2
	   INT 21H
	   RET
RESET ENDP
CODE ENDS
	END BEG	      	   	   	   	    


  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值