gpt4 book ai didi

c - 水平翻转 1bpp .bmp 图像

转载 作者:行者123 更新时间:2023-11-30 16:02:52 24 4
gpt4 key购买 nike

我正在尝试编写一个包含两个源文件的程序:用 C 编写的主程序和可从 C 调用的汇编(x86 32 和 64)模块。汇编例程的 C 声明如下所示:voidmirrorbmp1(void *img, int 宽度, int 高度)

该任务涉及水平镜像/翻转 1 bpp .BMP 图像,同时正确处理任何图像宽度,而不仅仅是 8 的倍数。

我是汇编编程新手,对我应该如何做这个问题知之甚少。

如有任何帮助,我们将不胜感激。

最佳答案

解决方案应该基于汇编程序中的移位和循环指令。如果您知道如何使用宏进行编程,您可以创建一个智能宏,它将为每个图像宽度(最后一个字节中的 0 到 7 位)生成 8 个版本的例程。

宽度为 8 倍数的基本情况示例:

;al ... byte from input
;bl ... for output

;load from [esi] to al and move to next byte:
lodsb

repeat 8x:
shr al
rol bl

;store bl do [edi] and move to previous byte:
mov [edi],bl
dec edi

宽度不为 8 倍数的示例:

repeat 3x:
shr al
rol bl

lodsb

repeat 5x:
shr al
rol bl

mov [edi],bl
dec edi

我希望这些简短的示例能够为您提供足够的指导,以便您可以自己制定完整的解决方案。祝你好运。

关于c - 水平翻转 1bpp .bmp 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4701342/

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