|
Типы данных и описание данныхОсновной тип данных микропроцессоров 8086-80286 – целый 16-ти разрядный, возможна также обработка 8-ми разрядных данных. В 32-х разрядных микропроцессорах семейства x86 основной тип данных – целый 32-х разрядный, но возможно использование также “наследственных” типов: 8-ми и 16-ти разрядных целых. Обычно данные в программе на языке ассемблера описываются в сегменте данных, но учитывая, что сегменты по типам не различаются в реальном режиме, то возможно описание данных в сегментах кода и стека. Такой подход используется в DOS-программах формата COM, который предполагает использование только одного сегмента. При описании данных и их типов (размеров) используются следующие директивы: • db – байт (8 разрядов); • dw – слово (16 разрядов); • dd – двойное слово (32 разряда); • dq – учетверенное слово (64 разряда); • dt – 10 байт (80 разрядов). Тип db также используется для описания символов и строк в кодировке ASCII. Типы dd, dq и dt также используются для описания чисел с плавающей точкой математического сопроцессора илиFPU. Для резервирования некоторого количества памяти используется директива dup. Целочисленные данные могут иметь суффикс, указывающий на систему счисления. А именно: • b – двоичное целое число; • o или q – восьмеричное целое число; • d – десятичное целое число (по умолчанию); • h – шестнадцатиричное целое число. Шестнадцатиричная система кроме своего прямого назначения также используется для записи целых чисел в форматах BCD и ASCII. Пример описания данных X db 11110000b Y dw 0FFFFh Z dd 100 A db 30h; нуль в ASCII формате B dw 0105h; число 15 в неупакованном BCD формате str db 'Hello!' Array dd 0, 2, 4, 6; массив чисел Buffer db 256 dup (0); зарезервировано 256 байт Команды пересылки и загрузки Для передачи данных между различными ячейками памяти используется следующие команды: • mov – пересылка данных из одной ячейки в другую или загрузка константы; • lea – загрузка адреса в регистр; • xchg – обмен значений регистров; • push – загрузка в стек; • pop – извлечение из стека.
Пример 1: Копирование содержимого одного сегментного регистра в другой Push ds Pop es Пример 2: Выделение старшей части расширенного регистра данных (с помещением значения в другой регистр) Push eax; помещаем значение eax в стек (4 байта) Pop ax; извлекаем младшую часть (2 байта) Pop bx; извлекаем старшую часть (2 байта) Пример 2: Извлечение данных из произвольной ячейки стека Mov bp, sp mov ax, [bp]+2 Флаговые операции Иногда необходимо в процессе выполнения программы изменять состояние процессора. Для этого предназначены команды работы с флагами. Пример 4 Lahf; загружаем в ah содержимое флагового регистра Stc; устанавливаем флаг c Clc; сбрасываем флаг c Cmc; инвертируем флаг c Std; устанавливаем флаг d Cld; сбрасываем флаг c Cli; сбрасываем флаг i Sti; устанавливаем флаг i Sahf; восстанавливаем из ah флаговый регистр
Задание В соответствии с представленной программы в лабораторной работе №2 произвести следующие операции: - копирование содержимого одного сегментного регистра в другой; - выделение старшей части расширенного регистра данных; - извлечение данных из произвольной ячейки стека; - изменить состояние процессора, с использованием флагового регистра. 5 Контрольные вопросы 1. Как проинициализировать сегментный регистр? 2. Как поместить в регистр адрес переменной, а не ее значение? 3. Как получить содержимое ячейки зная ее сегмент и смещение? 4.Примеры использования команд работы со стеком. 5.Шаблон DOS-программы EXE-формата.
Лабораторная работа №4 Арифметические команды целочисленного устройства Микропроцессора Цель работы Основные характеристики, области применения ЭВМ различных классов. Изучение устройства компьютера: Простейшие программы на ввод/вывод информации Базовые знания, необходимые для выполнения данной работы • Двоичная система счисления и основные арифметические операции над двоичными числами числами; • BCD и ASCII-форматы целых чисел; • Как объявляются поля данных размера байт, слово, двойное слово; • Структура флагового регистра. Теоретические основы Следует различать две категории арифметических команд целочисленного устройства • команды двоичной арифметики; • команды двоично-десятичной арифметики.
Команды двоичной арифметики • команды сложения add и adc; inc; xadd; • команды вычитания sub и sbb; dec; • команды умножения mul и imul; • команды деления div и idiv; • команда изменения знака neg.
Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|