?? require.txt
字號:
CODE SEGMENT
ASSUME CS: CODE
START:
;初始化波特率除數寄存器
MOV DX , 3FBH ;指向線路控制寄存器
MOV AL , 80H ;位7置1
OUT DX , AL ;發送此字節
MOV DX , 3F9H ;指向波特率除數的最高有效位
MOV AL , 0 ; 1200 BPS對應的最高有效位
OUT DX , AL ;發送此字節
DEC DX ;指向波特率除數的最低有效位
MOV AL , 60H ; 1200 BPS對應的最低有效位
OUT DX , AL ;發送此字節
;初始化線路控制寄存器:
MOV AL , 1BH ;數據長度為8位 , 1個奇偶校驗位 , 偶校驗 , 1個停止位
MOV DX , 3FBH ;指向線路控制寄存器
OUT DX , AL ;發送此字節
;初始化中斷允許寄存器
MOV DX , 3F9H ;指向中斷允許寄存器
MOV AL , 0 ;禁止所有中斷
OUT DX , AL ;發送字節
READ: ;線路狀態檢測循環
MOV DX , 3FDH ;指向線路狀態寄存器
IN AL , DX ;取狀態字節
TEST AL , 1EH ;檢查錯誤
JNZ ERROR ;若出錯則轉錯誤處理例程
TEST AL , 01H ;測試是否已收到數據
JNZ RECEIVE ;轉接收例程
TEST AL , 20H ;測試是否可以發送字符
JNZ SEND ;若是轉發送例程
JMP READ ;循環檢測
SEND: ;發送字符(來自鍵盤):
MOV AH , 1 ;BIOS功能用以檢測是否有字符可讀
INT 16H ;BIOS鍵盤中斷
JZ READ ;若無擊鍵則返回循環
MOV AH , 0 ;BIOS功能用于取擊鍵碼
INT 16H ;擊鍵碼現在AL中
CMP AL , 03H ;檢測CTRL+C
JZ EXIT ;若是 , 轉EXIT處結束程序
MOV DX , 3F8H ;指向發送保持寄存器
OUT DX , AL ;發送字符
JMP READ ;返回循環
RECEIVE: ;接收數據(在屏幕上顯示):
MOV DX , 3F8H ;接收數據寄存器
IN AL , DX ;取新收到的字符
CMP AL , 03H ;檢測CTRL+C
JZ EXIT ;若是 , 轉EXIT處結束程序
MOV DL , AL ;準備顯示字符
MOV AH , 2 ;用于顯示字符的DOS中斷
INT 21H ;顯示字符
CMP AL , 0DH ;判斷剛才收到的字符是否為回車
JNZ READ ;不是,轉線路檢測循環
MOV DL , 0AH ;若是,則加顯示一個換行符
MOV AH , 2
INT 21H
JMP READ ;返回線路檢測循環
ERROR: ;出錯處理,顯示一個提示
PUSH CS
POP DS
MOV DX , OFFSET ERROR_MESSAGE
MOV AH , 9
INT 21H
EXIT: ;程序退出
MOV AH , 4CH
INT 21H
ERROR_MESSAGE DB 0AH , 'ERROR!$' ;定義出錯時顯示的提示
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -