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

📄 diliver.asm

📁 包含串行通行的收发程序、电子钟、AD、DA转换、LED按键显示等的源代码
💻 ASM
字号:
data segment
file_send db 'd:\diliver.txt',0
handle dw 0 
buffer db 2000 dup(0)
size_send dw 1000
data ends

stack segment stack  'stack'
db 100 dup(0)
stack ends

code segment
    assume cs:code,ds:data,es:data,ss:stack

main proc far
    mov ax,data
    mov ds,ax
    mov es,ax
    lea dx,file_send    ;打开文件,只读方式
    mov al,0
    mov ah,3dh
    int 21h

    mov handle,ax        ;保存文件句柄
    mov bx,ax               ;文件句柄
    
    lea dx,buffer        ;将要发送的文件内容读入发送缓冲区
    mov ah,3fh          ;读文件
    mov cx,size_send
    int 21h
    mov size_send,ax    ;字节数

    mov ah,3eh
    mov bx,handle        ;关闭文件
    int 21h

    mov dx,3fbh        ;8250初始化
    mov al,80h        ;允许波特率访问,将除数锁存
    out dx,al

    mov dx,3f8h        ;写波特率因子LSB
    mov al,80h
    out dx,al
    inc dx            ;dx=3f9写波特率因子MSB
    mov al,01h
    out dx,al

    mov dx,3fbh        ;写线路控制寄存器,允许访问接收数据、发送保持和中段允许寄存器
    mov al,00011010b    ;偶校验,一位停止位,7位数据位
    out dx,al

    inc dx            ;写MODEN控制寄存器,选OUT1
    mov al,00001011b    ;数据端就绪,请求发送,数据终端就绪
    out dx,al
    
    lea si,buffer
    mov cx,size_send
again:     mov al,[si]
    inc si
    mov dx,3f8h
    out dx,al           ;发送保持寄存器

urat:    mov dx,3fdh        ;查询线路状态寄存器,看发送保持寄存器中
                ;的数据是否已送至移位寄存器中
    in al,dx
    test al,00100000b
    jz urat            ;不断检测,当发送寄存器空时,发送下一位
    loop again

    mov al,1ah  ;0001 1010
    mov dx,3f8h
    out dx,al
    
    

    mov ah,4ch
    int 21h

    main endp
code    ends
    end main








⌨️ 快捷键说明

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