Помогите с программированием на ассемблере

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
narius985
Открыл глаза
Сообщения: 58
Зарегистрирован: Сб ноя 12, 2016 09:41:00

Помогите с программированием на ассемблере

Сообщение narius985 »

1. Написать программу условного перехода по состоянию бита. Если состояние старшего бита ячейки ОЗУ с адресом 21Н равно 0, то старший бит этой ячейки инвертируется. Если состояние младшего бита ячейки равно 1, то инвертируется весь байт ячейки ОЗУ с адресом 21Н.
Я же правильно прогу написал на это задание, почему при симуляции получается какой-то бред
MOV 21H,#80H
JNB 21H.7,J1
J1:CPL 21H.7
JBC 21H.0,J2
J2:XRL 21H, #0FFH
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Помогите с программированием на ассемблере

Сообщение Zhuk72 »

Этот асм я не знаю, 51-й очевидно, но как мне кажется ошибка в первой же команде. Зачем в ячейку с данными грузить маску? И инверсия в конце странно выглядит.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
narius985
Открыл глаза
Сообщения: 58
Зарегистрирован: Сб ноя 12, 2016 09:41:00

Re: Помогите с программированием на ассемблере

Сообщение narius985 »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3123431#p3123431"]Этот асм я не знаю, 51-й очевидно, но как мне кажется ошибка в первой же команде. Зачем в ячейку с данными грузить маску? И инверсия в конце странно выглядит.[/uquote]
ну типо 80, это 1000 0000, и тогда должен быть переход, и инверсия старшего бита, переход кстати есть, но что-то вообще бред получается
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Помогите с программированием на ассемблере

Сообщение Zhuk72 »

Что означает 0х80 я знаю, но это маска, ее надо применить в виде операции "И" с содержимым ячейки 021h, а не загружать ее туда, тем самым стирая исходное значение. После первой же команды у вас, как я понимаю, в той ячейке окажется число 0х80.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Эиком - электронные компоненты и радиодетали
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Помогите с программированием на ассемблере

Сообщение Пока_без_кота »

А мне непонятно, зачем переходить по условию на метку, на которую перейдем и при невыполнении условия. И так 2 раза :)))
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15579
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите с программированием на ассемблере

Сообщение BOB51 »

narius985 писал(а):1. Написать программу условного перехода по состоянию бита. Если
, то старший бит этой ячейки инвертируется. Если состояние младшего бита ячейки равно 1, то инвертируется весь байт ячейки ОЗУ с адресом 21Н.
Я же правильно прогу написал на это задание, почему при симуляции получается какой-то бред
MOV 21H,#80H
JNB 21H.7,J1
J1:CPL 21H.7
JBC 21H.0,J2
J2:XRL 21H, #0FFH
Полный бред...
:facepalm:
Несчастные преподы...
:cry:
А логически мыслить, или хотя-бы расписать в строчку программу на обычном языке???

Есть ячейка в ОЗУ по адресу 21Н (неизвестно с чем внутри)

есть два условия с соответствующим решением:
1.
Если состояние старшего бита ячейки ОЗУ с адресом 21Н равно 0
ТО
старший бит ячейки ОЗУ с адресом 21Н инвертируется
2.
Если состояние младшего бита ячейки ОЗУ с адресом 21Н равно 1
ТО
инвертируется весь байт ячейки ОЗУ с адресом 21Н

можно добавить, что у ячеек с адресами 0х20-0х2F каждый бит имеет собственный адрес (поле прямоадресуемых бит)...
ИТОГ...
а-ну-ка СТУДЕНЬ, поразмышляй!
:wink:
Реклама
narius985
Открыл глаза
Сообщения: 58
Зарегистрирован: Сб ноя 12, 2016 09:41:00

Re: Помогите с программированием на ассемблере

Сообщение narius985 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3125125#p3125125"]
narius985 писал(а):1. Написать программу условного перехода по состоянию бита. Если
, то старший бит этой ячейки инвертируется. Если состояние младшего бита ячейки равно 1, то инвертируется весь байт ячейки ОЗУ с адресом 21Н.
Я же правильно прогу написал на это задание, почему при симуляции получается какой-то бред
MOV 21H,#80H
JNB 21H.7,J1
J1:CPL 21H.7
JBC 21H.0,J2
J2:XRL 21H, #0FFH
Полный бред...
:facepalm:
Несчастные преподы...
:cry:
А логически мыслить, или хотя-бы расписать в строчку программу на обычном языке???

Есть ячейка в ОЗУ по адресу 21Н (неизвестно с чем внутри)

есть два условия с соответствующим решением:
1.
Если состояние старшего бита ячейки ОЗУ с адресом 21Н равно 0
ТО
старший бит ячейки ОЗУ с адресом 21Н инвертируется
2.
Если состояние младшего бита ячейки ОЗУ с адресом 21Н равно 1
ТО
инвертируется весь байт ячейки ОЗУ с адресом 21Н

можно добавить, что у ячеек с адресами 0х20-0х2F каждый бит имеет собственный адрес (поле прямоадресуемых бит)...
ИТОГ...
а-ну-ка СТУДЕНЬ, поразмышляй!
:wink:[/uquote]
ну сомтр, команда JNb, это переход, если бит раверн нулю, но я сделал переход на метку, но он не переходит если бит равен нул. можешь просто ответить, нормально, твои выпендрёже мне пользы не приносят
Последний раз редактировалось aen Вс июн 25, 2017 17:19:04, всего редактировалось 1 раз.
Причина: Нарушение Правил форума п. 2.7
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите с программированием на ассемблере

Сообщение pyzhman »

Могу написать программу и объяснить её работу. Без выпендрежа.
Docendo discimus
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15579
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите с программированием на ассемблере

Сообщение BOB51 »

"Напишите за меня"
и
"помогите понять, как самому написать"
ВЕЩИ РАЗНЫЕ.
Можно конечно и написать, да толку с того не будет - разве что "конкурента убрать с дороги"... Только предпочитаю, чтоб человек сначала сам максимум вопрос продумал - и удовольствие от СОБСТВЕННОГО решения получил (а не облом в будущем).
Ежли взялся за работу с ассемблером (или иным предметом для изучения) то он должен сам понять, что и как и для чего делается, а не "драть копии не глядя".
Тем более на таких примитивах, которые во многих учебниках давно рассмотрены.
:beer:
Ответить

Вернуться в «Разные вопросы по МК»