Помогите с программированием на ассемблере
Помогите с программированием на ассемблере
1. Написать программу условного перехода по состоянию бита. Если состояние старшего бита ячейки ОЗУ с адресом 21Н равно 0, то старший бит этой ячейки инвертируется. Если состояние младшего бита ячейки равно 1, то инвертируется весь байт ячейки ОЗУ с адресом 21Н.
Я же правильно прогу написал на это задание, почему при симуляции получается какой-то бред
MOV 21H,#80H
JNB 21H.7,J1
J1:CPL 21H.7
JBC 21H.0,J2
J2:XRL 21H, #0FFH
Я же правильно прогу написал на это задание, почему при симуляции получается какой-то бред
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: Помогите с программированием на ассемблере
Этот асм я не знаю, 51-й очевидно, но как мне кажется ошибка в первой же команде. Зачем в ячейку с данными грузить маску? И инверсия в конце странно выглядит.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Помогите с программированием на ассемблере
[uquote="Zhuk72",url="/forum/viewtopic.php?p=3123431#p3123431"]Этот асм я не знаю, 51-й очевидно, но как мне кажется ошибка в первой же команде. Зачем в ячейку с данными грузить маску? И инверсия в конце странно выглядит.[/uquote]
ну типо 80, это 1000 0000, и тогда должен быть переход, и инверсия старшего бита, переход кстати есть, но что-то вообще бред получается
ну типо 80, это 1000 0000, и тогда должен быть переход, и инверсия старшего бита, переход кстати есть, но что-то вообще бред получается
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Помогите с программированием на ассемблере
Что означает 0х80 я знаю, но это маска, ее надо применить в виде операции "И" с содержимым ячейки 021h, а не загружать ее туда, тем самым стирая исходное значение. После первой же команды у вас, как я понимаю, в той ячейке окажется число 0х80.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Помогите с программированием на ассемблере
А мне непонятно, зачем переходить по условию на метку, на которую перейдем и при невыполнении условия. И так 2 раза 
- Реклама
Re: Помогите с программированием на ассемблере
Полный бред...narius985 писал(а):1. Написать программу условного перехода по состоянию бита. Если
, то старший бит этой ячейки инвертируется. Если состояние младшего бита ячейки равно 1, то инвертируется весь байт ячейки ОЗУ с адресом 21Н.
Я же правильно прогу написал на это задание, почему при симуляции получается какой-то бред
MOV 21H,#80H
JNB 21H.7,J1
J1:CPL 21H.7
JBC 21H.0,J2
J2:XRL 21H, #0FFH
Несчастные преподы...
А логически мыслить, или хотя-бы расписать в строчку программу на обычном языке???
Есть ячейка в ОЗУ по адресу 21Н (неизвестно с чем внутри)
есть два условия с соответствующим решением:
1.
Если состояние старшего бита ячейки ОЗУ с адресом 21Н равно 0
ТО
старший бит ячейки ОЗУ с адресом 21Н инвертируется
2.
Если состояние младшего бита ячейки ОЗУ с адресом 21Н равно 1
ТО
инвертируется весь байт ячейки ОЗУ с адресом 21Н
можно добавить, что у ячеек с адресами 0х20-0х2F каждый бит имеет собственный адрес (поле прямоадресуемых бит)...
ИТОГ...
а-ну-ка СТУДЕНЬ, поразмышляй!
Re: Помогите с программированием на ассемблере
[uquote="BOB51",url="/forum/viewtopic.php?p=3125125#p3125125"]
Несчастные преподы...
А логически мыслить, или хотя-бы расписать в строчку программу на обычном языке???
Есть ячейка в ОЗУ по адресу 21Н (неизвестно с чем внутри)
есть два условия с соответствующим решением:
1.
Если состояние старшего бита ячейки ОЗУ с адресом 21Н равно 0
ТО
старший бит ячейки ОЗУ с адресом 21Н инвертируется
2.
Если состояние младшего бита ячейки ОЗУ с адресом 21Н равно 1
ТО
инвертируется весь байт ячейки ОЗУ с адресом 21Н
можно добавить, что у ячеек с адресами 0х20-0х2F каждый бит имеет собственный адрес (поле прямоадресуемых бит)...
ИТОГ...
а-ну-ка СТУДЕНЬ, поразмышляй!
[/uquote]
ну сомтр, команда JNb, это переход, если бит раверн нулю, но я сделал переход на метку, но он не переходит если бит равен нул. можешь просто ответить, нормально, твои выпендрёже мне пользы не приносят
Полный бред...narius985 писал(а):1. Написать программу условного перехода по состоянию бита. Если
, то старший бит этой ячейки инвертируется. Если состояние младшего бита ячейки равно 1, то инвертируется весь байт ячейки ОЗУ с адресом 21Н.
Я же правильно прогу написал на это задание, почему при симуляции получается какой-то бред
MOV 21H,#80H
JNB 21H.7,J1
J1:CPL 21H.7
JBC 21H.0,J2
J2:XRL 21H, #0FFH
Несчастные преподы...
А логически мыслить, или хотя-бы расписать в строчку программу на обычном языке???
Есть ячейка в ОЗУ по адресу 21Н (неизвестно с чем внутри)
есть два условия с соответствующим решением:
1.
Если состояние старшего бита ячейки ОЗУ с адресом 21Н равно 0
ТО
старший бит ячейки ОЗУ с адресом 21Н инвертируется
2.
Если состояние младшего бита ячейки ОЗУ с адресом 21Н равно 1
ТО
инвертируется весь байт ячейки ОЗУ с адресом 21Н
можно добавить, что у ячеек с адресами 0х20-0х2F каждый бит имеет собственный адрес (поле прямоадресуемых бит)...
ИТОГ...
а-ну-ка СТУДЕНЬ, поразмышляй!
ну сомтр, команда JNb, это переход, если бит раверн нулю, но я сделал переход на метку, но он не переходит если бит равен нул. можешь просто ответить, нормально, твои выпендрёже мне пользы не приносят
Последний раз редактировалось aen Вс июн 25, 2017 17:19:04, всего редактировалось 1 раз.
Причина: Нарушение Правил форума п. 2.7
Причина: Нарушение Правил форума п. 2.7
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Помогите с программированием на ассемблере
Могу написать программу и объяснить её работу. Без выпендрежа.
Docendo discimus
Re: Помогите с программированием на ассемблере
"Напишите за меня"
и
"помогите понять, как самому написать"
ВЕЩИ РАЗНЫЕ.
Можно конечно и написать, да толку с того не будет - разве что "конкурента убрать с дороги"... Только предпочитаю, чтоб человек сначала сам максимум вопрос продумал - и удовольствие от СОБСТВЕННОГО решения получил (а не облом в будущем).
Ежли взялся за работу с ассемблером (или иным предметом для изучения) то он должен сам понять, что и как и для чего делается, а не "драть копии не глядя".
Тем более на таких примитивах, которые во многих учебниках давно рассмотрены.

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


