Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Задачи на ассемблере (http://forum.oszone.net/showthread.php?t=169115)

Snake750 03-03-2010 20:50 1360643

Задачи на ассемблере
 
Доброго времени суток.Очень нуждаюсь в вашей помощи.Преподаватель задал выполнить практическую работу.Пожалуйста помогите разобраться.
Задание 1.
Код:

Даны числа а=1234h и b=4321h (числа в 16ричном системе счисления)
Нужно выполнить над ними :сложение,вычитание,конъюнкцию и дизъюнкцию.
Еще необходимо определить флаги,вот только где их посмотреть я работаю во встроенном ассемблере в Borland Delphi 7

Я сделал только не знаю правильно или нет.
Код:

Сложение: 1234h+4321h=5555h
Вычитание: 1234h-4321h=FFFF FFFF FFFF CF13
Конъюнкция : У меня результат получился 544h
Дизъюнкция : Результат 21031h.

Скажите пожалуйста правильно я сделал или нет.
Задание 2.
Код:

Записать логический и физический адрес первых 5 ячеек 13-го сегмента.
Это задание мне вообще никак не понятно,прошу если есть возможность поделитель ссылой на ресурс где это описано.
Задание 3.
Код:

Дано
Cs=2135
IP 24AD
BP=1350
DS=46A8
AX=1820
Определить адрес следующей команды.

P.S не подумайте что я прошу все решить за меня или что то на подобии.Я прошу либо объяснить на каком нибудь примере как это хотя бы делается,потому читал учебник Assembler(В.Юров) но ничего сегментацию понять не могу.
Преподаватель либо не совсем адекватный,либо сам ничего не понимает.Проблема сдачи практических у всей группы.

Admiral 04-03-2010 01:56 1360812

Snake750
1.Сложение без вопросов.
Для вычитания формат записи ответа лучше свести до CF13 или CF13h. (h означает что число в 16ричной системе)
А вот здесь как раз весьма актуально, что нужно смотреть флаги. Так как при отнятии от меньшего большего произошёл перенос, о чём сигнализирует установка флага в 1 (на скриншоте ниже это флаг с).
Кстати, если бы было переполнение, в результате суммирования результат был больше FFFF, этот же флаг (более известен как бит переноса) точно так же бы сигнализировал про переполнение.

Иллюстрация операции вычитания в Boralnd TASM
Конъюнкция - логическое "И" (AND) или логическое умножение для данных значений (1234h и 4321h) даёт другой результат - 0220h
Тут всё просто...

Сначала числа переводятся в 2ричную систему исчисления
1234h -> 1001000110100 4321h ->100001100100001, далее разряд на разряд множим (отсутствие соответственного разряда у первого числа приравнивается к 0).
Если буквально - выходи 000001000100000b, или упомянутые 0220h.

Дизъюнкция - логическое "ИЛИ" (OR) или логическое сложение - 5335h
А тут ещё проще.

2.Например Адресация памяти в реальном режиме
Адресация памяти в защищённом режиме

P.S.
Для задач такого класса рекомендую почитать Абеля.
Вместо встроенного в Borland Delphi 7 ассемблера рекомендую воспользоваться Borland TASM'ом.
http://www.wasm.ru/toollist.php?list=7 (см. TASM 5+)
Там и флаги можно смотреть.

Snake750 04-03-2010 02:05 1360816

Admiral, вы на счет задания 3 ничего подсказать не можете.вообще понять не могу что там надо сделать.

Snake750 04-03-2010 18:28 1361304

Admiral, объясните пожалуйста как вы получили в дизъюнкции и конъюнкции такие результаты.Я проходил курс дискрентной математики,но там мы не производили операции с 16 ричными числами(в основном 0 и 1 )

Snake750 05-03-2010 01:49 1361498

Сразу спрошу тут.Скачал TASM 5+.Разархивировал.Получил вот такую структуру:
Код:

BIN
DOC
EXAMPLE
ENCLUDE
LIB
LIBGEN
file_id.diz
l2inc12.zip
ReadMe.txt
tasm32_v5.3_exe.rar
tasmpatch_for_tasm32v5.0.zip

В каталоге BIN позапускал все exe-файлы,ни один не работает(запуск и закрытие происходит).Подскажите пожалуйста как запустить данную программу.

Admiral 05-03-2010 12:02 1361657

Snake750 по 3му могу дать ссылку на общие сведенья
http://ru.wikipedia.org/wiki/Регистр процессора

Для проведение дизъюнкции и конъюнкции
Цитата:

Сначала числа переводятся в 2ричную систему исчисления
1234h -> 1001000110100 4321h ->100001100100001 >>
Программы там консольные, для начала нужно запустить консоль (Пуск->Выполнить->cmd нажать Enter) и уже там вызывать.
К сожалению тот архив не содержит 16 битные версии Tasm, Tlink и самое главное - Td, скриншот которого содержится в посте №2.
Такие файлы содержит например папка с Borland Pascal. Если последнего нету в наличии, то упомянутые файлы можно скачать отдельно, например отсюда http://faculty.kfupm.edu.sa/EE/basha.../downloads.htm
Данные файлы нужно разместить в папке BIN

Для начала в блокноте набирается код ассемблерной программы.
Далее в консоли по очереди даются команды
Код:

;ассемблирование (трансляция)
\bin\tasm /zi /l <путь и имя к файлу с исходным кодом программы>.asm
;линкование
\bin\tlink /v <путь и имя к объектному файлу созданном в предыдущем шаге>.obj
;и наконец отладка
\bin\td <путь и имя к файлу программы созданном в шаге №2>.exe


Snake750 05-03-2010 17:47 1361884

Admiral, По третьему заданию я наше только то что CS — указатель на кодовый сегмент. Связка CS:IP указывает на адрес в памяти следующей команды.
Зная что CS=2135h, IP=24ADh
Адрес следующей команды равен =2135+21AD=45E2h.
А для чего тогда даны значения регистров
BP=1350
DS=46A8
AX=1820
я не понял.Обьясните пожалуйста что с ними можно еще сделать чтобы найти адрес,или я уже нашел его?

Snake750 05-03-2010 18:07 1361894

Записать логический и физический адрес первых 5 ячеек 13-го сегмента.
Если я правильно понял то вся память разбита на 20 разрядные сегменты в диапазоне от 00000 до FFFFF.
Мой сегмент получается будет 00013?
Тогда как определить его логический адрес?Откуда взять смешение

Snake750 07-03-2010 00:36 1362681

Я нашел вот такой софт,посмотрите пожалуйста,то ли это что мне нужно.
Код:

Emu8086
http://www.emu8086.com/


Admiral 07-03-2010 03:11 1362731

Snake750, не пользовался этим ПО. Судя по скриншоту и краткому описанию это то, чего можно достичь в Tasm\Tlink\Td, но через графический интерфейс.

Snake750 07-03-2010 12:40 1362856

Admiral, ответьте пожалуйста на вышеизложенные мною вопросы.

Admiral 07-03-2010 16:07 1362986

Snake750, ответил бы, если б знал наверняка. Все сообщения берутся к вниманию, ответ идёт если известны достоверные сведенья.
Для вопроса про сегменты таких нет.
Для вопроса про адрес команды тоже есть сомнения по поводу указания дополнительных значений.

Судя по данным Википедии, ответ на третий вопрос был найден. Значения регистров BP, AX и сегмента DS, как изначальны данные, видятся как лишние.

Snake750 07-03-2010 17:31 1363031

Admiral, Спасибо.Теперь я еще больше убежден что преподаватель сам ничего не понимает


Время: 20:36.

Время: 20:36.
© OSzone.net 2001-