x86-突出BMP图片特定区域的最佳方法?

时间:2015-03-27 22:27:22

标签: assembly graphics dos x86-16

我为游戏制作了菜单图片。我想在菜单上执行的下一步是突出显示光标悬浮在菜单上的选项。而不是通过加载另一个bmp文件,只更改特定的区域颜色,并在操作后将其恢复正常。那么最好的方法是什么?如果可以,请添加代码。

我正在研究DosBox(适用于Windows),8086 ASM。我正在使用图形化的菜单。

菜单:

My menu bmp file:

1 个答案:

答案 0 :(得分:1)

最基本的方法是计算视频内存中的起始和结束地址,并替换此块中的所有菜单点背景字节值:

  mov si, start_address
  mov dx, end_address
lbl_loop:
  lodsb
  cmp al, src_color_value
  jne @next
  mov byte ptr [si-1], dst_color_value
next:
  cmp si, dx
  jl(e) lbl_loop       ; depends on if end_address is included or excluded

必须将DS设置为video_segment。肯定有更好的方法可以做到这一点,但你明白了。