PUBLIC ?L_MUL_L03
RSEG RCODE
?L_MUL_L03:
pop af
ex af,af'
pop af
ex af,af'
ex de,hl
ex (sp),hl
push af
push ix
push iy
push hl
pop iy
ld ix,0
ld hl,0
ld a,IYH
or IYL
jr z,no222
ld a,16
mul222_loop: ;16*16=16
add hl,hl
add iy,iy
jr nc,nadd
add hl,de
nadd:
dec a
jr nz,mul222_loop
push hl
pop ix
no222:
ex af,af'
push af
pop iy
ld a,16
mul424_loop2: ;32*16=32
add ix,ix
adc hl,hl
add iy,iy
jr nc,nadd2
add ix,de
adc hl,bc
nadd2:
dec a
jr nz,mul424_loop2
ld b,h
ld c,l
push ix
pop hl
pop iy
pop ix
pop af
pop de
push af
ret
lvd wrote:Кстати недавно пытался найти пост в хз-спецтрум, где ты слал процедуры всякоразных умножовываний и делений. Не нашёл. Тут тоже -- ввожу в поиске 'Kirill Frolov' и нихуя не находится.
надо попробывать, а в освободифшееся место попробывать заюзать под разлупливание лупа.lvd wrote:Насчёт оптимизации по размеру ничего не скажу, разве что убрать цикл 16*16->16, заюзав вместо него цикл 16*32->32 и занулив нужные реги.
DimkaM wrote:вообще я заметил правило в иаролибе: неиспользование ундок операторов. хотя иаро-асм их понимает
lvd wrote:Также на гугле есть архив fido7.zx.spectrum, но вэсь рюски букъва там нахер безвозвратно похерено в ????
Users browsing this forum: No registered users and 3 guests