Во жесткачите...
Во жесткачите...
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Если в качестве источника вывода используется инкрементальный/декрементальный счетчик, то можно конвертить на лету:
ЗЫ. Не помню точно, daa только на add/sub реагирует или на inc/dec тоже...Код:counter: ld a,0 add a,1 daa ld (counter+1),a ;старшие 4 бита А - десятки, младшие - единицы.
помоему только на add/sub
Придумал еще один способ, отнимать последовательно 80, 40, 20, 10.
Понятно, что это медленный способ. Просто было интересно.Код:; a - исходное число ;на выходе: ; h - первый символ ; l - второй символ ; a, b, de - портятся HexToDec ld b, 80 ld de, #800 ;d = 8 ld h, e ;H = 0; L не имеет значения Loop cp b jr c, Less sub b add hl, de Less srl b ;b /= 2 srl d ;d /= 2 jr nc, Loop ld d, "0" ;e == 0 add d ld l, a add hl, de ret
Последний раз редактировалось Shwartz; 18.09.2008 в 00:52.
Ну если мы уж про совсем аццкие способы, то вот как было сделано в первой программе, которую я написал на ассемблере (скорее всего это даже не моя процедура):
В HL я так понял число, потом по адресу BUFFER выстраивается число для печати. Метод кстати прикольный, ибо позволяет в принципе конвертировать любой длины числа при должной адаптации.
Код:DECIMAL LD BC,BUFFER LD DE,10000 CALL COUNT LD DE,1000 CALL COUNT LD DE,100 CALL COUNT LD DE,10 CALL COUNT LD A,L ADD A,48 LD (BC),A RET COUNT XOR A LP PUSH HL SBC HL,DE JR C,ENDC INC A INC SP INC SP JP LP ENDC POP HL ADD A,48 LD (BC),A INC BC RET
Последний раз редактировалось Shadow Maker; 18.09.2008 в 09:00. Причина: Добавлено сообщение
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Народ, не поможете советом? Вот кусочек кода, который должен выполниться.
До этого все было нормально, но если убрать ";", то выводится не совсем то, что надо. А именно вот это:Код:;-------------------------------------- ld hl,udg ld (23675),hl ld a,2 call 5633 ld de,score ld bc,08h call 8252 ;ld de,hisco ;ld bc,10 ;call 8252 ld de,kvtst ld bc,0Dh call 8252 ret kvtst defb 22,5,11,144,144,144,144,144,144,144,144,144,144 score defb 22,2,1,"S","C","O","R","E" udg defb 254,130,186,186,186,130,254,0 hisco defb 22,2,23,"H","I","S","C","O","R","E"
Не подскажете, в чем дело? Я пробовал менять координаты (hisco defb 22,2,23,"H","I","S","C","O","R","E") вместо 2 и 23 ставил другие координаты, но ничего не помогает.
Последний раз редактировалось tmp_online; 29.09.2009 в 18:54.
SavageCracked by Bill Gillbert 1989
набрал то же самое. вполне получилось.
Все любят гипножабу
SAM style, спасибо, натолкнул на одну мысль.
Добавил
и вызвал процедуру печати этого пробела между SCORE и HISCORE. Все заработало.Код:null1 defb 22,21,31," "
SavageCracked by Bill Gillbert 1989
а в пзу должна быть процедурка вывода hex в dec формате. никто не искал?
Нужен скролл экрана с права на лево , по знакоместам с цветом , и удалением уехавшего за пределы экрана. При вызове процедуры сдвигает влево экран на одно знакоместо.
Поделитесь, пожалуйста.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)