Обьясняю так:
Я сохраняю адрес картинки в ds:si, адрес точки куда выводить - es:di
mov di,10000 - это то же, что в твоем примере mov bx,10000 т.е. будет выводиться по адресу A000h:10000 (адрес первой точки)
Значение сегмента ds сохраняется потому, что если его потом не востановить - будут глюки в паскале (можешь попробовать его закоментировать)
Далее собственно у меня цикл типа for i:=0 to 10 do for j:=0 to 10 do
команда movsb помещает содержимое ds:[si] в es:[di] и увеличивает si и di на 1. Т.е я фактически помещаю точку из массива color на экран :-)
в сх я храню кол-во линий, в dx - колво точек в линии.
Рисую я по линиям: @l1: movsb loop @l1
И еще : заметь, у меня команда
pop cx loop @l2
уменьшает cx на 1, а далее я это изменение СОХРАНЯЮ! (push cx)
add di,309 - адрес следующей строки (320-11) Ну разбирайся... ;D
--------------------
- Где я? - Во тьме. - В какой тьме? - Во тьме твоего мозга.
|