Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - [решено] Задачи на ассемблере

Ответить
Настройки темы
Assm - [решено] Задачи на ассемблере

Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток.Очень нуждаюсь в вашей помощи.Преподаватель задал выполнить практическую работу.Пожалуйста помогите разобраться.
Задание 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(В.Юров) но ничего сегментацию понять не могу.
Преподаватель либо не совсем адекватный,либо сам ничего не понимает.Проблема сдачи практических у всей группы.

Отправлено: 20:50, 03-03-2010

 

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


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+)
Там и флаги можно смотреть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:56, 04-03-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 02:05, 04-03-2010 | #3


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 18:28, 04-03-2010 | #4


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


Сразу спрошу тут.Скачал 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-файлы,ни один не работает(запуск и закрытие происходит).Подскажите пожалуйста как запустить данную программу.

Отправлено: 01:49, 05-03-2010 | #5


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 05-03-2010 | #6


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:47, 05-03-2010 | #7


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 18:07, 05-03-2010 | #8


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я нашел вот такой софт,посмотрите пожалуйста,то ли это что мне нужно.
Код: Выделить весь код
Emu8086
 http://www.emu8086.com/

Отправлено: 00:36, 07-03-2010 | #9


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


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

Отправлено: 03:11, 07-03-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - [решено] Задачи на ассемблере

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Assm - Простые проги на ассемблере под dos Dimaev Программирование и базы данных 2 08-05-2009 11:18
Assm - Помогите решить задание на ассемблере Wild_cat Программирование и базы данных 3 10-03-2009 09:49
графика на ассемблере под дос JCooper Программирование и базы данных 8 21-09-2004 09:46
программа на Ассемблере himik Программирование и базы данных 9 22-11-2003 04:40
Аналитические задачи noname00.pas Программирование и базы данных 4 12-12-2001 15:04




 
Переход