Последние записи
- Модуль числа |a| без условных операций на CMD
- Как копировать текст из блока в буфер обмена?
- Получение ProductKey установленной Windows
- Как парсить https сайт ?
- Смена регистра строки текста на BAT (CMD)
- Вывод разноцветного текста на BAT (CMD)
- Узнать дату окончания сертификата
- Как создать полноценный сайт на Open Server
- Получить температуру процессора на bat-файлах
- Динамические массивы в Lazarus / Delphi — индексация элементов
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
8th
Ноя
ASSEMBLER&WIN32. КУРС МОЛОДОГО БОЙЦА. УРОК 2.
Память системы
Ладно, приступим. Сначала я объясню, что такое смещение. Смещение это положение относительно чего-то. Смещение может быть в файле, в памяти и вообще во всём. Если говорить по-другому, то смещение это положение, адрес, местонахождение всегда измеряется в байтах. У каждой переменной есть смещение, у каждой команды есть смещение.
Немного истории.
Теперь о памяти. В ДОС и в windows 3.Х память была сегментной. Вся память делилась на сегменты по 64 КВ., и адрес (именно адрес, а не смещение) задавалась, форматом сегмент: офсет. Сегмент задаёт порядковый номер сегмента, а офсет задаёт смещение чего-либо в этом сегменте.
| Память | ||||
| Сегмент 1 (64kb) |
Сегмент 2 (64kb) |
Сегмент 3 (64kb) |
Сегмент 4 (64kb) |
и так далее |
Учтите, что это объяснение для 16-разрядных программ, о 32-разрядных я расскажу позже, (но не пропускайте эту часть, важно понять, что такое 32-разрядность).
Таблица выше иллюстрирует общую память, разделенную на сегменты по 64kb. Здесь максимум 65536 сегментов. Теперь возьмите один из сегментов:
| Сегмент 1(64kb) | |||||
| Смещение 1 | Смещение 2 | Смещение 3 | Смещение 4 | Смещение 5 | и так далее |
Вы спросите, зачем нужна эта сегментность. Всему есть разумное объяснение. Дело в том в том, что ДОС 16 битный. И регистры 16 битные. С помощью 16 бит можно адресовать только 65536 байт памяти и 65536 сегментов.
Например:
0030:4012 (всё шестнадцатиричное)
Это означает: сегмент 30, смещение 4012. Чтобы узнать, что находится в том адресе, вы сначала переходите на сегмент 30, а затем в сегменте смещаетесь на 4012. В предыдущих уроках мы узнали о сегментных и указательных регистрах. Например, сегментные регистры:
CS — Сегмент кода
DS — Сегмент данных
SS — Сегмент стека
ES — Дополнительный сегмент
FS — Универсальный сегмент
GS — Универсальный сегмент
Названия говорят о их функциях: сегмент кода (CS) содержит номер секции, где вылнен текущий код. Сегмент данных для получения данных из текущего сегмента. На стек указывает сегмент стека (SS) (подробнее о стеке я раскажу позже), ES, FS, GS — универсальные регистры и могут использоваться для любого сегмента (не в win32).
Теперь о Win32
Выделение памяти.
Если вам даётся 2ГБ памяти, то это не означает, что вы можете обратиться к любому участку памяти. Для того чтобы получить доступ к некоторому участку памяти надо сначала её зарезервировать. Грубо говоря, перед резервированием памяти, резервируемого участка памяти просто не существует (я не оговорился её просто не существует), вы как бы его создаёте и задаёте ему атрибуты доступа (полный доступ, только чтение, только запись, нет доступа). Минимальный размер выделяемой памяти — страница, равна 1000 байтам (для тех, кто не привык к шестнадцатеричной записи, это 4096 байт — 4КБ). Даже если вы захотите выделить 5 байт, то всё равно выделится 4КБ. Такой метод распределения памяти называется гранулярность. Думаю, вы не столкнётесь с тем, что вам надо будет выделять память, лично мне это ни разу не пригодилось. Это нужно при работе с файлами для того, что бы в эту память читать файл.
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы – геометрия природы
Crypt – Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
8th
Если в переменной больше 4 цифр, после третей с конца ставим запятую
Есть переменная, назовем ее number, в ней находятся цифры.
Возможно ли в одну строчку сделать разделитель.
Тоесть если в переменной больше 4 цифр, после третей с конца ставим запятую. Пример 43,555 или 5,777 или 443 (читать всё…)
8th
Открыть ссылку в Internet Explorer
Здравствуйте. Такой вот вопрос. Есть адрес типа хттп://сайт.ком . Необходимо что бы этот адрес при нажатии на кнопку открывался с помощью браузера Internet Explorer.
Используя ShellExecute ссылка открывается тем браузером, который стоит по умолчанию. Мне же нужно что бы ссылка открывалась только в Internet Explorer и ни каким другим браузером. (читать всё…)
8th
При использовании ShellExecute, ругается на пробел в имени файла
У меня есть *.ехе — шник, который обрабатывает файл находящийся в некоторой директории. Если в пути к файлу имеется пробел, например: (читать всё…)
7th
Ноя
Получить слово между кавычек с помощью регулярных выражений
Добрый день, в общем с регулярками я практически не работал, по -этому до конца не понимаю как описывать щаблон (паттерн).
есть шаблон, в нем htlm теги и собственно метки, которые я хочу получить, и заменить на какой-нибудь текст, не могу получить как раз таки этим метки, например входной html файл: (читать всё…)
5th
Рассылка. Выпуск 126
От ведущего.
Здравствуйте, читатели рассылки. Сегодня выходит очередной 126 выпуск рассылки. На нашем форуме появилось много интересного и полезного материала. Часть его читайте в сегодняшнем выпуске.
5th
Как при вводе данных в поле с паролем проверить, чтобы его длина была не меньше 8 символов и чтобы оно содержало и буквы и цифры?
задание создать страницу — форму с полями ввода данных типа регистрации пользователя: имя пользователя, логин, пароль. Вопрос: как при вводе данных в поле с паролем проверить, чтобы его длина была не меньше 8 символов и чтобы оно содержало и буквы и цифры? Нужно сделать это, используя регулярные выражения. Подскажите пожалуйста! (читать всё…)
Облако меток
ассемблер timer TBitMap select SaveToFile ShellExecute программы массив советы word MySQL SQL ListView pos random компоненты дата LoadFromFile form база данных сеть html php RichEdit indy строки Win Api tstringlist Image мысли макросы Edit ListBox office C/C++ memo графика StringGrid поиск canvas файл Pascal форма Файлы интернет Microsoft Office Excel excel winapi журнал ПРОграммист DelphiКупить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту

пеллетные котлы

Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)


