📄 diliver.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 + -