Во жесткачите... :)
Вид для печати
Во жесткачите... :)
Если в качестве источника вывода используется инкрементальный/декрементальный счетчик, то можно конвертить на лету:
ЗЫ. Не помню точно, 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
Ну если мы уж про совсем аццкие способы, то вот как было сделано в первой программе, которую я написал на ассемблере (скорее всего это даже не моя процедура):
В 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
Народ, не поможете советом? Вот кусочек кода, который должен выполниться.
До этого все было нормально, но если убрать ";", то выводится не совсем то, что надо. А именно вот это: http://pic.ipicture.ru/uploads/090929/e5BcGHGz3g.jpgКод:;--------------------------------------
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 ставил другие координаты, но ничего не помогает.
набрал то же самое. вполне получилось.
SAM style, спасибо, натолкнул на одну мысль.
Добавил
и вызвал процедуру печати этого пробела между SCORE и HISCORE. Все заработало.Код:null1 defb 22,21,31," "
а в пзу должна быть процедурка вывода hex в dec формате. никто не искал?
Нужен скролл экрана с права на лево , по знакоместам с цветом , и удалением уехавшего за пределы экрана. При вызове процедуры сдвигает влево экран на одно знакоместо.
Поделитесь, пожалуйста.