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

📄 t16550-1.asm

📁 A1.asm 显示程序实验 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT USE16 MES1 DB
💻 ASM
字号:
;T16550-1.asm
;16550串行通讯基础实验

;****************根据查看端口资源修改下列符号值*******************
IOY0         EQU   9C00H          ;片选IOY0对应的端口始地址
;*****************************************************************
MY16550_0    EQU   IOY0+00H*4     ;16550数据缓冲寄存器端口地址
MY16550_1    EQU   IOY0+01H*4     ;16550中断允许寄存器端口地址
MY16550_3    EQU   IOY0+03H*4     ;16550线路控制寄存器端口地址

STACK1 SEGMENT STACK
        DW 256 DUP(?)
STACK1 ENDS

CODE SEGMENT
        ASSUME CS:CODE

START: MOV DX,MY16550_3           ;设置16550线路控制寄存器
       MOV AL,80H                 ;准备设置波特率除数寄存器
       OUT DX,AL

       MOV DX,MY16550_0           ;设置除数寄存器低字节0CH  
       MOV AL,0CH                 ;000C对应9600 bit/s
       OUT DX,AL            
                            
       MOV DX,MY16550_1           ;设置除数寄存器高字节00H
       MOV AL,00H
       OUT DX,AL
       
       MOV DX,MY16550_3           ;设置线路控制寄存器,初始化数据格式
       MOV AL,1BH                 ;偶校验,1位停止位,字符宽度为8
       OUT DX,AL
             
       MOV DX,MY16550_1           ;设置中断允许寄存器
       MOV AL,00H                 ;中断不打开
       OUT DX,AL

SEND:  MOV DX,MY16550_0           ;向发送缓冲寄存器写数
       MOV AL,55H
       OUT DX,AL         
       CALL DALLY

       MOV AH,1                   ;判断是否有按键按下
       INT 16H
       JZ  SEND                   ;无按键则跳回继续等待,有则退出

QUIT:  MOV AX,4C00H               ;结束程序退出
       INT 21H

DALLY PROC NEAR                   ;软件延时子程序
       PUSH CX
       PUSH AX
       MOV CX,0100H
D1:    MOV AX,1000H
D2:    DEC AX
       JNZ D2
       LOOP D1
       POP AX
       POP CX
       RET
DALLY ENDP

CODE ENDS
     END START

⌨️ 快捷键说明

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