实际上,我正在用汇编语言做一个项目,我正在汇编语言显示内存上打印山、海和土壤。我只是想让我的动作更流畅,或者我的分辨率更高,这样我的像素会更清晰。我想把我的80x25屏幕换成更大的屏幕,以增加分辨率。大约接近800或1280。我试过使用int 10h服务。我用过函数01h,06h和所有相关的东西,但没有任何改变。
int 10h
l3zydbqr1#
DOSBox(当前版本0. 74)具有VESA功能,前提是选项文件具有所需的设置。我的选项文件中的一些设置如下:[sdl]全屏=假全双精度=假全分辨率=台式机窗口分辨率=1280x960输出=打开[文件夹]计算机=svga_s3[渲染]纵横比=真定标器=正常2x我写了这个小演示来证明它的工作原理:
org 256 mov bx, 4115h ; 32-bit 800x600 graphics mov ax, 4F02h ; VESA.SetVideoMode int 10h ; -> AX cmp ax, 004Fh jne Abort call DrawDiagonals mov ah, 00h ; BIOS.GetKeystroke int 16h ; -> AX mov ax, 0003h ; BIOS.SetVideoMode 80x25 text int 10h Abort: mov ax, 4C00h ; DOS.Terminate int 21h ; ---------------------- DrawDiagonals: mov cx, 600 xor eax, eax mov ebx, 3200-4 .a: mov dword [0C0000000h+eax], 004080C0h ; 0RGB mov dword [0C0000000h+ebx], 00C08040h ; 0RGB add eax, 3200+4 add ebx, 3200-4 loop .a ret ; ----------------------
在一个成熟的应用程序中,您首先会向VESA询问其支持的视频模式列表,然后选择一个您可以检索其特征的模式(如LinearFrameBuffer地址、BytesPerScanline ...)。请咨询the VESA documentation。
1条答案
按热度按时间l3zydbqr1#
DOSBox(当前版本0. 74)具有VESA功能,前提是选项文件具有所需的设置。我的选项文件中的一些设置如下:
[sdl]
全屏=假
全双精度=假
全分辨率=台式机
窗口分辨率=1280x960
输出=打开
[文件夹]
计算机=svga_s3
[渲染]
纵横比=真
定标器=正常2x
我写了这个小演示来证明它的工作原理:
在一个成熟的应用程序中,您首先会向VESA询问其支持的视频模式列表,然后选择一个您可以检索其特征的模式(如LinearFrameBuffer地址、BytesPerScanline ...)。
请咨询the VESA documentation。