Матрица с пикселями. Адрес конкретного пикселя - Assembler
Формулировка задачи:
Дана, например, область памяти 400 байт, в которой записана произвольная матрица WxH (W-ширина матрицы, H-высота). Глубина цвета (d) при этом 2 байта.
Найти определённый пиксель с координатами, например, x=5, y=10.
По сути, получается формула d*W*(y-1)+(x-1)*d, но тут довольно много действий.
Можно ли каким-нибудь более простым способом найти этот пиксель? Заранее спасибо.
Решение задачи: «Матрица с пикселями. Адрес конкретного пикселя»
textual
Листинг программы
W equ 80 imul ax,y,W add ax,x add ax,ax; ax=(x+y*W)*d
Объяснение кода листинга программы
- Переменная
W
(80) используется для определения ширины матрицы пикселей. - Результат умножения переменных
ax
иy
на значение переменнойW
сохраняется в переменнойax
. - К полученному результату прибавляется значение переменной
x
, сохраняясь в переменнойax
. - К полученному результату прибавляется значение переменной
ax
, сохраняясь в переменнойax
. - Значение переменной
ax
после вычислений равно адресу конкретного пикселя в матрице пикселей. - Значение переменной
d
не упоминается в данном коде, возможно, оно используется для определения размера пикселя или для других вычислений.