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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

Ответ
 
Опции темы
Старый 14.02.2019, 14:42   #1
Андрей8Андрей
Новичок
 
Регистрация: 11.12.2016
Сообщений: 2
Репутация: 10
По умолчанию Не могу разобраться с вычислением адресов сегментов в ассемблере

Начал изучать курс по ассемблеру на Интуите и застрял на таких заданиях, в самой лекции курса нифига не возможно разобрать, вопросы такие:

Определите физический адрес точки входа обработчика прерываний в реальном режиме для указанного ниже вектора некоторого прерывания. Вектор прерывания: 1011 0111 1110 0111 0101 1110 0011 1110

ответ 0DDCAEh

У меня такой вопрос почему такой ответ а не B7E75E3Eh как такие высчитываются?

И вот еще: В приведенной ниже таблице показано состояние основных регистров процессора при выполнении некоторой задачи в защищенном режиме
Вычислите смещение дескриптора сегмента данных (DS) от начала соответствующей дескрипторной таблицы для исполняемой в данный момент задачи 0000 0001 1010 1111DS

как это все правильно читать и высчитывать?
Андрей8Андрей вне форума   Ответить с цитированием
Старый 14.02.2019, 15:15   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 13,319
Репутация: 2298
По умолчанию

Цитата:
Сообщение от Андрей8Андрей Посмотреть сообщение
У меня такой вопрос почему такой ответ а не B7E75E3Eh как такие высчитываются?
Потому что учить надо было.
1. В векторе две части, именно поэтому B7E75E3Eh уже быть не может.
2. Адрес 20битный, именно поэтому B7E75E3Eh уже быть не может.
1011 0111 1110 0111 0000 + 0101 1110 0011 1110 = 0BDCAE
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 15.02.2019, 08:34   #3
R71MT
Профессионал
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Адрес: Фергана
Сообщений: 1,266
Репутация: 1026
По умолчанию

Цитата:
Сообщение от Андрей8Андрей Посмотреть сообщение
ответ 0DDCAEh
Код:

1011.0111.1110.0111 = B7E7
0101.1110.0011.1110 = 5E3E
--------------------------
B7E7:5E3E (вектор в формате Seg:Offs)
---------
чтобы получить из него физ.адрес,
нужно сегмент умножить на 16 (10h) и прибавить к нему офсет.
---------
(B7E7 * 10) = B7E70 + 5E3E = BDCAE (линейный/физический адрес)

__________________
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Старый 16.02.2019, 01:58   #4
R71MT
Профессионал
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Адрес: Фергана
Сообщений: 1,266
Репутация: 1026
По умолчанию

Цитата:
Сообщение от Андрей8Андрей Посмотреть сообщение
У меня такой вопрос почему
вопрос где появился, там и....
и это не ново.. у всех так, кто сталкивается с асмом - где начали, там и оставились
__________________
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу написать данную программу на ассемблере? (смог на C++ ) Пиф Assembler 0 09.03.2013 20:58
Не могу разобраться с задачей на ассемблере (GAS Linux) (первая программа, схожу с ума?) Пиф Помощь студентам 0 05.03.2013 16:29
Создание меток отдельных сегментов таблицы Excel 2010 own Microsoft Office Excel 1 29.01.2011 23:12
Не могу вернуть float из процедуры на ассемблере в си yukas Assembler 9 14.05.2010 04:08
создание собственных сегментов памяти Майкл18 Assembler 7 30.11.2009 03:19


10:30.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru