![]() |
срочно нужна прога для вывода спрайтов на экран компьютера zX spectrum 48 k(sinclair)
в данный момент разрабатываю графический макер для спрайтов.
Размеры сделал фиксированные 8*8 символов. такую шнягу я уже делал когда-то (но размеры можно было менять в процессесе создания рисунков), данные были потеряны, еще в машинных кодах писал подпрограмму вывода этих спрайтов на экран. По новой расчитывать эту процедуру не охота, может кто знает,как нарисовать на экране спрайт 8*8 знакомест в машин. кодах ( 64*64 пикс.) Сам графический редактор сделал так, что он поочередно заливает в память посимвольно (сверху вниз сканирует каждый символ побайтно) и так идет в ряд в первой строке (из 8-ми символов) затем во второй,третьей........................... и восьмой. так сделал , чтоб при переходе по координатам знакомест не было белиберды,а то на спеке организация памяти экранной области довольно рахитная. |
тебе в каком виде?
|
Вот самая простая, исходя из твоих параметров 8х8:
ld hl,адрес спрайта ld de,адрес экрана ld b,64 n1 push bc push de dup 8 ldi edup pop de call de_inc pop bc djnz n1 ret de_inc inc d ld a,d and 7 ret nz ld a,e add a,32 ld e,a ret c ld a,d sub 8 ld d,a ret |
а что означает эта мнемоника?
dup 8 ldi edup |
Quote:
|
а как бы мне это вдесятичных кодах написать.
А то проги пишу по таблице из книжицы. ---------- Post added at 17:09 ---------- Previous post was at 17:06 ---------- ldi значит LDIR ? а dup 8 ; edup ; - это обычный цикл ? (какие регистры он использует ? или можно на свое усмотрение ?) |
обожемой! Ldi это значит Ldi - тоже самое что LDIR тока без цикла - как бы без хвоста ld a, b; or c; jr nz, ... . edup говорит сколько раз дублировать блок. тоесть берешь и пишешь код LDI 8 раз подряд. А вообще для программирования ассемблеры существуют
|
Quote:
данная команда ассеблера траслируется в что-то типа.. --- .. ldi 237, 160 ldi 237, 160 ldi 237, 160 ldi 237, 160 ldi 237, 160 ldi 237, 160 ldi 237, 160 ldi 237, 160 .. Если есть анреал, можно в мониторе набить мнемокоды (развернув спецкоманды ассемблера), а потом списать соответствующие им числовые значения. Так быстрее получится (ну если не брать в расчет асм и т.п.). |
а так можно ?
push af FUCKING_LOOP ld a,8 ldi dec a djnz FUCKING_LOOP pop af (правда в ущерб процессорного времени) |
Теоретичеки можно. А зачем такие сложности? Тогда уж проще сохранять регистровую пару bc и использовать ldir. Команда ldi используется для быстродествия и ненужных опереций с регистрами..
|
| All times are GMT +4. The time now is 10:59. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.