很想知道如何用汇编语言进行图形编程
主要有哪些问题需要解决
我的主要目的是用汇编写出3D动画来,其中存在些问题,希望各位大大提点哈...
这里有个程序
data segment
kk dw 500 dup(?)
xys db 'i love you',13,10,'$'
error1 db 'error!let us work hard!',13,10,'$'
data ends
stack segment
yy dw 1000 dup(?)
stack ends
code segment
assume ds:data,ss:stack,cs:code,es:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
main proc near
mov ah,00h
mov al,62h
int 10h
lea dx,xys
mov ah,09
int 21h
mov ah,0
int 16h
in al,60h
cmp al,1
jne start
mov ax,4c00h
int 21h
ret
main endp
code ends
end start
主要是设置显示器的分辨率为800*600或者1024*768模式下,进行图形编程..
可是现在连一个字符都显示不了...我用INT 10H调用,如果把AL设置为13H,就可以进行320*200 256色下的字符显示...但是现在...在高分辨率下到底有什么问题呢?
请各位大大帮忙检查下,看看是哪里有问题啊.....
还有就是请帮忙提供点关于这方面的资料啊...
拜托了..先谢谢了..呵呵
------解决方案--------------------------------------------------------
“调用21H或10H显示一个字符都办不到”就是因为扩展图形模式不是一定支持BIOS输出的(DOS的输出也是调用BIOS INT 10h)。
资料可以先下载这个:
http://www.vesa.org/Public/VBE/vbe3.pdf
------解决方案--------------------------------------------------------
http://ebook.pc120.net.cn/programme/AssembleLanguage/200609/852
------解决方案--------------------------------------------------------
使用INT 10H设置VESA模式需要Video Bios与主板Bios配合,对于不同的机器,不一定都能实现
我将楼主程序改动了一下,你可以试一下:
assume ds:data,cs:code
data segment
xys db 'will you go out?'
data ends
code segment
start:
main proc far
mov ax,data
mov ds,ax
;设置VESA显示模式,800*600 16色
mov ax,4f02h
mov bx,102h ;另外还有模式103H,113H,114H,115H,你可以分别试试看
int 10h
call line ;画线
call string ;显示字符串
;程序返回处理,按任意键退出
mov ah,1
int 21h
mov ax,0003h
int 10h
mov ax,4c00h
int 21h
ret
main endp
line proc near
mov cx,100
mov dx,50
back:
mov ah,0ch
mov al,0ffh
int 10h
inc cx
cmp cx,200
jnz back
ret
line endp
string proc near
mov bp,data
mov es,bp
mov bp,offset xys
mov ax,1300h
mov bl,41h
mov cx,10h
mov dx,0
int 10h
ret
string endp
code ends
end start