Потихоньку осваиваю ассемблер. Просматриваю коды программ. Не могу найти примеры использования команд циклического переноса - RLD и RRD.
Для каких целей их можно использовать?
Потихоньку осваиваю ассемблер. Просматриваю коды программ. Не могу найти примеры использования команд циклического переноса - RLD и RRD.
Для каких целей их можно использовать?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я вот сегодня пакер с использованием полубайтов сделал - в память они пихаются как раз через RLD.
Все любят гипножабу
Эти команды используются для работы с двоично-десятичной арифметикой в упакованном формате. В этом виде байт содержит 2 десятичные цифры. Так вот, эти команды позволяют работать с цифрами отдельно. Это по прямому назначению. По прикладному - организация сдвига на 4 бита в битовом массиве.
Вино пить - земля валяться, вода пить - орёл летать.
Процедура печати 64-х символов в строке, с использованием RLD
FONT EQU #6000;АДРЕС ШРИФТА НА 64 СИМВОЛА В СТРОКЕ
ORG #8000
LD HL,#4000;АДРЕС ЭКРАНА
LD DE,TEXT;АДРЕС ТЕКСТА
START LD A,(DE)
INC DE
OR A
RET Z
LD C,A
LD A,(DE)
INC DE
PUSH AF
PUSH HL
PUSH DE
LD E,A
LD B,FONT/256
LD D,B
LD A,(BC)
LD (HL),A
LD A,(DE)
RLD
INC H
INC D
INC B
LD A,B
CP FONT/256+8
JR NZ,$-11
POP DE
POP HL
POP AF
INC L
OR A
JR NZ,START
RET
Вставлю и я свои пять копеек. Вот быстрая и короткая процедура вычисления следующего трека (перепрыгивание на заданное количество секторов в диапазоне 0-240) с использованием RLD:
По аналогии можно использовать RRD немного изменив алгоритм.Код:IN: LD DE,текущий_трек/сектор LD A,количество_перепрыгиваемых_секторов OUT: DE = новые_трек/сектор LD HL,BUF ADD A,E LD (HL),A AND #F LD E,A RLD ADD A,D LD D,A RET BUF DB 0
Когда на твой вопрос отвечает философ, перестаешь понимать вопрос
Короче на 1 байт... Я ее писал для собственных нужд, меня вполне устраивает данный диапазон, к тому же я ее здесь привел чисто как пример использования RLD/RRD. п.с. Если уж речь зашла о ширине диапазона, то у меня в запасе есть процедура работающая с диапазоном в 65520 секторов..Ну не в курсе, твоя, мож, и быстрая, но стандартная, имхо, короче. И диапазон пошире
Когда на твой вопрос отвечает философ, перестаешь понимать вопрос
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)