| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1164 人关注过本帖
标题:请教一个汇编程序
只看楼主 加入收藏
一二三四
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-12-2
收藏
 问题点数:0 回复次数:2 
请教一个汇编程序
刚学汇编,还只学了理论,对汇编一点不熟悉。现在需要编程一个自发自收的程序,在网站的资料里有找到传送接收的程序,但这个程序在我的电脑上不知道为什么运行是不对的。想请教一下是为什么,还是说因为是笔记本电脑,没有串口,就是不行。但是从我的设备管理器上显示的是有COM1口的啊
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

[[it] 本帖最后由 一二三四 于 2008-12-10 21:00 编辑 [/it]]
搜索更多相关主题的帖子: 汇编程序 
2008-12-09 17:22
一二三四
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-12-2
收藏
得分:0 
拜托大家了
2008-12-09 22:32
shinetime
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-11
收藏
得分:0 
随,是你吗?哈哈
2008-12-11 14:32
快速回复:请教一个汇编程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011818 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved