Переписал арифметику с нуля. Вместо временных переменных используется стек.
Основной код пока выглядит еще не очень. Нужно сделать хранение заначений в регистре BC и доделать сравнение (команда CP вместо вызова call e_uchar). И for парсить нелинейно, что бы код был линейнымКод:; dest = (uchar*)(0xE1D5 + x + y*78); ld hl, (print_x) ld h, 0 ld de, 57813 add hl, de push hl ld d, 78 ld a, (print_y) call mul_uchar pop de add hl, de ld (print_dest), hl
Код:main_i ds 1 main_x ds 1 main_buf ds 32 main: ; clrscr(); call clrscr ; print(0, 0, "HELLO"); xor a ld (print_x), a ld (print_y), a ld hl, string0 call print ; itoa(buf, 123); ld hl, main_buf ld (itoa_str), hl ld hl, 123 call itoa ; print(1, 1, buf); ld a, 1 ld (print_x), a ld (print_y), a ld hl, main_buf call print ; i = 5; ld a, 5 ld (main_i), a ; for(x=0; x<64; x+=16) { xor a ld (main_x), a l10: ld d, 64 ld a, (main_x) call l_uchar or a jp z, l11 jp l12 l13: ld a, (main_x) add 16 ld (main_x), a jp l10 l12: ; print(x, i, "12345678.123"); ld a, (main_x) ld (print_x), a ld a, (main_i) ld (print_y), a ld hl, string1 call print ; } jp l13 l11: ; while(1) { l14: ; if(getch() == '1') clrscr(); call getch ld d, 49 call e_uchar or a jp z, l16 call clrscr l16: jp l14 l15: l9: ret ;---------------------------------- string1 db "12345678.123",0 string0 db "HELLO",0
---------- Post added at 23:56 ---------- Previous post was at 22:47 ----------
1500 строк, 45 Кб





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

