foxprn
;sptp.asm
;此程序为foxbase的一个图形函数
;使用LQ 1600K 作图形打印
;图形格式:Super Star.
;将SPT图形先左右翻转,再旋转90度,最后反白显示,即可打出正常的图形
.model tiny
.code
org 00h
start:
jmp bg
file db 50 dup(0)
wth dw 0
lenth dw 0
handle dw 0
mdv db 0
hdv db 0
npos dw 0
buff db 3 dup(0)
bg:
_cts proc far
push cs
pop es
mov si,bx
lea di,file
mov cx,50
cld
repz movsb
;从Foxbase环境的with 参
;数中得到文件名
xor si,si
push cs
pop ds
mov ah,3dh
mov al,0;只读
lea dx,file
int 21h;打开文件
mov handle,ax
;保存文件句柄
mov ah,42h
mov al,0
mov bx,handle
xor cx,cx
mov dx,22h
int 21h
;设置当前文件位置
mov ah,3fh
mov bx,handle
mov cx,2
lea dx,wth
int 21h
;读入图形的宽度
mov ah,42h
mov al,0
mov bx,handle
xor cx,cx
mov dx,24h
int 21h
;设置当前文件位置
mov ah,3fh
mov bx,handle
mov cx,2
lea dx,lenth
int 21h
;读入图形的高度
mov ah,42h
mov al,0
mov bx,handle
xor cx,cx
mov dx,40h
int 21h
;设置当前文件位置
xor dx,dx
mov ax,lenth
mov bx,256
div bx
mov mdv,dl;余数
mov hdv,al;商
xor dx,dx
mov ax,wth
mov bx,8
div bx
sub ax,3
mov npos,ax;商
mov ah,1
xor dx,dx
int 17h
print_bytes:
xor dx,dx
mov ax,wth
mov bx,24
div bx
mov bp,ax;行数
rpt:
mov bx,lenth;列数
mov ah,0
;调用DOS的打印功能
mov al,1bh;换码代码
xor dx,dx
int 17h
;发送这个码
xor ah,ah
mov al,2ah
;图形方式码
int 17h
xor ah,ah
mov al,39
;设定三倍密度24针
int 17h
xor ah,ah
mov al,mdv;列数(余数)
int 17h
xor ah,ah
mov al,hdv;(商)
int 17h
pt:
push bx
mov ah,3fh
mov bx,handle
mov cx,3
lea dx,buff
;读入三个字节的内容
int 21h
mov ah,42h
mov al,1
mov bx,handle
xor cx,cx
mov dx,npos
int 21h
;设置新位置
mov ah,0
mov al,buff
xor dx,dx
int 17h
xor ah,ah
mov al,buff+1
int 17h
xor ah,ah
mov al,buff+2
int 17h
pop bx
dec bx
jnz pt
xor ah,ah
mov al,1bh
int 17h
xor ah,ah
mov al,4ah
int 17h
xor ah,ah
mov al,24
int 17h;换行
xor ah,ah
mov al,13
int 17h;回车
mov ah,42h
mov al,0
mov bx,handle
xor cx,cx
mov dx,40h
add si,3
add dx,si
int 21h
;设置当前文件位置
dec bp
jz cont2
jmp far ptr rpt
cont2:
mov ah,3eh
mov bx,handle
int 21h;关闭文件
ret
_cts endp
ends
end start
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !