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