您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>汇编编程>

foxprn

大小:2 人气: 2010-02-25 需要积分:0
lotusp的空间

用户级别:注册会员

贡献文章:

贡献资料:

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

非常好我支持^.^

(1) 100%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!