Матрица с пикселями. Адрес конкретного пикселя - 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

Объяснение кода листинга программы

  1. Переменная W (80) используется для определения ширины матрицы пикселей.
  2. Результат умножения переменных ax и y на значение переменной W сохраняется в переменной ax.
  3. К полученному результату прибавляется значение переменной x, сохраняясь в переменной ax.
  4. К полученному результату прибавляется значение переменной ax, сохраняясь в переменной ax.
  5. Значение переменной ax после вычислений равно адресу конкретного пикселя в матрице пикселей.
  6. Значение переменной d не упоминается в данном коде, возможно, оно используется для определения размера пикселя или для других вычислений.

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы