⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcsf.asm

📁 早期开发的PC与ms8051串行通讯程序源码
💻 ASM
字号:
;
;*******pc-接收发送程序****************
;
stack   segment para stack  'stack'             ;
        db      256 dup(0)                      ;设堆栈段
stack   ends
data    segment  para public 'data'
msg     db      10,13,'$'
msg1    db      'one data hasnot received! $'   ;设数据段
        db      256 dup(0)
data    ends
code    segment para public 'code'
start   proc    far
        assume  cs:code,ds:data,es:data
        push    ds
        mov     ax,0                            ;保护原数据段段址
        push    ax
        mov     ax,data
        mov     es,ax                   ;设数据段和附加段偏移地址
        mov     ds,ax
        mov     dx,3fbh     ;使线控寄存器的D7位为1,准备设置波特率
        mov     al,80h
        out     dx,al
        mov     dx,3f8h          ;设置波特率为2400
        mov     al,60h          ;低
        out     dx,al
        mov     dx,3f9h         ;
        mov     al,00h          ;高
        out     dx,al
        mov     dx,3fbh         ;置通信格式为8位数据位,1位停止位
        mov     al,13h          ;偶校
        out     dx,al
        mov     dx,3fch
        mov     al,09h          ;置数据终端准备好信号有效
        out     dx,al
        mov     dx,3f9h         ;禁止所有中断
        mov     al,0
        out     dx,al
mm0:    mov     ah,0bh          ;测试键盘,为1时表示已有键盘按下
        int     21h
        test    al,01h
        jz      mm1             ;无键按下转
        mov     ah,01h          ;显示键名
        int     21h
        mov     ah,al           ;键名送AH保存
        mov     dx,3fdh         ;
mn1:    in      al,dx           ;测试串口
        test    al,20h          ;发送保存寄存器空? 不空等待
        jz      mn1             ;
        test    al,40h          ;发送位移寄存器空? 不空等待
        jz      mn1
        mov     dl,ah
        mov     ah,04h          ;把键名发出去
        int     21h
mm1:    mov     dx,3fdh         ;测试串口
        in      al,dx
        test    al,02h          ;有"数据被冲出错?" 无错则转
        jz      mm2
        mov     dx,offset msg
        mov     ah,09h
        int     21h             ;显示"漏收一个数据"
        mov     dx,offset msg1
        mov     ah,09h          ;DOS功能调用
        int     21h
mm2:    test    al,01h          ;测试串行口,接收到数据否?无则转
        jz      mm0
        mov     ah,03h          ;接收一个数据(即对方送来的键名)
        int     21h
        mov     dl,al
        mov     ah,02h
        int     21h
        jmp     mm0             ;跳转
        ret
start   endp
        code    ends
        end     start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -