1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
|
|||||||||||
1 | |||||||||||
Готовим адрес буфера в ES:BX09.04.2012, 10:18. Показов 3165. Ответов 7
Метки нет (Все метки)
Здравствуйте.
Нашёл программку вывода содержимого сектора дискеты
Подскажите, пожалуйста
0
|
09.04.2012, 10:18 | |
Ответы с готовыми решениями:
7
Переполнение буфера, адрес возврата Получить адрес буфера файла Как, имея адрес буфера, записать что-то в него? Как задать адрес буфера в памяти процессора? В каком виде? |
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
09.04.2012, 10:45 | 2 |
INT 13 02 - берет буфер именно из ES:BX
Добавлено через 13 минут Кстати здесь можно обойтись и без этих команд, в com сегментные регистры равны.
0
|
1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
|
|
09.04.2012, 15:15 [ТС] | 3 |
Это всё понятно, но ответ на вопрос не дан=)
получается что в регистре ES будет адрес сегмента кода.так? зачем это нужно?
0
|
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
09.04.2012, 15:34 | 4 |
Роман_1985
В данной программе вообще не нужно, т.к. это com программа. Она расположена в одном сегменте (CS=ES=DS=SS). Если бы была exe то в ES бы следовало занести тот сегмент, в котором размещен твой буфер (buf db 512 dup).
1
|
1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
|
|
09.04.2012, 15:54 [ТС] | 5 |
мне вообще хотелось бы разобраться, т.к делаю более сложную производную от этой программу(в ехе). Т.е правильлно я понял: на самом деле буфер(buf db 512 dup) находится в DS(сегменте данных), но в этой программе автор учитывает что CS=DS и пересылает CS. Т.е правильнее будет DS переслать?
0
|
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
09.04.2012, 16:12 | 6 |
В com буфер находится во всех сегментах.
Добавлено через 4 минуты Там один единственный сегмент и в нём всё - код, данные, стэк. Добавлено через 1 минуту Если будеш писать exe, пусть строка будет у тебя в сегменте данных и код перед вызовом прерывание напишеш следующий [mov ax,ds/mov es,ax].
1
|
1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
|
|
09.04.2012, 20:22 [ТС] | 7 |
_lucius_,Спасибо=)
Систематизирую. В ES:BX должен храниться физический адрес буфера. Помещаем в ES адрес сегмента, в котором определён буфер( mov sx,ds | mov es,ax), в BX - смещение буфера относительно этого сегмента (mov bx, offset buffer)
0
|
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
|
|
09.04.2012, 21:14 | 8 |
Роман_1985 Да, все правельно.
0
|
09.04.2012, 21:14 | |
09.04.2012, 21:14 | |
Помогаю со студенческими работами здесь
8
Какой адрес сегмента должен быть для буфера клавиатуры в защищенном режиме Вычислить адрес верхушки стека, адрес следующей команды, адрес переменной, адрес которой содержится в BX Готовим видеокарту Готовим флюс. Простой, но "вкусный". Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |