Консультация № 185321
30.01.2012, 13:54
65.51 руб.
30.01.2012, 13:59
0 8 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
есть следующая задача:
В хранимом ОЗУ с адреса 0ВАСН массиве из 80 чисел в прямом коде найти наибольшее число и выдать на УВВ 9. Готовность устройства вывода задается “1” в старшем разряде устройства ввода №8.

есть готовый алгоритм и программа:
а в рецензии написали: В Вашем алгоритме 6-8 блоки неверны
помогите сделать так, чтоб правильно было



Программа:

К1: MVI B, 50H
K2: LXI H, 0ВАС
K3: MOV A, M
K4: M1: INX H
K5: SUB M
K6: MOV A, M
K7: M2: DCP B
К8: JNZ M1
K9: MOV B, A
K10: M3: IN 8
K11: JNC M3
K12: RRC
K13: JNC M3
K14: MOV A, B
K15: OUT 9
HLT

Обсуждение

давно
Посетитель
7438
7205
30.01.2012, 14:08
общий
Надо давать прямую ссылку на изображение
В программе, знамо дело, ошибка, отвечу попозже...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
30.01.2012, 14:12
общий
30.01.2012, 14:12
SUB M;№5
JPM Label
MOV A,M;№6
label:
DEC B;№7 ??DCP B
JNZ M1;№8
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
30.01.2012, 14:29
общий
30.01.2012, 14:32
Код:
К01: MVI B, 50H
K02: LXI H, 0ВАС
K03: MOV A, M
K04: M1: INX H
K05: SUB M
K0X: JPM M2;+ + + +
K06: MOV A, M
K07: M2: DCR B
К08: JNZ M1
K09: MOV B, A
K10: M3: IN 8
K11: JNC M3;- - - -
K12: RRC
K13: JNC M3
K14: MOV A, B
K15: OUT 9
HLT

Полностью исправленный код в соответсвии предоставленным рисунком.
+ добавить строку
- убрать строку
Я так понимаю, что DCP B это DCR B или DEC B
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
30.01.2012, 14:38
общий
Адресаты:
Почему не в ответ?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
30.01.2012, 17:43
общий
это ответ
Здравствуйте, Посетитель - 363279!

Исправленный вариант:
Код:
К01:	MVI	B, 50H
K02: LXI H, 0ВАСH
K03: MOV A, M
K04:M1: INX H
K05: CP M;FL<=A-M
K06: JPP M2;A>M
K07: MOV A, M
K08:M2: DCR B
К09: JNZ M1
K10: MOV B, A
K11:M3: IN 8
K12: RRC;
K13: JNC M3
K14: MOV A, B
K15: OUT 9
HLT

Отдельно замечания:
Блок №5 алгоритма - это не команда SUB, т.к. она изменяет как содержимое фалгов, так и содержимое самого регистра А. А это уже нарушение задания, т.к. в регистре А будет находится недостоверное значение. Там должна находится команда сравненния, работает она аналогично команде SUB(из А вычитается содержимое указанного регистра, устанавливаются соответственно флаги сравнения, НО содержимое регистра А остается без изменений). См. комментарий после точки с запятой.
Блок №6 алгоритма - в алгоритме переход на присвоение нового значения происходит если S=0, результат команды сравнения больше нуля или содержимое регистра А больше содержимого регистра М, но зачем присваивать явно меньшее значение, т.к. по заданию нужно: найти наибольшее число. Т.е. приведенная блок-схема ищет минимальное значение в массиве, а Вам необходимо в этом блоке поменять местами 0 и 1.
Блок №12 алгоритма - непонятно, что такое СЛА: сдвиг линейный аккумулятора, сдвиг левый аккумулятора. В коде Вы используете команду циклического правого сдвига. К12 я оставил без изменений, но обращаю на это Ваше внимание.

ps:вопросы задавайте в мини-форум.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
31.01.2012, 10:30
общий
Адресаты:
получается вот так алгоритм верен?
Прикрепленные файлы:
c52d29c427f62532e528cc8669383774.bmp
давно
Старший Модератор
31795
6196
31.01.2012, 11:18
общий
Цитата: 363279
получается вот так алгоритм верен?

Да!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
31.01.2012, 11:33
общий
Адресаты:
спасибо большое
Форма ответа