マイクロマシン実験--シリアル通信(内輪自発自収)

1248 ワード

//テーマ:マイクロマシンシステムシリアルポートの知識を運用し、マイクロマシンシステムシリアルポートのテストを行う.ハードウェアテスト環境を完了します.プログラムを作成してマイクロマシンシステムのシリアルポートに対して自発的に自収する内環テストを行う.データ送信はキーボードから入力し、受信データは画面に表示されます.
多くないBB、直接コードに行きます
.586
DATA SEGMENT USE16
BUF DB 30 DUP(?)
DATA ENDS

CODE SEGMENT USE16
    ASSUME CS:CODE, DS:DATA
START:
    MOV AX, DATA
    MOV DS, AX
    CALL I8250			; 8250  
    MOV BX, OFFSET BUF
SEND:MOV DX, 3FDH
	IN AL, DX
	TEST AL, 20H
	JZ SEND
    MOV DX, 3F8H
    MOV AH, 1
    INT 21H
    CMP AL, '$'
    JZ COUT
    OUT DX, AL
RECE:MOV DX, 3FDH
	IN AL, DX
	TEST AL, 01H
	JZ RECE				;  
	MOV DX, 3F8H
	IN AL, DX
	AND AL, 01111111B
	CMP AL, 03H
	JZ EXIT
	MOV [BX], AL
	INC BX
	JMP SEND
	
COUT:MOV AH, 2
    MOV DL, 0AH
    INT 21H				;  
    MOV BYTE PTR [BX+1], '$'
	MOV AH, 09H
	MOV DX, OFFSET BUF
	INT 21H			 	;  
	
EXIT:MOV AH,4CH
    INT 21H				;  
    
I8250 PROC
    MOV DX, 3FBH
    MOV AL, 80H
    OUT DX, AL
    MOV DX, 3F9H
    MOV AL, 0
    OUT DX, AL
    MOV DX, 3F8H
    MOV AL, 30H
    OUT DX, AL
    MOV DX, 3FBH
    MOV AL, 0AH
    OUT DX, AL
    MOV DX, 3F9H
    MOV AL, 0
    OUT DX, AL
    MOV DX, 3FCH
    MOV AL, 10H
    OUT DX, AL
    RET			
I8250 ENDP
    
CODE ENDS
    END START

入力サンプル123$出力サンプル123