大二(下)マイクロマシンとインタフェース技術テストマイクロマシンシステムシリアルポート
8211 ワード
実験名称:試験マイクロマシンシステムシリアルポート(実験教程P 109実験6.10、参考教科書341ページ例9.3)実験環境:PCシリーズ機、アセンブリ言語開発ツールTASM 5.0または将来のアセンブリ実験の目的:アセンブリ言語プログラム設計の方法を学ぶ;8250非同期シリアルインタフェースチップの動作原理を把握する.シリアル通信プログラムの設計を把握する.実験内容:ハードウェアテスト環境を完了する. プログラミングプログラムはマイクロマシンシステムのシリアルポートに対して自発的に自収外リングテストを行う.送信はクエリー方式を採用し、受信は中断方式を採用する. データ送信キーボードから入力し、データ画面表示を受信します.実験手順: は実験内容に基づいてシステム本体ケースの後のRS-232 Cポートの送信と受信端子を短絡する. アセンブリツールを用いてシリアル通信プログラムの実行可能プログラムを作成し、生成する. プログラムキーボードを実行して送信する文字を入力し、表示内容を観察する. プログラムの実行状況に応じて、論理エラーがなく、実験要求に合致するまでソースプログラムを改善する.
.586
DATA SEGMENT USE16
OLD0B DD ?
FLAG DB 0
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
CLI ;
CALL I8250 ;
CALL I8259 ; 8259A
CALL RD0B ;
CALL WR0B ;
STI ;
SCANT: CMP FLAG,-1
JE RETURN
MOV DX,2FDH
IN AL,DX
TEST AL,20H ;
JZ SCANT
MOV AH,1
INT 16H
JZ SCANT
MOV AH,0
INT 16H
AND AL,7FH
MOV DX,2F8H
OUT DX,AL
CMP AL,1BH
JNE SCANT
TWAIT: MOV DX,2F8H
IN AL,DX
TEST AL,40H
JZ TWAIT
RETURN: CALL RESET
MOV AH,4CH
INT 21H
RECEIVE PROC ; 'ESC'
PUSH AX
PUSH DX
PUSH DS
MOV AX,DATA
MOV DS,AX
MOV DX,2F8H
IN AL,DX
AND AL,7FH
CMP AL,1BH
JE NEXT
MOV AH,2
MOV DL,AL
INT 21H
JMP EXIT
NEXT: MOV FLAG,-1
EXIT: MOV AL,20H ;
OUT 20H,AL
POP DS
POP DX
POP AX
IRET
RECEIVE ENDP
I8250 PROC ; , 3FBH 2FBH
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 ;D3 = 1
IN AL,21H
AND AL,11110111B
OUT 21H,AL
RET
I8259 ENDP
RD0B PROC ; OLD0C OLD0B
MOV AX,350BH
INT 21H
MOV WORD PTR OLD0B,BX
MOV WORD PTR OLD0B+2,ES
RET
RD0B ENDP
WR0B PROC ; WR0C WR0B 250BH
PUSH DS
MOV AX,CODE
MOV DS,AX
MOV DX,OFFSET RECEIVE
MOV AX,250BH
INT 21H
POP DS
RET
WR0B ENDP
RESET PROC ;
IN AL,21H
OR AL,00001000B
OUT 21H,AL
MOV AX,250BH
MOV DX,WORD PTR OLD0B
MOV DS,WORD PTR OLD0B+2
INT 21H
RET
RESET ENDP
CODE ENDS
END BEG