![]() |
Задачи на ассемблере
Доброго времени суток.Очень нуждаюсь в вашей помощи.Преподаватель задал выполнить практическую работу.Пожалуйста помогите разобраться.
Задание 1. Код:
Даны числа а=1234h и b=4321h (числа в 16ричном системе счисления) Код:
Сложение: 1234h+4321h=5555h Задание 2. Код:
Записать логический и физический адрес первых 5 ячеек 13-го сегмента. Задание 3. Код:
Дано Преподаватель либо не совсем адекватный,либо сам ничего не понимает.Проблема сдачи практических у всей группы. |
Snake750
1.Сложение без вопросов. Для вычитания формат записи ответа лучше свести до CF13 или CF13h. (h означает что число в 16ричной системе) А вот здесь как раз весьма актуально, что нужно смотреть флаги. Так как при отнятии от меньшего большего произошёл перенос, о чём сигнализирует установка флага в 1 (на скриншоте ниже это флаг с). Кстати, если бы было переполнение, в результате суммирования результат был больше FFFF, этот же флаг (более известен как бит переноса) точно так же бы сигнализировал про переполнение. ![]() Иллюстрация операции вычитания в Boralnd TASM Конъюнкция - логическое "И" (AND) или логическое умножение для данных значений (1234h и 4321h) даёт другой результат - 0220h Дизъюнкция - логическое "ИЛИ" (OR) или логическое сложение - 5335h А тут ещё проще. 2.Например Адресация памяти в реальном режиме Адресация памяти в защищённом режиме P.S. Для задач такого класса рекомендую почитать Абеля. Вместо встроенного в Borland Delphi 7 ассемблера рекомендую воспользоваться Borland TASM'ом. http://www.wasm.ru/toollist.php?list=7 (см. TASM 5+) Там и флаги можно смотреть. |
Admiral, вы на счет задания 3 ничего подсказать не можете.вообще понять не могу что там надо сделать.
|
Admiral, объясните пожалуйста как вы получили в дизъюнкции и конъюнкции такие результаты.Я проходил курс дискрентной математики,но там мы не производили операции с 16 ричными числами(в основном 0 и 1 )
|
Сразу спрошу тут.Скачал TASM 5+.Разархивировал.Получил вот такую структуру:
Код:
BIN |
Snake750 по 3му могу дать ссылку на общие сведенья
http://ru.wikipedia.org/wiki/Регистр процессора Для проведение дизъюнкции и конъюнкции Цитата:
К сожалению тот архив не содержит 16 битные версии Tasm, Tlink и самое главное - Td, скриншот которого содержится в посте №2. Такие файлы содержит например папка с Borland Pascal. Если последнего нету в наличии, то упомянутые файлы можно скачать отдельно, например отсюда http://faculty.kfupm.edu.sa/EE/basha.../downloads.htm Данные файлы нужно разместить в папке BIN Для начала в блокноте набирается код ассемблерной программы. Далее в консоли по очереди даются команды Код:
;ассемблирование (трансляция) |
Admiral, По третьему заданию я наше только то что CS — указатель на кодовый сегмент. Связка CS:IP указывает на адрес в памяти следующей команды.
Зная что CS=2135h, IP=24ADh Адрес следующей команды равен =2135+21AD=45E2h. А для чего тогда даны значения регистров BP=1350 DS=46A8 AX=1820 я не понял.Обьясните пожалуйста что с ними можно еще сделать чтобы найти адрес,или я уже нашел его? |
Записать логический и физический адрес первых 5 ячеек 13-го сегмента.
Если я правильно понял то вся память разбита на 20 разрядные сегменты в диапазоне от 00000 до FFFFF. Мой сегмент получается будет 00013? Тогда как определить его логический адрес?Откуда взять смешение |
Я нашел вот такой софт,посмотрите пожалуйста,то ли это что мне нужно.
|
Snake750, не пользовался этим ПО. Судя по скриншоту и краткому описанию это то, чего можно достичь в Tasm\Tlink\Td, но через графический интерфейс.
|
Admiral, ответьте пожалуйста на вышеизложенные мною вопросы.
|
Snake750, ответил бы, если б знал наверняка. Все сообщения берутся к вниманию, ответ идёт если известны достоверные сведенья.
Для вопроса про сегменты таких нет. Для вопроса про адрес команды тоже есть сомнения по поводу указания дополнительных значений. Судя по данным Википедии, ответ на третий вопрос был найден. Значения регистров BP, AX и сегмента DS, как изначальны данные, видятся как лишние. |
Admiral, Спасибо.Теперь я еще больше убежден что преподаватель сам ничего не понимает
|
Время: 20:36. |
Время: 20:36.
© OSzone.net 2001-