Жестковато было так 10кб строчить для другого проекта, но там всё писалось на лету, ибо система команд удобнее, ибо PDP.
Жестковато было так 10кб строчить для другого проекта, но там всё писалось на лету, ибо система команд удобнее, ибо PDP.
Код: Выделить всё
MOV R0,#d ; загрузка адреса МЛБ
CLR A ; очистка А
CLR C ; очистка С
SUBB A,@R0 ; вычитание
MOV @R0,A ; сохранение полученного значения
INC R0 ; получение адреса СТБ
MOV A,#d 00h ; очистка А (вроде CLR A не трогает флаги, но сделал так)
SUBB A,@R0 ; вычитание
MOV @R0,A ; сохранение полученного значения
RET ; возврат
Код: Выделить всё
mov a,#data ;загрузка данных
cpl a ; инверсия
add a,#1; и плюс 1О, такого в даташитах мне не попадалось, посмотрю.BOB51 писал(а): вопросам длительности команд смотрим соответствующий документ
Этот код хорош, когда надо один байт преобразовать. А я преобразую сразу два связанных байта. Побайтово их так не дополнить. Вроде оно у меня работает, но мало ли я всё же ошибся, подставлять кучу раз значения и проверять преобразование не хочется.BOB51 писал(а):относительно "дополнения до 2", то для 51й это
Код: Выделить всё
r7 high byte
r6 low byte
xch a,r7
cpl a
xch a,r7
xch a,r6
cpl a
add a,#1
xch a,r6
xch a,r7
addc a,#0
xch a,r7