![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-01 19:39 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,249 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » 汇编语言的求肋 |
| 可打印版本 1,260 / 1 |
| 第1楼 gtx | 发表于 2006-06-07 17:51 |
| 新手上路 发帖 2 积分 8 | |
|
汇编语言的求肋 汇编语言的求肋
我写了段串行通信的代码,在输入时,能顺利编译通过,但是在DEBUG时,输入后,就提错。我搞不清楚错在哪,请高手们帮帮忙!!谢谢!! 代码如下: ;通信子程序 ;初始化:波特率为9600 b/s,发送数据字长为8bit,2位停止位,偶校验,不使用中断方式 ;(接收字符时)入口:无,出口:屏幕显示字符,AH最高位为1时出错 ;(发送字符时)入口:字符从键盘输入,出口:AH最高位为1时出错 ;每次只接收/发送一个字符 ; STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS ; CODE SEGMENT ASSUME CS:CODE,SS:STACK SERIAL: MOV DX,3FBH MOV AL,10000000B ;置DABL=1,允许访问BRD OUT DX,AL MOV DX,3F8H MOV AL,0CH ;波特率为9600 b/s,BRDH=00h,BRDL=0Ch OUT DX,AL ;写BRD MOV DX,3F9H MOV AL,00H OUT DX,AL MOV DX,3FBH MOV AL,00011111B ;写LCR OUT DX,AL MOV AL,0 MOV DX,3F9H ;写IER OUT DX,AL CHECK: MOV DX,3FDH IN AL,DX TEST AL,00011110B ;检查LSR,BI=0?FE=0?PE=0?OE=0? JNZ ERR ;转到出错 TEST AL,01H JNZ RECEI;转到接收 TEST AL,20H JNZ TRANS ;转到发送 ; WAIT ;循环等待 ; JMP CHECK RECEI: MOV DX,3FCH MOV AL,1 ;置DTR=1 OUT DX,AL MOV DX,3FEH IN AL,DX ;检查DSR=1? TEST AL,00100000B JZ ERR MOV DX,3FDH IN AL,DX ;检查DR=1? TEST AL,00000001B JZ ERR MOV DX,3F8H IN AL,DX ;接收并显示 MOV DL,AL MOV AH,2 INT 21H JMP QUIT ;接收完毕,退出 TRANS: MOV DX,3FCH MOV AL,00000011B ;置RST=1,DTR=1 OUT DX,AL MOV DX,3FEH IN AL,DX TEST AL,00110000B ;检查CTS=1?DSR=1? JZ ERR MOV DX,3F8H IN AL,DX TEST AL,00100000B ;检查THRE=1? JZ ERR MOV AH,1 INT 21H MOV DX,3F8H OUT DX,AL JMP QUIT ERR: OR AH,80H ;出错置AH最高位为1 JMP QUIT QUIT: MOV AH,4CH INT 21H ;返回 CODE ENDS END SERIAL 请高手们帮忙完善一下!!!最好能发送多个字符~~~!!! 谢谢高手们~~~~!! 期待…… |
|
| 第2楼 gtx | 发表于 2006-06-08 12:42 |
| 新手上路 发帖 2 积分 8 | |
|
怎么回事,家里的高手哪去了???
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |