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

📄 pc.asm

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 ASM
字号:
Stack           Segment para stack 'stack'
                db      256 dup(0)
Stack           ends
Code            Segment para public 'code'
;START           proc  far
                assume cs:code,ss:stack
                PUSH  DS                ;标准序
                MOV AX,0
                PUSH  AX
                CLI
INITOUT:        MOV  DX,3FBH	;通讯线控制寄存器第七位置1(DLAB=1),以便设置波特率
                MOV  AL,80H
                OUT  DX,AL
                MOV DX,3F8H	;设置除数锁存器低位
                MOV AL,30H
                OUT DX,AL
                MOV DX,3F9H	;设置除数锁存器高位
                MOV AL,0
                OUT DX,AL
                MOV DX,3FBH	;设定数据格式,8个数据位,一个停止位,无校验
                MOV AL,03H
                OUT DX,AL
		MOV DX,3FCH	;设置moden控制信号 
		MOV AL,03H
		OUT DX,AL
                MOV DX,3F9H    ;;禁止所有8250中断(四种类型)
                MOV AL,0
                OUT DX,AL
FOREVER:        MOV DX,3FDH     ;;发送保持寄存器不空则循环等待
                IN AL,DX
                TEST AL,20H
                JZ FOREVER
WAIT1:          MOV AH,1        ;;检测键盘缓冲区,无字符则循环等待
                INT 16H
                JZ WAIT1
                MOV AH,0        ;;若有,取键盘字符
                INT 16H
SENDCHAR:       MOV DX,3F8H     ;;发送键入的字符
                OUT DX,AL
RECEIVE:        MOV DX,3FDH     ;;检查接收数据是否准备好,未准备好继续查询
                IN AL,DX
                TEST AL,01H
                JZ RECEIVE
                TEST AL,1AH     ;;判接收到的数据是否出错,有错则转错误处理
                JNZ ERROR
                MOV DX,3F8H     ;;从接收寄存器中读起数据
                IN AL,DX
                AND AL,7FH      ;;去了无效位,得到数据
                PUSH AX
                MOV BX,0        ;;显示接收到的字符
                MOV AH,14
                INT 10H
                POP AX
                CMP AL,0DH
                JNZ FOREVER
                MOV AL,0AH      ;;得到的数据若不是回车符则返回
                MOV BX,0
                MOV AH,14
                INT 10H
                JMP FOREVER
ERROR:          MOV DX,3F8H     ;;读接收寄存器,清除错误字符
                IN AL,DX
                MOV AL,'?'	;功能调用,显示"?"号
                MOV BX,0
                MOV AH,14
                INT 10H
                JMP FOREVER	;继续循环
;START           ENDS
CODE            ENDS
                END

⌨️ 快捷键说明

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