Jerri, зачем ты говоришь про Z80, а код приводишь для ВМ1?
Какая конечная цель у тебя? Написать код для Спектрума или для БК?
Jerri, зачем ты говоришь про Z80, а код приводишь для ВМ1?
Какая конечная цель у тебя? Написать код для Спектрума или для БК?
manwe.pdp-11.ru
Где я говорю про Z80?
если бы мне надо разворачивать байты для z80 к тебе, как к специалисту по z80, я бы обратился в последнюю очередь.
Просто вспомнилось что ты говорил про разворот байтов, однако на БК его применения в играх я его не видел особо,
обычно два набора спрайтов для направлений.
Вот меня твой опыт и заинтересовал.
С уважением,
Jerri / Red Triangle.
Вoт странно, почему встроенные инструкции по развороту битов в байте у процессоров такая редкость!
В тех же подпрограммах деления они бы ускорили процесс также…
manwe.pdp-11.ru
О боже.
С таким подходом...
на спектруме память тоже непрерывна, так же как и на комоддоре и прочих компах.
параграф/страница - да как не назови, это деление условное для удобства понимания.
от xx00 до xxFF
вот у тебя есть адрес в регистре R0 например #3f25
если ты загрузишь из (R1) байт #80 в R0
то что у тебя будет в регистре R0? #3f80(старшая часть регистра не обнуляется) или #ff80(происходит расширение знака)?
в мануале ничего про расширения знака нет
MOVB (R1),R0
Источником в этой команде является младший байт ячейки, адрес которой хранится в R1 (т.е. ячейки MEM). (Не забывайте, что адрес слова совпадает с адресом его младшего байта.) Приемником же служит младший байт регистра R0. Байтовая команда, в которой используется регистровый способ адресации, всегда обращается к младшему байту указанного регистра. Старший байт регистра не имеет адреса, и поэтому ассемблер интерпретирует запись R0+1 как ссылку на регистр R1.
Последний раз редактировалось jerri; 06.04.2020 в 00:19.
С уважением,
Jerri / Red Triangle.
Расширение знака, я же написал выше
manwe.pdp-11.ru
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
manwe.pdp-11.ru
Не надо мне общеобразовательного, я это знаю
я тебе задал конкретный вопрос: "меняется ли старший байт регистра?"
если у тебя расширение знака то как ты шаришься по таблице Mirror?
у тебя ссылка указывает на середину таблицы?
всё нашел
*1ssdd MOV(B) **0- пересылка: (dst)<-(src); MOVB ss,Rn
(пересылка в регистр общего назначения),
единственная среди байтовых инструкций,
распространяет знаковый бит источника
в старшем байте приемника; при пересылке
байта в регистр результат всегда пересылается
в младший байт регистра. Все остальные
байтовые пересылки работают с байтами в
точности как словные со слоавми.
Последний раз редактировалось jerri; 06.04.2020 в 11:38.
С уважением,
Jerri / Red Triangle.
Естественно.
Если что, в номерах 28 и 29 журнала "Downgrade" есть мои статьи по БКшному ассемблеру с похожими примерами http://dgmag.in
https://lenta.ru/news/2020/04/03/chu/
manwe.pdp-11.ru
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)