Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 30.03.2020, 00:31   #1
Meowtie
Новичок
Джуниор
 
Регистрация: 30.03.2020
Сообщений: 5
Печаль Не работает простая программа (Assembler)

Доброго времени суток всем.

Наступил очередной семестр второго курса и появился новый предмет, а именно "Компьютерные системы и сети". Мы начали изучение Систем. Я точно не разбираюсь в этом всем, но мы работаем в виртуальной машине (ну, мы запускаем симуляцию Windows XP) и в ней работаем в ADSIM812, если это вообще названии программы...

Anyway. Вот задача: "Команда MUL вычисляет произведение двух целых беззнковых чисел, хранящихся в регистрах A и B. Младшая часть произведения размещается в A, а старшая - в регистре-расширителе В. Если содержимое B оказывается равным нулю, то флаг OV сбрасывается, иначе - устанавливается. Флаг переноса всегда сбрасывается. Например, если аккумулятор содержал число 200[SUB](10)[/SUB] (0C8H), а расширитель 160[SUB](10)[/SUB] (0А0Н), то в результате выполнения команды MUL AB получится произведение 32000 (7D00H). Аккумулятор будет содержать нуль, а расширитель – 7DН, флаг OV будет установлен, а флаг C - сброшен. Написать программу и проверить это утверждение." И да, я хочу, чтобы в программе именно были заданы значения A и B, а не вручную их вписывать.

Итак, я пробовала несколько вариантов, но ни один из них не сработал:
1.
$MOD812
MOV A, #C8H
MOV B, #A0H
MUL AB
END

2.
$MOD812
MOV А, #0
MOV R0, #10Н
MOV 10H, #C8H
MOV R1, #11H
MOV 11H, #A0H
ADD A, @R0
ADD B, @R1
MUL AB
MOV @R0, A
END

Я пробовала без определения B как ячейка R1. Я пробовала без обнуления Аккумулятора. Я пробовала писать "MOV R0, #10Н" без хештега (ибо в R0 и в 00 ячейке появлялось значение 10 и я подумала, что это номер ячейки, в которую я хотела закинуть значение)... Ничего вообще не помогало и все равно не работало(

Помогите, пожалуйста, разобраться, где ошибка (или ошибки) в моих программах или покажите, как именно должна была выглядеть программа.
Meowtie вне форума Ответить с цитированием
Старый 30.03.2020, 00:56   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,695
По умолчанию

Цитата:
Сообщение от Meowtie Посмотреть сообщение
я пробовала несколько вариантов
Как именно Вы пробовали варианты?
Цитата:
Сообщение от Meowtie Посмотреть сообщение
но ни один из них не сработал
Не сработали - это как? Чуть подробнее - что произошло?
Black Fregat вне форума Ответить с цитированием
Старый 30.03.2020, 01:27   #3
Meowtie
Новичок
Джуниор
 
Регистрация: 30.03.2020
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Как именно Вы пробовали варианты?

Не сработали - это как? Чуть подробнее - что произошло?
Я прикрепила файл, где написан примерно такой же алгоритм, как и тот, что использовала я. Для каждого варианта я пересохранила блокнот с расширением .asm, удаляла файлы с расширениями .lsm (кажется так назывался) и .hex, добавляла снова их с помощью транслятора и в симуляторе ADSIM812 пробовала запускать программы. Ну, открывала и запускала.

Не сработала это ячейки все были пустыми, а также поля аккумулятора и Rn также не были заполнены, хотя, судя по тому, чего я добавилась, они должны были заполняться при запуске программы.
Изображения
Тип файла: jpg IMG_20200330_002205.jpg (56.5 Кб, 1 просмотров)
Meowtie вне форума Ответить с цитированием
Старый 30.03.2020, 11:58   #4
ViktorR
Участник клуба
 
Регистрация: 23.10.2010
Сообщений: 1,509
По умолчанию

Встряну на секунду, так как мне неизвестен этот симулятор и asm.
и в первом, и во втором примерах:
Код:
MUL AB
а должно быть вроде такого:
Код:
MUL A, B
Во втором примере:
Код:
MOV R0, #10Н
MOV 10H, #C8H   // 10H - это адрес куда надо отправить #C8H ???
MOV R1, #11H
MOV 11H, #A0H // 11H - это адрес куда надо отправить #A0H ???
Тут что-то не так. Но как уже писал, в этом деле ни гугу.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 30.03.2020, 12:14   #5
Meowtie
Новичок
Джуниор
 
Регистрация: 30.03.2020
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Встряну на секунду, так как мне неизвестен этот симулятор и asm.
и в первом, и во втором примерах:
Код:
MUL AB
а должно быть вроде такого:
Код:
MUL A, B
У нас в данных нам методичках написано, что должно быть без запятых в случае умножения и деления. Я попробовала запустить прогу, где было всего, по сути, одна строчка "MUL AB" и в SFRs я ввела вручную в пункты A и B значения, после чего запустила прогу и он мне выдал верный ответ в B. Однако, все же, как сделать так, чтобы не вручную вбивалось, а значения появлялись сами при запуске программы? И да, спасибо, что тоже откликнулись, хотя и не совсем на своем поле боя.. )

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Во втором примере:
Код:
MOV R0, #10Н
MOV 10H, #C8H   // 10H - это адрес куда надо отправить #C8H ???
MOV R1, #11H
MOV 11H, #A0H // 11H - это адрес куда надо отправить #A0H ???
Тут что-то не так. Но как уже писал, в этом деле ни гугу.
На счет комментариев - все верно. 10H и 11H это 10я и 11я клетка в 16тиразрядной таблице (не знаю, как точно она называется).
Meowtie вне форума Ответить с цитированием
Старый 31.03.2020, 00:56   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,695
По умолчанию

Ошибка в записи шестнадцатиричных значений.
Вот так проглатывает:
Код:
$MOD812
MOV A, #0C8H
MOV B, #0A0H
MUL AB
END
Black Fregat вне форума Ответить с цитированием
Старый 31.03.2020, 16:31   #7
Meowtie
Новичок
Джуниор
 
Регистрация: 30.03.2020
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Ошибка в записи шестнадцатиричных значений.
Вот так проглатывает:
Код:
$MOD812
MOV A, #0C8H
MOV B, #0A0H
MUL AB
END
БОЖЕ МОЙ, ВЫ ПРАВЫ!
Спасибо большое! Вы меня очень-очень выручили <3
Безмерно благодарю
Meowtie вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает простая программа умножения Meowtie Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.03.2020 00:25
Простая Программа govno Фриланс 8 06.02.2012 16:29
простая программа stap Паскаль, Turbo Pascal, PascalABC.NET 3 21.12.2011 14:49
Не работает самая простая программа tregub-evgeniy Помощь студентам 1 26.12.2010 00:17
Простая программа russian-stalker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 27.11.2010 23:52


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS