Это одна из фундаментальных характеристик любого языка программирования. Для разработки программы на некотором языке, необходимо знать, какие типы данных он поддерживает и как они в нем определены.
Тип данных определяет множество значений, обладающих общими свойствами, и, как следствие, множество операций, допустимых для данного типа данных.
Когда говорится о предназначенных для обработки на ЭВМ данных в рамках определенного языка программирования, то необходимо знать:
— как записывается константа данного типа;
— диапазон возможных значений;
— способ размещения данных в оперативной памяти ЭВМ.
В таблице 2.1. приведены поддерживаемые в VB типы данных.
Основные типы данных
Тип | Описание | Диапазон | Занимаемая память | Константа |
Byte | Целое без знака | 0 — 255 | 1байт | 0, 120, 255 |
Boolean | Логический | 2 байта | True, False | |
Date | Дата и время | January 1, 100 — December 31, 9999 | 8 байтов | # January 1, 1998# или # January 1, 98# |
Integer | Целое | -32768 — 32 767 | 2 байта | -11, |
Long | Длинное целое | -2147483648 — +2147483647 | 4 байта | -100000000 |
Single | Вещественные числа | ±1.4*10 — 45 — ±3.4*10 + 38 | 4 байта | -1.23 -0.123E+01 |
Double | Вещественные числа с двойной точностью | ±4.94*10 — 324 — ±1.79*10 + 308 | 8 байт | -1.23 -0.12E+100 |
Currency | Число с фиксированной точкой | -922337203 685477,58 —+922337203685477 | 8 байт | 12000.23 |
String | Символьный | 0 — 2000000000 | 1байт на один символ | «Строка символов» |
Object | Объект | 4 байта | ||
Variant | Произвольный тип | Любой из типов | Определяется значением |
Кто такой Data Engineer
Процесс создания приложения на языке Visual Basic состоит из ряда этапов:
1. Постановка задачи – составление по возможности точного и понятного словесного описания того, как должно работать будущее приложение. Это описание должно объяснять и то, как будет выглядеть экранная форма, в каком виде будут представлены исходные данные и результаты.
2. Разработка интерфейса – создание экранной формы (окна приложения) со всеми объектами и свойствами этих объектов.
3. Собственно программирование – определение того, какие события будут происходить в процессе работы приложения, составление алгоритмов процедур для этих событий и написание программы (программных кодов этих процедур).
4. Отладка программы – устранение логических ошибок в процедурах и достижение того, чтобы приложение удовлетворительно работало в среде проектирования.
Все, что нужно знать о профессии аналитика данных
5. Сохранение проекта и, при желании, компиляция – превращение объекта в исполняемое приложение, способное работать самостоятельно – за пределами среды проектирования.
Пользовательский интерфейс – это лицо приложения, то есть то, что увидит пользователь после запуска программы.
Разработка интерфейса состоит из таких шагов:
· Создание эскиза (чертежа) экранной формы;
· Вход в среду проектирования Visual Basic;
· Создание экранной формы и установка значений свойств этой формы;
· Создание на форме объектов управления и установка значений свойств этих объектов.
Выполним запуск Visual Basic, войдем в режим создания нового проекта и выберем тип Standard Exe. Обратим внимание, что в строке заголовка диалогового окна Visual Basic появится слово Design. Это означает, что программа перешла в режим разработки приложения.
Стандартный проект Visual Basic состоит из одной формы, или диалогового окна, которое, как правило, и составляет основное окно интерфейса разрабатываемой программы. В окне проводника проекта (Project Explorer) представлен список элементов, составляющих данный проект. В данный случае, новый проект с именем по умолчанию Project1 содержит только одну форму Form1, расположенную в папке Forms.
При разработке интерфейса для программы должны быть предусмотрены средства для ввода исходных данных, инициирования вычислений, а также для вывода полученных результатов на экран. Для выполнения этих функций служат элементы управления.
Для того чтобы поместить на форму элемент управления, необходимо проделать следующее: нажать мышкой на нужный элемент на панели ToolBox, например, на кнопку Command Button. После этого кнопка окажется вдавленной. Теперь надо поместить курсор мыши на форму. В результате этих манипуляций на форме появится кнопка, имеющая размеры прямоугольника.
Если необходимо изменить размеры кнопки (элемента), то для этого надо выделить этот элемент нажатием левой кнопки мыши и растянуть его за маркеры, расположенные на вершинах элемента. Переместить элемент в другое место можно обычным перетаскиванием (DragЭто моя первая форма», заголовок будет меняться по мере ввода текста.
Для запуска программы надо нажать на кнопку (Start), расположенную на панели инструментов Standart, или выбрать команду Start в пункте меню Run. После «непродолжительной» компиляции, на экране появится окно программы!
Теперь для завершения работы программы надо нажать на крестик в правом верхнем углу формы или кнопку (End) на панели инструментов Standart. После закрытия программы пользователь возвращается в среду разработки VB.
Для сохранения проекта надо нажать на кнопку стандартной панели (Save Project) или выбрать команду Save Project в пункте меню File. При этом последовательно активизируются окна для указания каталога и имени файла сохранения для формы №1 (Form1.frm), затем — для файла Project1.vbp (vbp — Visual Basic Project). Теперь проект сохранён.
В дальнейшем его можно открыть кнопкой Open Project на стандартной панели или по команде Open Project в пункте меню File. Открывать нужно файл с расширением vbp. Здесь необходимо дать важный совет — надо почаще сохранять проект, так как либо Windows зависнет, либо свет выключат.
Имена используются для обозначения объектов в программе (имя программы, имя процедуры, имя константы, имя переменной).
Правила образования имен:
— имя должно начинаться только с латинской буквы;
— имя может включать только латинские буквы, цифры и «_» (знак подчеркивания);
— необходимо соблюдать уникальность имен;
— зарезервированные слова не могут использоваться в качестве имен (например, Integer, Sub, Long и т.п.);
— прописные и строчные буквы воспринимаются одинаково.
Для хранения данных в программе используются константы и переменные. Перед употреблением их в программе необходимо описать (объявить) с помощью соответствующих операторов описания. При объявлении константы и переменной указывается ее имя и тип. При этом им выделяется область оперативной памяти (область памяти — это несколько подряд расположенных ячеек) и имя указывает на эту область.
Константа — это величина, которая однозначно определяется на этапе разработки программы и не изменяется в процессе выполнения программы.
Константы применяются в тех случаях, когда требуется несколько раз использовать в программе одно и то же значение. Кроме того, константы делают текст программы более «прозрачным» и легким для понимания.
Тип констант можно не объявлять.
Переменная — это величина, которая может изменяться в процессе выполнения программы. Она сохраняет свое значение до тех пор, пока ей не будет присвоено новое значение.
Оператор описания (объявления) переменных:
имя [As тип ] [, имя [As тип ] ] …
В языках программирования ключевыми (служебными) словами называются такие слова, которые являются зарезервированными, используются только для описания каких-либо операторов и не могут быть использованы ни в каких других целях.
Dim — ключевое слово объявления переменной;
As — ключевое слово для обозначения типа данных для объявляемой переменной;
имя — имя описываемой переменной;
тип — тип данных для объявляемой переменной (при задании префикса тип указывать не обязательно).
В одном операторе можно одновременно описывать несколько переменных, указывая каждую последующую через запятую. Тип переменной можно указывать префиксом в операторе ее объявления, который добавляется в конец имени описываемой перемнной. Перечень всех префиксов и соответствующих им типов приведен в табл. 3.2.
Dim Name, YourName As String, N As Integer, Money As Currency.
Visual Basic позволяет не объявлять переменные заранее. Однако такая практика замедляет выполнение программы и, кроме того, является источником разных ошибок. Поэтому ее следует всячески избегать и объявлять перемнные с помощью соответствующих операторов описания. Чтобы VB расценивал необъявленную переменную как ошибочную, в разделе General должен присутствовать оператор Option Explicit. VB может помещать туда этот оператор автоматически – если задать из меню «Tools» команду «Options», нажать вкладку «Editor» и включить параметр «Require Variable Declaration».
В операторах описания констант и переменных могут применяться также ключевые слова VB: Public, Private, которые влияют на область видимости (действия) объявлений (область программы, в которой возможно их использование). В частности, константа или переменная может использоваться только в конкретной процедуре, во всех процедурах какого-либо определенного модуля (формы) или в любой процедуре данной программы. При этом правила задания области видимости переменной (для константы — аналогично) можно определить следующим образом
· Если переменная объявлена оператором Dim или Static в процедуре формы, то она будет доступна только внутри данной процедуры. Такие переменные называются локальными (закрытыми). Отличие Static от Dim заключается в том, что в этом случае (Static) после очередного выполнения данной процедуры значение такой переменной не будет потеряно.
· Если переменная объявлена операторами Dim или Private в разделе General формы, то она будет доступна для всех процедур этой формы. Для других форм такая переменная будет невидима.
· Если переменная объявлена оператором Public в разделе General какой-либо формы, то к ней возможен доступ из любых модулей (форм) приложения. Такие переменные называются глобальными (открытыми).
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Описание данных
В обзорной статье “БД и СУБД” внимание читателя акцентируется на том, что в определении понятия “база данных” фигурируют как сами данные, так и способы их организации. Под “описанием данных” обычно понимается совокупность средств формализации указанных понятий.
Самые общие рамки описания данных задаются реляционной моделью (см. “Реляционные БД”). В частности, именно она определяет необходимость организации данных в виде таблиц и накладывает дополнительные требования на устройство самих таблиц. На следующем уровне формализации полномочия передаются конкретной реляционной СУБД.
СУБД не имеет права нарушать принципы реляционной модели, но может как конкретизировать технические параметры (например, определять диапазоны представления чисел и т.п.), так и предоставлять разработчикам и пользователям свои собственные уникальные средства, отсутствующие в других системах. Эти средства бывают очень удобными (собственно, на этом поле в основном и конкурируют СУБД различных производителей).
Но, используя специфические для данной СУБД особенности, всегда надо иметь в виду возможность миграции БД в другую систему. Приведем короткий пример для иллюстрации сказанного. СУБД Microsoft Access разрешает именовать поля в таблицах с использованием букв русского алфавита. Большинство других СУБД такую возможность не поддерживает. Следовательно, здесь кроется источник потенциальных проблем.
Типы данных
Поскольку в статье “БД и СУБД” понятие данных определено не строго, договоримся об используемой терминологии (отметим, упомянутая статья, в свою очередь, ссылается на словарь школьной информатики А.П. Ершова). От данных мы будем требовать, чтобы они были атомарными, т.е. неделимыми. Любая совокупность таких неделимых данных уже является структурой.
Разумеется, здесь также приходится договариваться о том, когда остановиться в желании и возможности что-то “поделить”. Например, строку можно поделить на символы, в этом смысле строка, безусловно, является структурой данных. Но если договориться не делить строку на символы, то можно считать ее атомарной. Соответствующие термины неразрывно связаны с важнейшим понятием “тип данных”.
Когда говорят о свойствах сущности (объекта) (см. “Реляционные БД”), явно или неявно имеют в виду, что каждое конкретное свойство (в таблице — поле записи) принимает значения из некоторого множества. Указанное множество и называется типом данных.
В программировании часто употребляют термины “простой” и “сложный” (“составной”) типы данных. В указанном выше смысле типы данных бывают только простыми, а сложные типы — уже структуры данных. Хотя это лишь вопрос терминологии, применительно к реляционным базам данных удобно придерживаться описанной системы понятий (в случае объектно-реляционных баз данных — см. статью “БД и СУБД” — ситуация иная, но их мы здесь не рассматриваем). Подробнее о типах и структурах данных можно прочитать в соответствующих статьях (см. “Типы данных”, “Структуры данных”). В частности, в указанных статьях акцентируется внимание на том, что тип определяет и множество операций, которые можно выполнять над данными.
Все реляционные СУБД поддерживают данные следующих основных типов:
Приведенный список не является исчерпывающим. Как правило, СУБД также имеют типы для хранения больших текстовых и двоичных данных, специальные “денежные” типы и т.д. На следующем рисунке — снимке экрана конструктора таблиц Microsoft Access — показаны типы, поддерживаемые этой системой.
Отметим также, что, как правило, типы могут снабжаться модификаторами, уточняющими соответствующее множество данных (диапазон значений). Например, в Microsoft Access данные числового типа могут быть просто “целыми”, “длинными целыми”, “вещественными” и т.д. — см. рисунок.
Границу между типом и типом с модификатором удобнее проводить в рамках конкретной СУБД. Обычно считают, что данные, для описания которых используется одно ключевое слово на языке SQL, принадлежат одному типу, а те, которые описываются разными словами, — разным (см. пункт “Язык описания данных”).
Напомним, что реляционная модель предписывает организовывать данные в таблицы, набор которых разработчик определяет на этапе преобразования инфологической модели предметной области в даталогическую. На этом же этапе свойства сущностей становятся полями соответствующих типов, определяются первичные ключи, устанавливаются связи между таблицами. Соответствующие понятия подробно рассмотрены в статье “Реляционные БД”.
После того, как структура БД определена, требуется формализовать даталогическую модель на языке конкретной СУБД, иначе говоря — описать таблицы. Большинство современных СУБД предоставляют для этой цели удобные визуальные конструкторы (например, выше мы уже упоминали о конструкторе таблиц Microsoft Access). Описание (конструирование) каждой таблицы включает:
· Определение имени таблицы. Если таблица является представлением некоторой сущности, то имя обычно соответствует названию сущности. Имена таблиц связей, как правило, образуют из названий связываемых сущностей.
· Определение имен и типов полей. На этом же этапе обычно требуется установить специфические свойства конкретных полей — может ли поле содержать “пустые” (неопределенные) значения, каким должно быть значение “по умолчанию” и т.д.
· Определение первичного ключа. Несмотря на то, что реляционная модель требует наличия в каждой таблице первичного ключа, большинство СУБД позволяют не определять ключ в таблице. Этого, разумеется, следует избегать. К чести СУБД они практически всегда стараются “наставить разработчика на путь истинный” (см., например, рисунок).
· Определение (при необходимости) индексированных полей.
После конструирования таблиц необходимо установить связи между ними. В Microsoft Access для этого имеется специальное средство — “Схема данных”. На схеме очень удобно “рисовать” связи между таблицами, перетаскивая и накладывая друг на друга связанные поля. В большинстве случаев Access способен определить тип устанавливаемой связи. Например, если первичный ключ одной таблицы связывается с полем другой, не являющимся первичным ключом, то легко понять — и Access понимает, — что речь идет о связи “один ко многим”.
Схожие по функциям и интерфейсу средства визуального конструирования имеют и другие СУБД.
Язык описания данных
Какой бы визуальный интерфейс не предоставляла конкретная СУБД разработчикам, в подавляющем большинстве случаев за кадром находится общий для всех реляционных СУБД язык SQL (Structured Query Language). (Вообще говоря, об этом можно догадаться и из общих соображений. В статьях этого раздела неоднократно упоминалось о возможности миграции баз данных из системы в систему. Понятно, что указанную возможность можно обеспечить лишь при наличии некоторого общего системонезависимого ядра, каковым и является SQL.)
Об SQL чаще говорят, как о языке обработки данных (языке запросов), об этом рассказано в соответствующей статье (см. “Обработка данных” 2). Вместе с тем важно не забывать о том, что SQL — язык описания и обработки данных. В частности, именно в SQL определяется набор совместимых типов данных, обозначаемых соответствующими ключевыми словами (целые — INT, вещественные — FLOAT, строковые — VARCHAR, даты — DATE и т.д.).
Для создания таблиц в SQL имеется команда CREATE TABLE. На следующей иллюстрации показано описание таблицы “Friends” из трех полей в конструкторе Access.
А вот как выглядит определение той же таблицы на языке SQL:
CREATE TABLE Friends (
id INT NOT NULL,
Методические рекомендации
Применительно к описанию данных границу основной и старшей школы разумно провести между “понять описание” и “уметь описать”. В основной школе у учителя, как правило, нет возможности пройти с учениками весь путь проектирования БД. Поэтому имеет смысл только “препарировать” структуру небольшой, хорошо спроектированной БД. При этом есть возможность рассмотреть понятия “таблица”, “ключ”, “связь”. И, конечно, это очень удобный и уместный повод обсудить типы данных и акцентировать внимание учащихся на том, что тип определяет множество допустимых операций.
Не имеет смысла ограничиваться однотабличной базой данных. Конечно, такие базы имеют право на существование, но для целей обучения они малопригодны, так как не позволяют продемонстрировать целый ряд важнейших понятий.
В старшей школе можно провести полный цикл проектирования БД, начиная с построения инфологической модели. При переходе к даталогической модели появятся таблицы, которые придется описывать. На содержательном уровне границу между базовым и профильным уровнями здесь определяет степень сложности БД. На методическом — степень индивидуализации работы учащихся.
Проектируя вместе с учениками базу данных, очень важно не представлять все ее параметры заранее известными и определенными. Даже опытные разработчики много раз возвращаются к различным этапам проектирования — уточняют как даталогическую, так и инфологическую модель. Вполне можно в учебных целях о чем-то “забыть”, затем “обнаружить” несовершенство модели и уточнить ее. Это много эффективнее, чем сразу предъявить готовый “идеальный” образец.
Источник: xn—-7sbbfb7a7aej.xn--p1ai
Описание данных
В предыдущем примере символьная строка, предназначенная для вывода на экран, представляла собой данные, которыми оперировала программа. Данные могут представлять собой числа, определяющие ход выполнения программы или участвующие в вычислениях; адреса подпрограмм, обработчиков прерываний или просто тех или иных полей программы; специальные коды и т. д. Кроме данных, определяемых в тексте программы, в программу часто входят зарезервированные поля, предназначенные для заполнения по ходу выполнения программы, например, результатами вычислений или путем чтения из файла Все эти данные и зарезервированные поля должны быть определены в составе сегмента данных программы (в принципе они могут быть определены и в сегменте команд). Для определения данных используются три основные директивы Ассемблера:
db (define byte, определить байт) — для записи байтов;
dw (define word, определить слово) — для записи слов;
dd (define double, определить двойное слово) — для записи двойных слов.
Например, db 255, dw 6.5535, dd 100000000.
Для записи числовых данных можно использовать различные системы счисления, но чаще других используются десятичная и шестнадцатеричная запись:
size dw 256 ; В ячейку size записывается десятичное число 256
setb7 db 80h ; В ячейку setb7 записывается шестнадцатеричное число 80h
Примечание. Если мы говорим, что в какой-то ячейке записано десятичное число 256, мы имеем в виду не физическое содержимое ячейки, а лишь форму представления этого числа в исходном тексте программы. В слове с именем size фактически будет записан двоичный код 0000000100000000, являющийся двоичным эквивалентом десятичного числа 256. Во втором случае в байте с именем setb7 будет записан двоичный эквивалент шестнадцатеричного числа 80h, который составляет 10 000 000.
Для резервирования места под массивы используется оператор dup (duplicate, дублировать), который позволяет «размножить» байт, слово или двойное слово заданное число раз:
rawdata dw 300 dup (1) ; Резервируются 300 слов, заполненных числом 1
string db 80 dup (‘ л ‘) ;Резервируются 80 байтов, ’ л ‘
Присвоение данным символических имен позволяет обращаться к ним в программных предложениях, не заботясь о фактических адресах этих данных. Например, команда mov АХ, size занесет в регистр АХ содержимое ячейки size (число 256) независимо от того, в каком месте сегмента данных эта ячейка определена и в какое место физической памяти она попала.
Программист, использующий язык Ассемблера, должен иметь представление о том, каким образом назначаются адреса ячейкам программы, и уметь работать не только с символическими обозначениями, но и со значениями адресов. Рассмотрим пример сегмента данных, в котором определяются данные различных типов. В левой колонке указано смещение данных (в шестнадцатеричной форме), вычисляемое
относительно начала сегмента, data segment
OOOOh counter dw 10000
; используется 2 байта ; используется 10 байт ; используется 5 байт
0002h pages db «Страница 1»
OOOCh numbers db 0, 1, 2, 3, 4 001 Ih page_addr dw pages data ends
Сегмент данных начинается с данного по имени counter, которое описано как слово (2 байта) и содержит число 10 000. Очевидно, что его смещение равно 0. Поскольку это данное занимает два байта, следующее за ним данное pages получило смещение 2. Данное pages описывает строку текста длиной 10 символов и занимает в памяти столько же байтов, поэтому следующее данное numbers получило относительный адрес 2 + 10 = 12 = Ch.
В поле numbers записаны пять байтовых чисел, поэтому последнее данное сегмента с именем page_addr размещается по адресу Ch + 5 = 1 lh. Ассемблер, транслируя сегмент (в данном случае сегмента данных), начинает отсчет его относительных ад ресов. Этот отсчет ведется в специальной переменной транслятора, которая называется счетчиком текущего адреса и имеет символическое обозначение знака доллара ($). По мере обработки полей данных их символические имена сохраняются в создаваемой Ассемблером таблице имен вместе с соответствующими им значениями счетчика текущего адреса. Введенные нами символические имена получают значения, равные их смещениям. Таким образом, с точки зрения транслятора counter равно 0, pages — 2, numbers — Ch и т. д.
Адрес первого числа в массиве numbers равен просто numbers, адрес второго числа — numbers + 1, адрес третьего — numbers + 2 и т. д. Следующая команда прочитает последний элемент этого массива в регистр DL:
mov DL,numbers + 4
Какой смысл имело объединение ряда чисел в массив numbers? Никакого, если к этим числам мы все равно обращаемся по отдельности. Удобнее было объявить этот массив таким образом:
В этом случае для обращения к последнему элементу не надо вычислять его адрес, а можно воспользоваться именем nmb4.
Если мы хотим работать с числами, как с массивом, используя индексы отдельных элементов, то присвоение массиву общего имени представляется естественным. Получение последнего элемента массива по его индексу выполняется с помощью такой последовательности команд:
mov SI,4 ; Индекс элемента в массиве
mov DL, numbersfSI] ; Обращение по адресу (numbers + содержимое SI)
Ассемблер выполняет проверку размеров используемых данных и не пропускает команды, в которых делается попытка обратиться к байтам, как к словам, или к словам, как к байтам. Предположим, что у нас описаны словные переменные:
nmbO dw 0 ; занимает 2 байта
nmbl dw 1 ; занимает 2 байта nmb2 dw 2 ; занимает 2 байта
В этом случае перечисленные ниже команды (работа с переменными, как с байтом)
mov AL,nmbO ; Переносим nmbO в AL (размер AL равен 1 байт)
mov AL,nmbl; Переносим nmbl в AL
mov AL,nmb2 ; Переносим nmb2 в AL
будут восприняты транслятором как грубая ошибка — несоответствие типов, он не будет создавать объектный файл.
Для таких случаев предусмотрен специальный атрибутивный оператор byte ptr (byte pointer, байтовый указатель), с помощью которого можно на время выполнения одной команды изменить размер операнда:
mov AL,byte ptr nmbO
mov AL,byte ptr nmbl
mov AL,byte ptr nmb2
Эти команды транслятор рассматривает как правильные.
Часто возникает необходимость выполнить обратную операцию — к паре байтов обратиться, как к слову. Для этого надо использовать оператор word ptr:
mov AX,word ptr okey
Здесь оба байта из байтовой переменной okey переносятся в регистр АХ. При этом первый по порядку байт, т. е. байт с меньшим адресом, содержащий букву «О» (можно считать, что он является младшим в слове «ОК»), отправится в младшую половину АХ — регистр AL, а второй по порядку байт, с буквой «К», займет регистр АН.
До сих пор речь шла о данных, которые, в сущности, являлись переменными в том смысле, что под них выделялась память и их можно было модифицировать. Язык Ассемблера позволяет также использовать константы, которые являются символическими обозначениями чисел и могут использоваться всюду в тексте программы, как наглядные эквиваленты этих чисел:
Последние две команды полностью эквивалентны.
Константами удобно пользоваться для определения длины текстовых строк:
mes db ‘Ждите’ mes_len = $-mes
В этом примере константа mes_Ien получает значение длины строки mes (в данном случае 5 байт), которая вычисляется как разность значения счетчика текущего адреса после определения строки и ее начального адреса mes. Такой способ удобен тем, что при изменении содержимого строки достаточно перетранслировать программу, и та же константа mes_Ien автоматически получит новое значение.
Примеры резервирования памяти
count dw 1000 //помещает значение 1000 по адресу count coefdw 5,10,68 //указанными числами заполняются три слова mask db OFFh //в байт с именем mask записывается FF mes db ‘смещение’
//байтовая строка с текстом «смещение» начиная с адреса mes
//В слове adr смещение строки первого байта строки mes
addr dd myproc
//в двойном слове помещается двухместный адрес процедуры
В первом слове — относительный адрес
Во втором — сегментный.
area dw 128 dup (?) //резервируем 128 слов памяти
text db 100 dup (‘#’)
//100 байт массива заполняется кодом решетки
array dw 1024 dup(256)
//массив из 1024 слов, в каждом слове 256
kilo equ 1024
//kilo — константа, которой присваивается значение 1024 навсегда.
offs = 80-2*12+40*2
//начальное значение offs определено выражением, но в тексте
[Программы ее можно менять
leng = OFFFFh
//leng — название числа FFFF
mes db ‘ждите’ т_ И позволяет ссылаться на текущую ячейку
meslen = $ — mes -Г // meslen = длина строки mes
Использование байта в сливных операциях (оператор PTR)
Bitsdw F5E9h
mov ах, bits //помещает в аккумулятор число F5E9
mov bh, byte ptr bits
//пересылает в старший байт регистра ВХ младший байт (Е9) переменной
mov cl, byte ptr bits + 1
//пересылка старшего байта (F5) в cl
addr dd myproc
// в двойное слово помещается двухсловный адрес процедуры
mov bx, word ptr addr //относительный адрес myproc
mov es, word ptr addr + 2 //сегментный адрес
Источник: ozlib.com