Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Пт июн 09, 2017 17:37:27

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

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

Пт июн 09, 2017 17:59:00

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

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

Пт июн 09, 2017 18:25:47

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

ну типо 80, это 1000 0000, и тогда должен быть переход, и инверсия старшего бита, переход кстати есть, но что-то вообще бред получается

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

Пт июн 09, 2017 19:24:33

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

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

Пт июн 09, 2017 21:28:50

А мне непонятно, зачем переходить по условию на метку, на которую перейдем и при невыполнении условия. И так 2 раза :)))

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

Пн июн 12, 2017 13:25:10

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:

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

Вс июн 25, 2017 13:27:14

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:

ну сомтр, команда JNb, это переход, если бит раверн нулю, но я сделал переход на метку, но он не переходит если бит равен нул. можешь просто ответить, нормально, твои выпендрёже мне пользы не приносят
Последний раз редактировалось aen Вс июн 25, 2017 17:19:04, всего редактировалось 1 раз.
Причина: Нарушение Правил форума п. 2.7

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

Пн июн 26, 2017 03:32:02

Могу написать программу и объяснить её работу. Без выпендрежа.

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

Пн июн 26, 2017 06:54:47

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