Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Tillian
0 / 0 / 0
Регистрация: 11.12.2015
Сообщений: 10
1

Базирование

19.01.2016, 21:06. Просмотров 406. Ответов 8
Метки нет (Все метки)

Помогите пожалуйста немного с понятием Базирования.
Я ответил,что правильный ответ №3,но я не уверен.
Какое определение наиболее правильное? Или это некоторое новое определение как смесь представленных определений?

1.Базирование - механизм формирования (получения ….) физического адреса в процессе исполнения программ при котором этот адрес образуется как результат сложения базы и смещения.
2. Базирование - один из механизмов формирования (получения ….) физического адреса в процессе исполнения программ при котором этот адрес образуется как результат объединения базы и смещения.
3. Базирование - один из механизмов формирования (получения ….) физического адреса в процессе исполнения программ, при котором этот адрес образуется по определенному правилу (алгоритму) с использованием базы и смещения.


2. Основные слова, входящие в определение, пояснить.
3. Ответить на вопросы:
- сколько может быть баз
- какие существуют правила образования физического адреса
- диапазон получения физического адреса относительно базы
- для чего был реализован этот механизм базирования
4. Пример реализации базирования для архитектуры 16 разрядного процессора INTEL 8086.

То,что отвечаю дальше:
2.Байт имеет местоположение, которое и есть физический адрес. В него может записываться и читаться информация.
Смещение- расстояние- от начала соответствующего сегмента. Адрес 0 есть адрес первого байта в сегменте, адрес 1 - второго байта и т. д. независимо от физического начального или базового адреса сегмента.
База- это сегментная сост. адреса.
Ответить на вопросы:
- сколько может быть баз
База может быть в 64-х одна, или 4(cs,ds,ss,es).
-какие существуют правила образования физического адреса
База+4h+смещение= итоговый адрес
А дальше я попал немного в просак..
0
Constantin Cat
2980 / 1114 / 376
Регистрация: 28.02.2015
Сообщений: 2,452
Завершенные тесты: 1
20.01.2016, 11:20 2
Цитата Сообщение от Tillian Посмотреть сообщение
База может быть в 64-х одна, или 4(cs,ds,ss,es).
Вы перепутали базированние с сегментированием.

Цитата Сообщение от Tillian Посмотреть сообщение
1.Базирование - механизм формирования (получения ….) физического адреса в процессе исполнения программ при котором этот адрес образуется как результат сложения базы и смещения.
Адресация по базе со смещением.
2)Физический адрес = значение базового регистра складывается со смещением и значением сегментного адреса умноженого на 16-ть. Т.е. если:
ds=0xb800
bx=0x1000
смещение = 0х0120
Физический адрес будет :
0хB8000 +
0x01000 +
0x00120 =
0xB9120 -
3а)Базовыми(0х86 : 0х286) могут быть регистры: BX, BP, SI и DI.
3в)см. п2.
3с)Взависимости от размера смещения может быть сгенерированна как короткая (-128 : +127) так и длинная(в пределах сегмента) команды.
3d)Такая адресация служит для доступа к полям структур данных.
4)Упрощенная mov ax,[bx + 6] или полная запись mov ax,ds:[bx + 6]

Добавлено через 7 минут
3в)дополнение:
Виды адресаций:
прямая - mov ax,es:0x0010
косвенная - mov ax,[ bx ]
по базе со смещением - mov ax,[ bx + 6 ]
по базе со смещение с индексированием - mov ax,[ bx + si + 6 ]
0
Mikl___
Автор FAQ
13303 / 6376 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
20.01.2016, 11:29 3
Цитата Сообщение от Tillian Посмотреть сообщение
или 4(cs,ds,ss,es)
сегментные регистры: CS, SS, DS, ES, FS, GS
0
Constantin Cat
2980 / 1114 / 376
Регистрация: 28.02.2015
Сообщений: 2,452
Завершенные тесты: 1
20.01.2016, 11:31 4
Mikl___
У него х86.
0
Mikl___
Автор FAQ
13303 / 6376 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
20.01.2016, 11:42 5
Constantin Cat,
386, 486, Pentium также х86, ТС не пишет что у него 8086
0
Constantin Cat
2980 / 1114 / 376
Регистрация: 28.02.2015
Сообщений: 2,452
Завершенные тесты: 1
20.01.2016, 12:23 6
Mikl___, задание:
Цитата Сообщение от Tillian Посмотреть сообщение
4. Пример реализации базирования для архитектуры 16 разрядного процессора INTEL 8086
0
Mikl___
Автор FAQ
13303 / 6376 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
20.01.2016, 12:26 7
Constantin Cat,
спасибо, почему-то не обратил внимание...
0
Tillian
0 / 0 / 0
Регистрация: 11.12.2015
Сообщений: 10
20.01.2016, 14:30  [ТС] 8
Спасибо Вам огромное. И последний вопрос: Для чего вообще нужно базирование если простым языком? Как бы 1 развернутым простым предложением)
0
Constantin Cat
2980 / 1114 / 376
Регистрация: 28.02.2015
Сообщений: 2,452
Завершенные тесты: 1
20.01.2016, 14:59 9
К примеру есть код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
coord   struc
x   dw  ?;
y   dw  ?;
z   dw  ?;
coord   ends
. . .
a   coord   <1,2,3>
. . .
mov bx,offset a
mov ax,[bx]x;   mov ax,[bx]
mov ax,[bx]y;   mov ax,[bx + 2]
mov ax,[bx]z;   mov ax,[bx + 4]
При генерации кода, последниие строчки будут созданы со смещением.
0
20.01.2016, 14:59
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru