{
asm push es
asm push di
asm mov ax,4f03h
asm int 10h
pi112:
asm cmp bx,112h
asm jnz pi115
asm mov dx,640
asm jmp write_24t
pi115:
asm cmp bx,115h
asm jnz pi118
asm mov dx,800
asm jmp write_24t
pi118:
asm cmp bx,118h
asm jnz Tr_exit
asm mov dx,1024
write_24t:
asm mov ax,0a000h
asm mov es,ax
asm mov ax,y
asm mul dx
asm mov bx,ax
asm mov cx,dx
asm add ax,bx
asm adc dx,cx
asm add ax,bx
asm adc dx,cx
asm add ax,bx
asm adc dx,cx
asm mov bx,x
asm add bx,x
asm add bx,x
asm add bx,x
asm add ax,bx
asm adc dx,0
asm mov di,ax
asm mov ax,4f05h
asm mov bx,0
asm int 10h
asm mov cx,word ptr color
asm mov word ptr es:[di],cx
asm add di,2
asm mov cx,word ptr color+2
asm mov word ptr es:[di],cx
Tr_exit:
asm pop di
asm pop es
return;
}
void Pixel16HiC(int color,int x,int y)
{
asm push es
asm push di
asm mov ax,4f03h
asm int 10h
pi110:
asm cmp bx,110h
asm jnz pi111
asm mov dx,640
asm jmp write_16h
pi111:
asm cmp bx,111h
asm jnz pi113
asm mov dx,640
asm jmp write_16h
pi113:
asm cmp bx,113h
asm jnz pi114
asm mov dx,800
asm jmp write_16h
pi114:
asm cmp bx,114h
asm jnz pi116
asm mov dx,800
asm jmp write_16h
pi116:
asm cmp bx,116h
asm jnz pi117
asm mov dx,1024
asm jmp write_16h
pi117:
asm cmp bx,117h
asm jnz Hi_exit
asm mov dx,1024
write_16h:
asm mov ax,0a000h
asm mov es,ax
asm mov ax,word ptr [y]
asm mul dx
asm shl ax,1
asm jc a1
asm shl dx,1
asm jmp cont
a1:
asm shl dx,1
asm inc dx
cont:
asm shl word ptr [x],1
asm add ax,word ptr [x]
asm adc dx,0
asm mov di,ax
asm mov ax,4f05h
asm mov bx,0
asm int 10h
asm mov cx,word ptr [color]
asm mov word ptr es:[di],cx
Hi_exit:
asm pop di
asm pop es
return;
}
void Pixel256C(char color,int x,int y)
{
asm push es
asm push di
asm mov ax,4f03h
asm int 10h
pi100:
asm cmp bx,100h
asm jnz pi101
asm mov dx,640
asm jmp write_256
pi101:
asm cmp bx,101h
asm jnz pi103
asm mov dx,640
asm jmp write_256
pi103:
asm cmp bx,103h
asm jnz pi105
asm mov dx,800
asm jmp write_256
pi105:
asm cmp bx,105h
asm jnz exit_256
asm mov dx,1024
write_256:
asm mov ax,0a000h
asm mov es,ax
asm mov ax,word ptr [y]
asm mul dx
asm add ax,word ptr [x]
asm adc dl,0
asm mov di,ax
asm mov ax,4f05h
asm mov bx,0
asm int 10h
asm mov cl,byte ptr [color]
asm mov byte ptr es:[di],cl
exit_256:
asm pop di
asm pop es
return;
}
[/code:1:9253783525]
gl.asm 底层画点函数要用TASM编译,不过有上边的嵌入式汇编这个可以不用了
[code:1:9253783525]
.386
public _init
public _Demo
public _Pixel16HiC
public _Pixel24TrC
public _Pixel256C
_ATTRI struc
MODE_ATTR DW ?
WIN_A_ATTR DB ?
WIN_B_ATTR DB ?
WIN_GRAN DB ?
WIN_SIZE DW ?
WIN_A_SEG DW ?
WIN_B_SEG DW ?
WIN_FUNC_PTR DD ?
LINE_BYTE DW ?
_ATTRI ends
mpusha macro
push ax
push cx
push dx
push bx
push sp
push bp
push si
push di
endm
mpopa macro
pop di
pop si
pop bp
pop sp
pop bx
pop dx
pop cx
pop ax
endm
DGROUP group _DATA,_BSS
extrn _printf:far
_TEXT segment use16 byte public 'code'
assume cs:_TEXT,ds:DGROUP
;初始化图型模式
;入口参数:显示模式压入?
_init proc far
enterw 0,0
mov bx,[bp+6]
mov ax,4f02h
int 10h
leavew
ret
_init endp
相关文章
上一篇文章:DOS可以当积木来砌
下一篇文章:DOS教学应上时代的发展才行
- 推荐阅讯
- Help命令使用说明
- DOS教学应上时代的发展才行
- 让Windows 98自动安装
- 告别黑底白字 打造漂亮的CMD命令行
- 自定义Windows 98的启动方式
- DOS命令 Type
- DOS命令 format
- Windows 95无盘工作站如何上网
- DOS下对系统重新进行分区
- DOS命令 Net start/stop
- 阅读排行
- 1.DOS命令 Copy
- 2.Windows 98的系统设置与优化
- 3.如何在WinNT/2K/XP下启动纯DOS
- 4.操作系统进程描述
- 5.用二种方法打开DOS命令窗口
- 6.DOS命令 cd
- 7.DOS命令 At
- 8.DOS命令 Xcopy
- 9.Windows ME
- 10.给Windows一个绿色文件夹
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
