gpt4 book ai didi

assembly - 分辨率高于 640x480 的 x86 asm 图形设置?

转载 作者:行者123 更新时间:2023-12-01 09:10:35 25 4
gpt4 key购买 nike

我刚刚开始使用汇编语言(感觉像是在学习新东西),并且遇到了一些问题(到目前为止)我一直在看的所有教程都没有回答,或者太旧了知道。

1) 我尝试了一些搜索(也许我只是不知道正确的关键字),但我找不到用于更改屏幕分辨率等的图形模式的更新列表。我找到的最好的是:Assembler Tutorial ,而且我几乎不认为 640x480 是汇编语言可以使用的最佳分辨率。 有人知道我可以使用的更新教程吗?

编辑:中断 10h 很旧,并且不太支持超过 640x480

2) 是否可以将一个值从一个变量“移动”到另一个变量而不先将其移动到寄存器?示例:

jmp start
n1 dw 0
n2 dw 0
res dw 0
start:
mov n1,5
mov n2,6
mov res,n1
add res,n2
...etc...

编辑:这是不可能的。不使用寄存器就无法从一个内存移动到另一个内存。

3)关于问题 1,有没有办法检测用户当前使用的图形模式,以便我可以更改它,然后再将其更改回来? (我认为有,但不知道该怎么做。)

编辑:需要查询操作系统的图形设置。

最佳答案

对于问题 #1 和 #3,请查看 VESA BIOS Extensions .这是处理 90 年代流行的“ super VGA”模式的某种标准。

至于#2,一般来说答案是否定的,你不能将内存移动到内存。但这并不完全正确:有 MOVS(移动字符串),它将一个字节、字或双字从 DS:SI 移动到 ES:DI。通常该指令与 REP 前缀结合使用以移动内存块。此外,假设您设置了一个堆栈,您可以将内存移动到内存,而不会通过推送和弹出来破坏寄存器:

PUSH [mem1]
POP [mem2]

关于assembly - 分辨率高于 640x480 的 x86 asm 图形设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1405749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com