实验五 串行通信
一、实验目的
1. 复习8250工作原理及其在串行通信中的应用。 2. 练习使用DOS及BIOS功能调用来编写I/O程序。
二、实验准备
三、实验内容
1. 直接对计算机自带的8250芯片编程,将其设置成1200波特率、8个数据位、1个停止位、奇校验规则、自检方式。用DOS功能调用(INT21H)接收键入字符(需要回显),通过8250以查询方式发送又自己接收并在CRT上显示。直至键入空格(ASCⅡ码为20H)时退回DOS。 助教验收实验流程:键入字符时回显,然后显示通过8250发送并接收的字符,按空格退出。
DATA DATA STACK
枯
原始的源程序清单上要有足够的注释,以备实验中调整修改。
STACK CODE
START:
MOV AX,DATA
MOV DS,AX
;初始化编程,设置波特率为1200 MOV DX,3FBH MOV AL,80H OUT DX,AL MOV DX,3F9H MOV AL,0 OUT DX,AL MOV DX,3F8H
枯
草
无
SEGMENT
ENDS
SEGMENT PARA STACK DB 100 DUP(?)
ENDS
SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK
草
要求整个程序分成几个功能块,例如主功能块、串行接收功能块、键盘管理功能块及串行发送功能块。
主功能块首先检查串口,发现有接收字符则转接收,否则检查键盘,发现有键入字符则调键盘管理,键入的有效字符通过发送功能块送出。每个功能块中要对字符有相应的判断处理(例如出错信息、控制字符等)。
无
1. 复习8250及硬中断的有关知识,复习DOS及BIOS调用有关知识。 2. 按实验要求编写程序流程图及汇编语言源程序。
夏
夏
;线路控制寄存器地址
;DLAB=1,设置写除数标志 ;高位除数寄存器
;低位除数寄存器
MOV OUT
AL,60H DX,AL
;设置自检状态,不用中断
夏
;设置数据格式,数据长8位,1个停止位,奇校验 MOV DX,3FBH MOV AL,0BH OUT DX,AL
WAIT_FOR:
RECEIVE:
CHAR:
MOV DX,3FCH ;MODEM控制寄存器MOV AL,13H ;设置处于自检状态 OUT DX,AL
MOV DX,3F9H ;中断允许寄存器 MOV AL,0 无
;屏蔽全部中断 OUT DX,AL
MOV 草
枯
DX,3FDH ;读线路状态寄存器 IN AL,DX
TEST AL,1EH ;检查出错否 JNZ ERROR ;转出错处理 TEST AL,1
;接收数据就绪否 JNZ RECEIVE ;转接收
TEST AL,20H
;发送器空否 JZ WAIT_FOR ;返回等待
MOV AH,0BH ;检查键盘状态 INT 21H CMP AL,0
JZ WAIT_FOR ;无按键返回等待 MOV AH,01H ;输入单字符并回显 INT 21H
MOV DX,3F8H ;发送 OUT DX,AL
夏
JMP WAIT_FOR
;返回等待
MOV DX,3F8H 无
;读接收数据 IN AL,DX
CMP AL,20H ;是空格否 JNZ CHAR 草
JZ
枯EXIT
PUSH DX
MOV AH,02H ;显示接收字符 MOV DL,AL INT
21H
ERROR:
枯
EXIT:
CODE
MOV IN MOV MOV INT JMP MOV INT ENDS END START
DX,3F8H AL,DX DL,'?' AH,02H 21H
WAIT_FOR AH, 4CH 21H
草
无
2. 将上程序修改成两台计算机之间以查询方式通信,即一方键入的字符在另一个CRT上显示,反之亦然,任何一方键入空格,双方都退出。
助教验收实验流程:在第一台电脑上键入的字符可以显示在第二台电脑的屏幕上,反之亦然;按空格双方都退出。可以两人一组验收,但程序必须每人独立完成。
DATA DATA STACK
SEGMENT
ENDS
SEGMENT PARA STACK
DB 100 DUP(?)
ENDS
SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
MOV AX,DATA
MOV DS, AX
夏
POP
CMP JNZ MOV MOV INT JMP DX
DL,0DH WAIT_FOR DL,0AH AH,02H 21H
WAIT_FOR
;检测回车符
;不是回车符返回等待 ;是回车符则加换行 ;光标换行
;读出错误字符,准备接收后续字符
;显示‘?’
;返回DOS
夏
STACK CODE
;初始化编程,设置波特率为1200 MOV DX, 3FBH MOV AL, 80H OUT DX, AL MOV DX, 3F9H MOV AL, 0 OUT DX, AL MOV DX, 3F8H MOV AL, 60H
枯
草
无
START:
;线路控制寄存器地址 ;DLAB=1,设置写除数标志 ;高位除数寄存器
;低位除数寄存器
OUT
DX, AL
;设置数据格式,数据长8位,1个停止位,奇校验 MOV DX, 3FBH MOV AL, 0BH OUT DX, AL
;设置两台机器通信,不用中断
WAIT_FOR:
SENDDONE:
MOV DX, 3FCH ;MODEM控制寄存器
MOV AL, 03H
;处于两台机器通信的正常方式OUT DX, AL 无
夏
MOV DX, 3F9H ;中断允许寄存器 MOV AL, 0
;屏蔽全部中断
OUT 草
DX, AL
MOV DX, 3FDH
;读线路状态寄存器 IN 枯
AL, DX
TEST AL, 1EH ;检查出错否 JNZ ERROR ;转出错处理 TEST AL, 1 ;接收数据就绪否 JNZ RECEIVE ;转接收 TEST AL, 20H ;发送器空否 JZ WAIT_FOR ;返回等待
MOV AH, 0BH ;检查键盘状态
INT 21H
CMP AL, 0
JZ WAIT_FOR ;无按键返回等待 MOV AH, 01H ;读键盘回显
INT 21H
MOV DX, 3F8H
;发送
OUT DX, AL 夏
无
CMP AL, 20H ;是空格否 JZ SENDDONE
JMP
WAIT_FOR ;返回等待
PUSH DX
MOV DX, 3FDH 草
IN POP AND ;检查发送工作是否结束
CMP 枯
AL, DX DX
AL, 60H AL, 60H JZ EXIT
JMP
SENDDONE
RECEIVE:
CHAR:
枯
PUSH MOV MOV INT POP CMP JNZ MOV MOV INT JMP
无
草
夏
PUSH MOV IN POP CMP JZ JNZ
DX
DX, 3F8H AL, DX DX
AL, 20H EXIT CHAR DX
AH, 02H DL, AL 21H DX
DL, 0DH WAIT_FOR DL, 0AH AH, 02H 21H
WAIT_FOR
;读接收数据
;是空格否
;显示接收字符
;检测回车符
;不是回车符返回等待 ;是回车符则加换行 ;光标换行
ERROR:
EXIT: CODE
助教验收实验流程:在第一台电脑上键入“S”时在第二台电脑的屏幕上显示一串字符(为在第一台电脑上所运行程序中设定好的字符串),在第一台电脑上键入“R”时在这台电脑的屏幕上显示一串字符(为在第二台电脑上所运行程序中设定好的字符串),反之亦然;按空格双方都退出。可以两人一组验收,但程序必须每人独立完成。
DATA DATA STACK
SEGMENT
ENDS
SEGMENT PARA STACK
枯草
3. (选作)监视键盘,若键入字母键“S”则将事先存在数据区中的一个字符串串行传送给对方显示;若键入字母“R”则将对方机器数据区中的一个字符串传送过来在CRT上显示。两个字符串都以′$′为结束符。
无
PUSH DX MOV DX, 3F8H IN AL, DX POP DX MOV DL, '?' MOV AH, 02H INT 21H JMP WAIT_FOR MOV AH, 4CH INT 21H ENDS END START
;读出错误字符,准备接收后续字符
;显示‘?’
夏
;返回DOS
STACK CODE
START:
枯
;初始化编程,设置波特率为1200 MOV DX, 3FBH MOV AL, 80H OUT DX, AL MOV DX, 3F9H MOV AL, 0 OUT DX, AL MOV DX, 3F8H MOV AL, 60H OUT DX, AL
无
草
;设置数据格式,数据长8位,1个停止位,奇校验 MOV DX, 3FBH MOV AL, 0BH OUT DX, AL
;设置两台机器通信,不用中断 MOV DX, 3FCH MOV AL, 03H OUT DX, AL MOV DX, 3F9H MOV AL, 0 OUT DX, AL
WAIT_FOR: PUSH DX MOV DX, 3FDH IN AL, DX POP DX TEST AL, 1EH JNZ ERROR TEST AL, 1 JNZ RECEIVE TEST AL, 20H JZ WAIT_FOR MOV AH, 0BH INT 21H
枯草
无
;读线路状态寄存器
;检查出错否 ;转出错处理 ;接收数据就绪否 ;转接收
;发送器空否 ;返回等待
;检查键盘状态
夏
夏
DB 100 DUP(?) ENDS
SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
MOV AX,DATA
MOV DS, AX
;线路控制寄存器地址 ;DLAB=1,设置写除数标志 ;高位除数寄存器
;低位除数寄存器
;MODEM控制寄存器
;处于两台机器通信的正常方式
;中断允许寄存器 ;屏蔽全部中断
ERROR:
RECEIVE:
CHAR:
JUDGE:
CMP AL, 0 JNZ JUDGE
;判断输入字母 JMP WAIT_FOR
;无按键返回等待
PUSH DX
MOV DX, 3F8H
;读出错误字符,准备接收后续字符
IN AL, DX
POP DX
MOV DL, '?' ;显示‘?’
MOV AH, 02H INT 21H
夏
JMP WAIT_FOR
DX
无
PUSH
MOV DX, 3FDH ;读线路状态寄存器
IN AL, DX POP 草
枯DX
TEST AL, 1 ;接收数据就绪否 JZ RECEIVE ;未就绪继续等待接收
PUSH DX
MOV DX, 3F8H
;读接收数据
IN AL, DX POP DX
CMP AL, 02H ;接收到02H就退出
JZ EXIT JNZ
CHAR
CMP AL, 01H ;接收到01H则将MESS_R传送过去JZ READ
CMP AL, '$' ;到字符串尾则返回等待
JZ WAIT_FOR MOV AH, 02H 夏
MOV DL, AL INT 21H
JMP RECEIVE 无
;显示接收字符
MOV AH, 草
;继续接收字符
08H ;读入键盘但不回显 INT 21H
CMP 枯AL, 'S' ;判断输入是否为S JZ SEND CMP AL, 'R' ;判断输入是否为R JZ DEALR CMP AL, 20H ;判断输入是否为空格
JZ
DONE
DEALR:
DONE:
WAIT_DONE:
SEND:
READ:
WAITSEND:
JMP
WAIT_FOR
;返回等待
PUSH DX
MOV DX, 3FDH
;读线路状态寄存器
IN AL, DX POP DX
TEST AL, 20H
;发送器空否
JZ DEALR MOV AL, 01H 夏
;发送器未空则等待
PUSH DX
;将01H发送给对方,提示对方发送MESS_R
MOV DX, 3F8H OUT DX, AL 无
POP 草
DX JMP
WAIT_FOR
PUSH DX
MOV DX, 3FDH
;读线路状态寄存器
IN 枯
AL, DX POP DX
TEST AL, 20H ;发送器空否
JZ DONE ;发送器未空则等待
PUSH DX
MOV DX, 3F8H
MOV AL, 02H ;将02H发送给对方,提示对方退出DOS
OUT DX, AL POP DX
PUSH DX
MOV DX, 3FDH
;读线路状态寄存器IN AL, DX POP DX 夏
TEST AL, 20H JNZ EXIT JMP
WAIT_DONE 无
;发送器空否
;发送器空则退出 ;发送器未空则等待 草
LEA SI, MESS_S
;获得MESS_S的偏移地址
JMP
WAITSEND
枯 LEA
SI, MESS_R
PUSH DX
MOV DX, 3FDH ;检查数据是否传送完毕
IN
AL, DX
四、实验总结
更加深入的理解了8250的工作原理,掌握了其在串行通信中的应用。 学会使用DOS及BIOS功能调用来编写程序。
枯草
无
夏
枯
草
EXIT:
CODE
无
夏
POP TEST JZ MOV MOV OUT INC CMP JNZ JMP
DX
AL, 20H ;检查发送寄存器是否为空 WAITSEND ;未传送完毕则继续检查
AL, [SI] ;传送字符
DX, 3F8H DX, AL
SI
AL, '$' ;判断是否到字符串尾 WAITSEND ;未到字符串尾则接着发送
WAIT_FOR ; 传送完则重新开始等待输入字符
MOV AH, 4CH ;返回DOS INT 21H ENDS
END START
实验五 串行通信
一、实验目的
1. 复习8250工作原理及其在串行通信中的应用。 2. 练习使用DOS及BIOS功能调用来编写I/O程序。
二、实验准备
三、实验内容
1. 直接对计算机自带的8250芯片编程,将其设置成1200波特率、8个数据位、1个停止位、奇校验规则、自检方式。用DOS功能调用(INT21H)接收键入字符(需要回显),通过8250以查询方式发送又自己接收并在CRT上显示。直至键入空格(ASCⅡ码为20H)时退回DOS。 助教验收实验流程:键入字符时回显,然后显示通过8250发送并接收的字符,按空格退出。
DATA DATA STACK
枯
原始的源程序清单上要有足够的注释,以备实验中调整修改。
STACK CODE
START:
MOV AX,DATA
MOV DS,AX
;初始化编程,设置波特率为1200 MOV DX,3FBH MOV AL,80H OUT DX,AL MOV DX,3F9H MOV AL,0 OUT DX,AL MOV DX,3F8H
枯
草
无
SEGMENT
ENDS
SEGMENT PARA STACK DB 100 DUP(?)
ENDS
SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK
草
要求整个程序分成几个功能块,例如主功能块、串行接收功能块、键盘管理功能块及串行发送功能块。
主功能块首先检查串口,发现有接收字符则转接收,否则检查键盘,发现有键入字符则调键盘管理,键入的有效字符通过发送功能块送出。每个功能块中要对字符有相应的判断处理(例如出错信息、控制字符等)。
无
1. 复习8250及硬中断的有关知识,复习DOS及BIOS调用有关知识。 2. 按实验要求编写程序流程图及汇编语言源程序。
夏
夏
;线路控制寄存器地址
;DLAB=1,设置写除数标志 ;高位除数寄存器
;低位除数寄存器
MOV OUT
AL,60H DX,AL
;设置自检状态,不用中断
夏
;设置数据格式,数据长8位,1个停止位,奇校验 MOV DX,3FBH MOV AL,0BH OUT DX,AL
WAIT_FOR:
RECEIVE:
CHAR:
MOV DX,3FCH ;MODEM控制寄存器MOV AL,13H ;设置处于自检状态 OUT DX,AL
MOV DX,3F9H ;中断允许寄存器 MOV AL,0 无
;屏蔽全部中断 OUT DX,AL
MOV 草
枯
DX,3FDH ;读线路状态寄存器 IN AL,DX
TEST AL,1EH ;检查出错否 JNZ ERROR ;转出错处理 TEST AL,1
;接收数据就绪否 JNZ RECEIVE ;转接收
TEST AL,20H
;发送器空否 JZ WAIT_FOR ;返回等待
MOV AH,0BH ;检查键盘状态 INT 21H CMP AL,0
JZ WAIT_FOR ;无按键返回等待 MOV AH,01H ;输入单字符并回显 INT 21H
MOV DX,3F8H ;发送 OUT DX,AL
夏
JMP WAIT_FOR
;返回等待
MOV DX,3F8H 无
;读接收数据 IN AL,DX
CMP AL,20H ;是空格否 JNZ CHAR 草
JZ
枯EXIT
PUSH DX
MOV AH,02H ;显示接收字符 MOV DL,AL INT
21H
ERROR:
枯
EXIT:
CODE
MOV IN MOV MOV INT JMP MOV INT ENDS END START
DX,3F8H AL,DX DL,'?' AH,02H 21H
WAIT_FOR AH, 4CH 21H
草
无
2. 将上程序修改成两台计算机之间以查询方式通信,即一方键入的字符在另一个CRT上显示,反之亦然,任何一方键入空格,双方都退出。
助教验收实验流程:在第一台电脑上键入的字符可以显示在第二台电脑的屏幕上,反之亦然;按空格双方都退出。可以两人一组验收,但程序必须每人独立完成。
DATA DATA STACK
SEGMENT
ENDS
SEGMENT PARA STACK
DB 100 DUP(?)
ENDS
SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
MOV AX,DATA
MOV DS, AX
夏
POP
CMP JNZ MOV MOV INT JMP DX
DL,0DH WAIT_FOR DL,0AH AH,02H 21H
WAIT_FOR
;检测回车符
;不是回车符返回等待 ;是回车符则加换行 ;光标换行
;读出错误字符,准备接收后续字符
;显示‘?’
;返回DOS
夏
STACK CODE
;初始化编程,设置波特率为1200 MOV DX, 3FBH MOV AL, 80H OUT DX, AL MOV DX, 3F9H MOV AL, 0 OUT DX, AL MOV DX, 3F8H MOV AL, 60H
枯
草
无
START:
;线路控制寄存器地址 ;DLAB=1,设置写除数标志 ;高位除数寄存器
;低位除数寄存器
OUT
DX, AL
;设置数据格式,数据长8位,1个停止位,奇校验 MOV DX, 3FBH MOV AL, 0BH OUT DX, AL
;设置两台机器通信,不用中断
WAIT_FOR:
SENDDONE:
MOV DX, 3FCH ;MODEM控制寄存器
MOV AL, 03H
;处于两台机器通信的正常方式OUT DX, AL 无
夏
MOV DX, 3F9H ;中断允许寄存器 MOV AL, 0
;屏蔽全部中断
OUT 草
DX, AL
MOV DX, 3FDH
;读线路状态寄存器 IN 枯
AL, DX
TEST AL, 1EH ;检查出错否 JNZ ERROR ;转出错处理 TEST AL, 1 ;接收数据就绪否 JNZ RECEIVE ;转接收 TEST AL, 20H ;发送器空否 JZ WAIT_FOR ;返回等待
MOV AH, 0BH ;检查键盘状态
INT 21H
CMP AL, 0
JZ WAIT_FOR ;无按键返回等待 MOV AH, 01H ;读键盘回显
INT 21H
MOV DX, 3F8H
;发送
OUT DX, AL 夏
无
CMP AL, 20H ;是空格否 JZ SENDDONE
JMP
WAIT_FOR ;返回等待
PUSH DX
MOV DX, 3FDH 草
IN POP AND ;检查发送工作是否结束
CMP 枯
AL, DX DX
AL, 60H AL, 60H JZ EXIT
JMP
SENDDONE
RECEIVE:
CHAR:
枯
PUSH MOV MOV INT POP CMP JNZ MOV MOV INT JMP
无
草
夏
PUSH MOV IN POP CMP JZ JNZ
DX
DX, 3F8H AL, DX DX
AL, 20H EXIT CHAR DX
AH, 02H DL, AL 21H DX
DL, 0DH WAIT_FOR DL, 0AH AH, 02H 21H
WAIT_FOR
;读接收数据
;是空格否
;显示接收字符
;检测回车符
;不是回车符返回等待 ;是回车符则加换行 ;光标换行
ERROR:
EXIT: CODE
助教验收实验流程:在第一台电脑上键入“S”时在第二台电脑的屏幕上显示一串字符(为在第一台电脑上所运行程序中设定好的字符串),在第一台电脑上键入“R”时在这台电脑的屏幕上显示一串字符(为在第二台电脑上所运行程序中设定好的字符串),反之亦然;按空格双方都退出。可以两人一组验收,但程序必须每人独立完成。
DATA DATA STACK
SEGMENT
ENDS
SEGMENT PARA STACK
枯草
3. (选作)监视键盘,若键入字母键“S”则将事先存在数据区中的一个字符串串行传送给对方显示;若键入字母“R”则将对方机器数据区中的一个字符串传送过来在CRT上显示。两个字符串都以′$′为结束符。
无
PUSH DX MOV DX, 3F8H IN AL, DX POP DX MOV DL, '?' MOV AH, 02H INT 21H JMP WAIT_FOR MOV AH, 4CH INT 21H ENDS END START
;读出错误字符,准备接收后续字符
;显示‘?’
夏
;返回DOS
STACK CODE
START:
枯
;初始化编程,设置波特率为1200 MOV DX, 3FBH MOV AL, 80H OUT DX, AL MOV DX, 3F9H MOV AL, 0 OUT DX, AL MOV DX, 3F8H MOV AL, 60H OUT DX, AL
无
草
;设置数据格式,数据长8位,1个停止位,奇校验 MOV DX, 3FBH MOV AL, 0BH OUT DX, AL
;设置两台机器通信,不用中断 MOV DX, 3FCH MOV AL, 03H OUT DX, AL MOV DX, 3F9H MOV AL, 0 OUT DX, AL
WAIT_FOR: PUSH DX MOV DX, 3FDH IN AL, DX POP DX TEST AL, 1EH JNZ ERROR TEST AL, 1 JNZ RECEIVE TEST AL, 20H JZ WAIT_FOR MOV AH, 0BH INT 21H
枯草
无
;读线路状态寄存器
;检查出错否 ;转出错处理 ;接收数据就绪否 ;转接收
;发送器空否 ;返回等待
;检查键盘状态
夏
夏
DB 100 DUP(?) ENDS
SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
MOV AX,DATA
MOV DS, AX
;线路控制寄存器地址 ;DLAB=1,设置写除数标志 ;高位除数寄存器
;低位除数寄存器
;MODEM控制寄存器
;处于两台机器通信的正常方式
;中断允许寄存器 ;屏蔽全部中断
ERROR:
RECEIVE:
CHAR:
JUDGE:
CMP AL, 0 JNZ JUDGE
;判断输入字母 JMP WAIT_FOR
;无按键返回等待
PUSH DX
MOV DX, 3F8H
;读出错误字符,准备接收后续字符
IN AL, DX
POP DX
MOV DL, '?' ;显示‘?’
MOV AH, 02H INT 21H
夏
JMP WAIT_FOR
DX
无
PUSH
MOV DX, 3FDH ;读线路状态寄存器
IN AL, DX POP 草
枯DX
TEST AL, 1 ;接收数据就绪否 JZ RECEIVE ;未就绪继续等待接收
PUSH DX
MOV DX, 3F8H
;读接收数据
IN AL, DX POP DX
CMP AL, 02H ;接收到02H就退出
JZ EXIT JNZ
CHAR
CMP AL, 01H ;接收到01H则将MESS_R传送过去JZ READ
CMP AL, '$' ;到字符串尾则返回等待
JZ WAIT_FOR MOV AH, 02H 夏
MOV DL, AL INT 21H
JMP RECEIVE 无
;显示接收字符
MOV AH, 草
;继续接收字符
08H ;读入键盘但不回显 INT 21H
CMP 枯AL, 'S' ;判断输入是否为S JZ SEND CMP AL, 'R' ;判断输入是否为R JZ DEALR CMP AL, 20H ;判断输入是否为空格
JZ
DONE
DEALR:
DONE:
WAIT_DONE:
SEND:
READ:
WAITSEND:
JMP
WAIT_FOR
;返回等待
PUSH DX
MOV DX, 3FDH
;读线路状态寄存器
IN AL, DX POP DX
TEST AL, 20H
;发送器空否
JZ DEALR MOV AL, 01H 夏
;发送器未空则等待
PUSH DX
;将01H发送给对方,提示对方发送MESS_R
MOV DX, 3F8H OUT DX, AL 无
POP 草
DX JMP
WAIT_FOR
PUSH DX
MOV DX, 3FDH
;读线路状态寄存器
IN 枯
AL, DX POP DX
TEST AL, 20H ;发送器空否
JZ DONE ;发送器未空则等待
PUSH DX
MOV DX, 3F8H
MOV AL, 02H ;将02H发送给对方,提示对方退出DOS
OUT DX, AL POP DX
PUSH DX
MOV DX, 3FDH
;读线路状态寄存器IN AL, DX POP DX 夏
TEST AL, 20H JNZ EXIT JMP
WAIT_DONE 无
;发送器空否
;发送器空则退出 ;发送器未空则等待 草
LEA SI, MESS_S
;获得MESS_S的偏移地址
JMP
WAITSEND
枯 LEA
SI, MESS_R
PUSH DX
MOV DX, 3FDH ;检查数据是否传送完毕
IN
AL, DX
四、实验总结
更加深入的理解了8250的工作原理,掌握了其在串行通信中的应用。 学会使用DOS及BIOS功能调用来编写程序。
枯草
无
夏
枯
草
EXIT:
CODE
无
夏
POP TEST JZ MOV MOV OUT INC CMP JNZ JMP
DX
AL, 20H ;检查发送寄存器是否为空 WAITSEND ;未传送完毕则继续检查
AL, [SI] ;传送字符
DX, 3F8H DX, AL
SI
AL, '$' ;判断是否到字符串尾 WAITSEND ;未到字符串尾则接着发送
WAIT_FOR ; 传送完则重新开始等待输入字符
MOV AH, 4CH ;返回DOS INT 21H ENDS
END START