1. Безусловный переход.
Осуществляется командой JMP, с указанием метки, на которую будет осуществляться переход. В зависимости от типа перехода после мнемоники JMP может осуществляться переход этих типов: а) SHORT – точка перехода задается в виде восьми битного смещения со знаком, который будет суммировать. Преимущество: адресная часть сокращается до байта, недостаток: переход всего на 127 байт.
б) FAR – переход осуществляется по абсолютному адресу заданному сегментом и смещением. Преимущество: перемещается в любой сегмент, недостаток: большая адресная часть пространства. в) NEAR – ближайший тип, переход осуществляется только по смещению в пределах текущего сегмента.
мнемоника |
условие |
флаги |
JB/JNAE |
если меньше |
CF=1 |
JBE/JNA |
если меньше или равно |
CF=1 и ZF=1 |
JAE/JNB |
если больше или равно 0 |
CF=0 |
JA/JNBE |
если больше |
CF=0 и ZF=0 |
JE/JZ |
если ZF=1 |
ZF=1 |
JNE/JNZ |
если ZF=0 |
ZF=0 |
JL/JNGE |
если SF=OFF |
SF=OF |
JLE/JNLE |
если ZF=1 и SF=OF |
ZF=1 и SF=OF |
JP/JPE |
если четно |
PF=1 |
JNP/JPO |
если нечетно |
PF=0 |
JS |
если знак - |
SF=1 |
JNS |
если знак + |
SF=0 |
JC |
если перенос |
CF=1 |
JNC |
если без переноса |
СА=0 |
JO |
если переполнение |
OF=1 |
JNO |
если без переполнения |
OF=0 |
2. Условный переходы.
Инструкция условного перехода осуществляет переход в случае
выполнения того или иного условия и определяется, как бит в регистре флагов, т.е. к моменту выполнения команды условного перехода необходимо выполнять команды проверки условия. Синтаксическая диаграмма аналогичная команде JMP.
пример:
MOV AH, 1
LB2: INT 21h
CMP AL, 'A' (41h)
JE LB1
JMP LB2
LB2: MOV
прим.: команда CMP позволяет сравнить два числа с помощью вычитания, при этом результат не сохраняется, а суммируются только флаги.
Логическая организация файла.
Программист имеет дело с логической организацией файла, представляя файл в виде определенным образом организованных логических записей. Логическая запись - это наименьший элемент данных, которым может оперировать программист при обмене с внешним устройством. Даже если физический обмен с устройством осуществляется большими единицами, операционная система обеспечивает программисту доступ к отдельной логической записи. На рисунке 1.3 показаны несколько схем логической организации файла. Записи могут быть фиксированной длины или переменной длины.
Рис. 1.3. Способы логической организации файлов
Записи могут быть расположены в файле последовательно (последовательная организация) или в более сложном порядке, с использованием так называемых индексных таблиц, позволяющих обеспечить быстрый доступ к отдельной логической записи (индексно-последовательная организация). Для идентификации записи может быть использовано специальное поле записи, называемое ключом. В файловых системах ОС UNIX и MS-DOS файл имеет простейшую логическую структуру - последовательность однобайтовых записей.
Логические действия на языке Ассемблер.
Направление С |
влево |
вправо |
через бит переноса С |
RCL |
RCR |
циклически |
ROL |
ROR |
Команды побитовых сдвигов.
Бывают четырех видов:
пример: MOV AX, 11h 0001 0001 0
MOV CH, 5h 0010 0010 0
ROR AX, CH
Команды логических сдвигов.
Выполняют перемещение операнда на один разряд вправо/влево. При этом циклического переноса вытесняемых разрядов в начало/конец не происходит. Сдвиг может происходить только на один разряд.
пример: MOV DX, 5h
SHL DX, 1h
SHR DX, 1h
AND
OR
XOR
Место процессов контроля и диагностики в операционной системе.
Методы, свойства, процедуры класса.
Данные объекта чаще всего называют «свойствами объекта». Методы – это программы, с помощью которых осуществляется связь объекта с внешним миром, обмен информацией с его данными. Процедуры – это подпрограммы, которые могут быть вызваны друг из друга или из методов. Однако возможности их вызова из окружающей среды обычно не существует.
Механизмы вызова функций Windows.
Функции - это набор подпрограмм, реализованных разработчиками ОС, выполнение которых может быть инициировано пользовательскими или системными программами. Отличие от системы сообщений состоит в том, что программы обработки сообщений выполняются в ответ на внешний запрос, момент же выполнения функции ОС определяется логикой работы программы. Правда, функции могут использоваться и в составе программ обработки сообщений.
Часто для того, чтобы указать функции конкретное действие из множества возможных используются идентификаторы команд. Идентификатор команды – это число, которое указывает, какие действия необходимо выполнить над тем или иным объектом ОС. Например, идентификатор CB_DIR (значение 145H) принудит с помощью функции SendDlgItemMessage (рассмотрена далее) поместить в элемент управления Windows ComboBox список файлов текущего каталога. Арифметические или логические операции над идентификаторами команд смысла не имеют. В этом случае префикс «CB_» определяет тип объекта, над которым выполняется действие (ComboBox). В качестве примера приведем функцию передачи сообщения элементу управления SendDlgItemMessage, запись которой в виде функции имеет вид:
SendDlgItemMessage(hWnd; IDELm; Messg; Wpar; Lpar),
где: HWnd - дескриптор окна (число, по которому ОС однозначно идентифицирует окно, к которому идет обращение); IDELm - идентификатор элемента окна (например, ниспадающего списка, поля ввода и т.п.); Message – код сообщения или команды; Wpar, Lpar – старший и младший параметры (их назначение зависит от выполняемой команды).
Монтирование и дефрагментация в файловых системах.
Монтирование – подсоединение жесткого носителя данных к Операционной Системе (определить его в системе).
Фрагментация – процесс разбиения файла на небольшие фрагменты при записи на диск, в следствии заполнения всей области диска.
Дефрагментация – реорганизация файлов и директорий на диске так, чтобы свести к минимуму перемещение считывающих головок и, следовательно, увеличить скорость считывания данных с винчестера.
Монтирование файловых систем.
Монтирование файловой системы происходит поэтапно:
● Проверка типа файловой системы.
● Проверка целостности файловой системы
● Считывание системных структур данных и инициализация соответствующего модуля файлового менеджера.
● Модификация файловой системы по установленному флагу загрязнения.
● Включение файловой системы в пространство имен.
Флаг загрязнения – переменная, принимающая значения 1 либо 0 и хранящая информацию о корректности завершения работы системы. Сразу после запуска система она принимает значение 1 (некорректное завершение работы) и меняется на 0 только в случае успешного окончания работы. Значения флага загрязнения 1 при запуске вызывает запуск программ сервисного обслуживания, например Scandisk, Scanreg и др.
Дефрагментация – реорганизация файлов и директорий на диске так, чтобы свести к минимуму перемещение считывающих головок и, следовательно, увеличить скорость считывания данных с винчестера.
Наследование классов и объектов.
Наследование позволяет создавать новые объекты, изменяя или дополняя свойства ранее созданных объектов. Объект-наследник получает все данные и методы предка, но может добавить собственные данные и методы, или замещать ими унаследованные.
Обработка событий манипулятора типа "мышь".
перемещение мыши по полю окна
:m WM_MOUSEMOVE
WordSplitразделяет слова
;m
Нажатие левой кнопки мыши.
:m WM_LBUTTONDOWN
BEEP
;m
От нажатия левой кнопки мыши
:m WM_LBUTTONUP
S” кнопка отжата”
SetText: text t1 ;m
Двойное нажатие левой кнопки мыши.
:m WM_LBUTTONDBLCLK
BEEP BEEP ;m
нажатие правой кнопки мыши
:m WM_RBUTTONDOWN
BEEP ;m
6 нажатие средней кнопки мыши
:m WM_MBUTTONDOWN
BEEP ;m
7 нажатие клавишь
:m WM_KEYDOWN
;object
// поле ввода
EditControl
Объекты в оболочке Windows: стили и сообщения.
В среде Windows существуют три основополагающих понятия: стиль, сообщения и функции.
1. Стиль. Стиль это битовая маска, которая определяет тип объекта, его характеристики, внешний вид, возможные действия над объектом. Для удобства программирования и обеспечения кроссплатформенности каждой битовой маске присвоена определённая аббревиатура следующего типа: ТипОбъекта_Стиль, например WS_BORDER. Стили Windows пишутся заглавными буквами, так как они запрограммированы в ОС.
2. Сообщения (Massages). Сообщение это программы, которые выполняются при том или ином событии ОС. Сообщения являются методами объектов Windows. Сообщения также соответствуют логически значимым аббревиатурам, но в этом случае аббревиатура имеет смысл не константы, а указателя ни программу, которую необходимо выполнить. Например WM_CHAR.
Объекты и классы: основные понятия.
Группы однородных объектов объединяются в классы. Основные отличия программного определения в ФС класса от объекта состоит в том, что объект содержит в себе не только структуру данных, но и сами данные. Класс не содержит в себе данных, а только указания на их структуру. После того, как будет описан класс, можно создать его объекты. Каждый объект будет обладать возможностью вызова методов и процедур, а также будет содержать данные, структура которых описана в классе.
Операции над файлами. Для того, чтобы получить доступ к файлу в большинстве случаев создаётся канал к файлу(поток), который характеризуется:
дескриптором или идентификатором канала
Дескриптор – это число, однозначно определяющее открытый файл в файловой системе. В простом случае это номер в таблице открытых файлов для приложения пользователя
Типом канала
Только для чтения
Только для записи
Для чтения и записи
Следует отличать тип канала от атрибута файла, а также действия над каналом от действий на файлом.
Система возвращает адрес файла, т.е. идентификатор, или ошибку. Константы Windows.
В Windows существуют специальные мнемоники, т.е. буквенные выражения, поставленные в соответствии с определёнными значениями и предназначенные для указания командам Windows тех или иных параметров.
1.w/o –только для записи, 2.r/o - только для чтения, 3. r/w – для чтения и записи
Профайловая система – доступ для любого файла.
Открытие канала(файла).
Два операнда: 1 Имя файла, 2 Тип канала в виде константы Windows.
Возвращает: 1 Код ошибки, 2 Номер канала
Если значение IDF будет утеряно, то любые операции, в том числе и закрытие канала, станут невозможными, потребуется выгружать из памяти это приложение.
Создание файла.
Во многом аналогично команде открытия файла: имеет те же операнды и те же возвращаемые значения.
Замечание. В том случае если создаётся файл уже присутствующий в ОС и пользователь обладает правами доступа к нему, будет создан новый файл, а информация старого файла будет потеряна.
Позиционирование файла.
Для открытого файла существует понятие “точка входа в файл” – это 64-разрядный указатель на 1 байт файла, с которого будут производиться операции обмена данных.
После завершения команды открытия или создания точка входа устанавливается на первый его элемент(байт), максимальный объём файла, к которому можно адресоваться с помощью указателя – 264 байт. Существует два типа перемещения точки входа в открытом файле:
Смещение выполняет относительное перемещение точки входа относительно текущего положения указателя. Смещение – 32-разрядное число.
Операнды: 1Смещение, 2Номер канала
Возвращается: 1Код ошибки, 2Номер канала
Репозиция
В этом случае положения точки входа в файл задается абсолютно в виде: 64-разрядного числа.
Операнды и возвращаемые значения те же что и в смещении.
Чтение из файла.
Позволяет переместить (скопировать) данные из открытого файла, начиная с текущей точки входа в файл, в заранее подготовленную область ОЗУ.
Операнды:1Адрес области в ОЗУ, 2Предполагаемое количество, считываемых байт, 3Номер канала.
Возвращаемые значения:1Код ошибки, 2Число реально считанных байт
Замечание: точка входа в файл смещается на число считанных байт.
Запись в файл.
Предназначена для переноса информации из буфера в открытый файл, начиная с точки входа в него. Прежняя информация в файле, если она была, теряется. В команде записи операнды аналогичны команде чтения.
Возвращаемые значения: Код ошибки
Закрытие файла.
Позволяет уничтожить канал к файлу. После успешного закрытия номер канала теряет смысл.
Операнды: Номер канала
Возвращаемое значение: Код ошибки
Замечание: если файл открыт программой пользователя, то повторные команды открытия или создания этого файла приведут к ошибке операции.
Операции с динамической памятью.
Динамическая память – это виртуальная память, которая может располагаться в любом месте ОЗУ и файла подкачки.
Организуется в виде сегментов длиной до 4 Гб, каждый из которых характеризуется дескриптором сегмента памяти. В простейшем случае это первые адрес в общем адресном пространстве.
Операнды: Количество байт
Возвращаемые значения:1Код ошибки, 2Адрес
В том случае, если команда пользователя осуществит операцию вне этого адресного пространства, возникнет ошибка операции с памятью. Размер сегментов динамической памяти может быть изменён, при этом ОС самостоятельно скопирует содержимое старого сегмента в новый.
Основные опции транслятора и линковщика.
Процесс трансляции и линковки файлов.
Процесс компиляции.
Для компиляции используются 2-е инструментальные программы.
1) Транслятор ассемблера tasm.exe
Исходной информацией для транслятора служит текстовый файл на языке ассемблер. (name.asm)
Выходной файл созданный транслятором – это файл объективных кодов, который уже содержит машинные коды, однако адреса, в которых ещё не определены.
tasm.exe name.asm
name.obj
2) Редактор связей tlink.exe
В случае одного объектного файла линковщик выполняет функцию установки адресов, в случае нескольких объектных файлов им производится объединение сегментов согласно их типам и последующую установку адресов
tlink.exe name.obj
В качестве выходного файла линковщика мы получим исполняемый файл
name.exe (name.com)
Основные понятия файловой системы.
Основные понятия: классы задач, решаемых программистами; их характеристики.
Технологические задачи . Это задачи, которые ставятся и решаются при организации процесса обработки или передачи данных. Они используются для обеспечения работоспособности компьютера.
Функциональные задачи. Задачи, требующие решения при реализации функций управления, в рамках конкретных прикладных областей.
Основные понятия: программа, программное обеспечение.
Программа – это данные, предназначенные для управления конкретными компонентами систем обработки информации.
ПО – это совокупность программ и программной документации необходимой для их эксплуатации.
Основные функции и стили CheckButton. Флаги
CheckBox – орган управления, который может находиться в 2-х или 3-х состояниях в зависимости от типа. Всего существует четыре типа CheckBox.
Элемент управления COMBOBOX и его стили.
BS_CHECKBOX……………………….. Стандартный, имеет два состояния и управление внутренней переменной осуществляется программой пользователя. При нажатии мышкой на данный элемент управления будет вызываться сообщение WS_COMMAND, но состояние флага изменено не будет.
BS_AUTOCHECKBOX…………………Автоматический, имеет два состояния и отличается от предыдущего только тем, что при нажатии значение флага будет изменено ОС. Сообщение WS_COMMAND будет послано, в нем пользовательская программа может получить значение флага.
BS_3STATE…………………………Трехуровневый, может находиться в трёх состояниях, в остальном аналогичен стандартному флагу.
BS_AUTO3STATE………… Трехуровневый автоматический, имеет три состояния, а в остальном аналогичен автоматическому флагу.
Флаги. Для 3-х стабильных флагов характерны три состояния
Истина (отмечен - 1)
Ложь (неотмечен - 0)
Затемненный (2)
Установка значения флага
Выполняется с помощью функции CheckDlgButton
Операнды
Дескриптор окна
Идентификатор элемента
Значение флага
Возвращает
Код ошибки
Чтение состояния флага
Выполняется с помощью функции IsDlgButtonChecked
Операнды
Идентификатор элемента
Дескриптор окна
Возвращает 32-битное слово состояния флага (.2 – флаг затемнен)
Основные функции и стили EditControl.
С его помощью можно вводить и/или отображать достаточно длинные текстовые строки.
Стиль |
Описание |
ES_AUTOHSCROLL |
Выполняется автоматическая свертка текста по горизонтали. Когда при наборе текста достигается правая граница окна ввода, весь текст сдвигается влево на 10 символов |
ES_AUTOVSCROLL |
Выполняется автоматическая свертка текста по вертикали. Когда при наборе текста достигается нижняя граница окна ввода, весь текст сдвигается вверх на одну строку |
ES_CENTER |
Центровка строк по горизонтали в многострочном текстовом редакторе |
ES_LEFT |
Выравнивание текста по левой границе окна редактирования |
ES_MULTILINE |
Создается многострочный редактор текста |
ES_NOHIDESEL |
Если редактор текста теряет фокус ввода, при использовании данного стиля выделенный ранее фрагмент текста отображается в инверсном цвете. Если этот стиль не указан, при потере фокуса ввода выделение фрагмента пропадает и появляется вновь только тогда, когда редактор текста вновь получает фокус ввода |
ES_READONLY |
Создаваемый орган управления предназначен только для просмотра текста, но не для редактирования |
ES_WANTRETURN |
Стиль используется в комбинации со стилем ES_MULTILINE. Используется только в диалоговых панелях. При использовании этого стиля клавиша <Enter> действует аналогично кнопке диалоговой панели, выбранной по умолчанию |
ES_RIGHT |
Выравнивание текста по правой границе окна редактирования |
ES_LOWERCASE |
Выполняется автоматическое преобразование введенных символов в строчные |
ES_OEMCONVERT |
Выполняется автоматическое преобразование кодировки введенных символов из ANSI в OEM и обратно. Обычно используется для ввода имен файлов |
ES_PASSWORD |
Этот стиль используется для ввода паролей или аналогичной информации. Вместо введенных символов отображается символ "*" или другой, указанный при помощи сообщения EM_SETPASSWORDCHAR |
ES_UPPERCASE |
Выполняется автоматическое преобразование введенных символов в заглавные |
Основные функции и стили RadioButton.
Радиокнопки – это группа флагов; отмеченным может быть только один элемент. Группы формируются с помощью присвоения стиля WS_GROUP. Тот элемент, которому присвоен этот стиль, является первым в своей группе, группы являются независимыми.
Замечание: порядок следования команды start над объектами радиокнопок в методе On_Init определяет очередность.
"Радио" кнопка может иметь один из двух стилей: стандарт или автоматический, что определяется константами BS_RADIOBUTTON и BS_AUTORADIOBUTTON соответственно.
Стиль BS_LEFTTEXT позволяет разместить текст слева от радио-кнопки. Этого же эффекта можно добиться использовав стиль BS_RIGHTBUTTON. Если объект не имеет ни одного из этих стилей, но имеет стиль BS_RIGHT, то текст будет выровнен по правому краю, находясь справа от кнопки. Аналогичный результат получается при использовании стиля BS_LEFT.
Функции радиокнопок:
Установка активной Радиокнопки CheckRadioButton
Операнды:1) Дескриптор окна группы, 2) Идентификатор первого элемента группы, 3) ID последнего элемента группы, 4)ID Радиокнопки, установленной в активное состояние
В группе радиокнопок обязательно одна из кнопок является активной.
2. Состояние Радиокнопки IsDlgButtonChecked
Операнды: 1) ID окна 2) ID кнопки
Основные функции и стили ScrollBar.
WM_VSCROLL
WM_HSCROLL
За прорисовку ответственна программа пользователя.
Основные функции:
Установка ранга линеек SetScrollRange
Ранг линейки прокрутки – это диапазон изменения значений переменной, связанный с положением движка данных элементов управления.
[Rmin;Rmax] – ранг линейки. Значение R – 32-разрядное число. Rmin<Rmax для правильной работы линейки.
Операнды:
ID окна.
ID типа
Rmin
Rmax
Возвращает
Код ошибки
Установка положения движка линейки SetScrollPos.
Позволяет установить движок в произвольную позицию в пределах ранга линейки.
Операнды:
Дескриптор окна (hWnd)
ID типа
Позиция
Резервный параметр (True)
Получение позиции движка GetScrollPos
Основные функции и стили линеек скроллинга.
Окна или дочерние окна могут быть оснащены отдельными элементами вертикального или горизонтального скроллинга. Наличие у окна этих элементов устанавливается с помощью стилей:
WSUSCROLL - вертикальный скроллинг.
WSHSCROLL - горизонтальный скроллинг.
Сообщения создаваемые длинными элементами управления называются: WSJJSCROLL WSJJSCROLL
Следует отметить, что при изменении положения движка на линейке изменяется лишь внутренняя переменная линейки прокрутки, но не изображение окна. За скроллинг и прорисовку окна ответственна пользовательская программа получающая сообщение от линейки прокрутки.
Основные функции линейки прокрутки:
1. Установка ранга линеек. Выполняется с помощью функции: SetScrollRange. Ранг линейки прокрутки - это диапазон изменения значений переменной связанной с положением движка данных элементов управлении.
Ранг линейки - [Rmin, Rmax], при этом значение R задаётся 32-х разрядным числом. Значение Rmin может принимать любые значения, однако для правильной работы линейки: Rmin< Rmax. В качестве операндов функции установки рангов указывается:
1. 1. Идентификатор окна: hWnd Call SetScrollRange.
1. 2. Идентификатор типа элемента: SBVERT.
1. 3. Значение Rmin : 0.
1. 4. Значение Rmax : 100.
1. 5. Функция возрастает: код ошибки.
2. Функция установки положения движка линеек SetScrollPos.
Позволяет установить движок в произвольную позицию в пределах установленного ранга
линейки.
Операнды:
Идентификатор окна.
Идентификатор типа.
Позиция: 20.
Резервный параметр TRUE (-1).
Пример: TRUE 20 SBVERT hWnd CallScollPos.
Перемещение движка линейки прокрутки выполняется с помощью данной функции.
Команды получения движка линейки 00 SBVERT hWnd CallScrollPos. Функция возвращает позицию линейки прокрутки.
Сообщения от линейки скроллинга.
Данные сообщения сопровождаются 4-мя параметрами:
Дескриптор окна.
Сообщения от линейки прокрутки, ( const Windows) предназначенная для идентификации
одного из нескольких событий возникающих на линейке.
Старший параметр, который содержит в младшем полуслове тип сообщения (назначение
аналогичное предыдущему параметру), а в старшем дополнительный параметр.
Младший параметр: резерв.
Программа обработки сообщений от линеек скроллинга как правило организуется в виде конструкции множественного выбора. В качестве ключа и который используется младшее полуслово младшего параметра.
Типы событий вертикальной линейки прокрутки.
SBBOTTOM - достижение крайнего нижнего положения линейки прокрутки.
SBTOP - достижение движком крайнего верхнего положения
SBLINEDOWN - событие одинокого нажатия на клавишу "вниз".
В данной секции необходимо инкрементировать значение связанное с позицией движка.
SBLINEUP - выполняется декремент значения (аналогично верхнему, но при нажатии
"вверх").
SBPAGEDOWN - страница. События возникают при нажатии мышкой на поле может
управлять движком и клавишей "вниз".
Событие аналогично событию LINEDOWN, но для увеличения переменной линейки,
назначение больше 1.
SBPEGEUP - событие нажатия мышкой на поле может управлять движком и кнопкой
"вверх".
SBTHUMBPOSITION - события позиционирования движка ( Движок отпускается мышью).
В этом случае в старшем полуслове, старшего параметра передаётся новое положение
движка. Если это положение не будет установлено с помощью функции Windows, движок
вернётся на прежнее место.
SBTHUMBTRACK - данное событие вытекает при перемещении движка без его
отпускания манипулятора мыши. Событие вызывается аналогично событию
WHMOUSEMOVE. При этом каждый раз в старшем полуслове старшего параметра
передаётся позиция движка, однако в этом случае изменять позицию движка с помощью
функции, как правило не требуется.
События горизонтальной линейки.
Во многом повторяют события вертикальной линейки, кроме 4-х событий:
SBLINELIFT - (аналог LINEUP).
SBLINERIGHT - (аналог LINEDOWN).
SBPAGELEFT - (аналог PEGEUP).
SBPAGERIGHT - (анлог PAGEDOWN).
Основы программирования на ассемблере: арифметические и логические действия.
Команды инкремента и декремента
Предназначены для быстрого увелечения/уменьшения на единицу регистровых операндов.
Inc BX = add BX,1
Dec BX = sub BX,1
Разрядность операции определяется типом операнда, который может быть 8,16,32-разрядный.
Команды сложения и вычитания
Add позволяет выполнить сложение регистровых и других операндов.
ADD DL,AH
ADD DL,10
Оба операнда двухадресных команд должны иметь одинаковую разрядность.
Аналогично операция вычитания SUB.
Умножение и деление.
В ядре процессора Intel MUL перемножает 8,16-биотвые операнды, создавая при этом 16,32-разрядные произведения. Для данной инструкции требуется указать только один операнд второй операнд должен находится в аккумуляторе. Старшая часть произведения будет размещаться в регистре D, а младшая в регистре A.
Пример: 5*8
MOV AL,5
MOV BH,8
MUL BH
MUL – беззнаковая команда.
IMUL – знаковая. В этом случае знаковый разряд операндов в процедуре умножения не участвует, а служит лишь для вычисления знака результата.
DIV – беззнаковое деление. Выполняет деление 16-разрядного на 8-разрядный операнды. В результате частное записывается в регистр AL, а остаток в регистр AH. Делитель всегда регистр DL, делимое – AX.
Пример: 51/10
MOV AX,51
MOV DL,10
DIV DL
;AL = 5, AH = 1.
IDIV - знаковое деление.
Логические операции
Выполняются над операндами побитно. Логические операции выполняет процессор. AND, OR, XOR
Основы программирования на ассемблере: получение кодов нажатых клавиш и вывод их на экран.
Для 21-го прерывания регистр AH содержит номер подфункции, например единица – вызов функции чтения кода нажатой клавиши. О значении регистра AH должен позаботится программист. Код нажатой клавиши будет передан системой в AL.
L1: MOV AH,1
INT 21H
MOV DL,AL
MOV AH,2
INT 21H
CMP AL,13H
JNZ L1
Для того чтобы распечатать введённый код на дисплее используют функцию №2. Код вводимого символа должен располагаться в регистре DL.
CMP AL,13H ; команда выполняет вычитание однако в его результате меняются только флаги.
Понятие объекта в метафоре объектно-ориентированного программирования.