Проблем особых нет, нужно только время и желание, но вот в чём прикол - много ли ты знаешь владельцев БК, которые а) сделали это и б) пишут игры?
Вид для печати
Я постоянно так делаю ради экономии памяти в интрах и в драйверах.
Ещё часто использую такую оптимизацию размера и количества регистров при работе с циклами:
Если нужно работать не с байтами, а со словами, то так:Код:MOV #Size,R0
1: действие с ARRAY-1(R0)
SOB R0,1
Код:MOV #Size*2,R0
1: действие с ARRAY-2(R0)
DEC R0
SOB R0,1
В коде прошивок от Электроника МС 0515 часто встречается такой приём.
Допустим, вам нужно сделать что-то с двумя массивами или двумя портами, двумя блоками на экране итп. - однотипные операции, но в двух местах.
Делается цикл который исполняется ровно два раза:
Код:MOV 2,R2
MOV XXXXXX,R1 ; первое место
LOOP:
. . . ; Делаем что-то полезное по адресу R1
MOV YYYYYY,R1 ; второе место
SOB R2,LOOP ; повторяем второй раз
MOV 2,R2 -> MOV #2,R2
Я как непривыкший к ассемблеру постоянно делаю так:
Постоянно подозрения что ветвления надо делать по минимуму, но .. Вообщем все эти моменты продумывать - уедет мозг :) Респект конечно монстрам ассемблерного программирования.Код:DEC VAR
BNE 10$ ; часто происходящая ситуация
... ; а тут редко происходящая
RETURN
10$: ... ; продолжаем операцию