![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Макросредства языка ассемблераСодержание книги
Поиск на нашем сайте
3.11.1. Псевдооператоры equ и = К простейшим макросредствам языка ассемблера можно отнести псевдооператоры equ и "=" (равно). Их мы уже неоднократно использовали при написании программ. Эти псевдооператоры предназначены для присвоения некоторому выражению символического имени или идентификатора. Впоследствии, когда в ходе трансляции этот идентификатор встретится в теле программы, макроассемблер подставит вместо него соответствующее выражение. В качестве выражения могут быть использованы константы, имена меток, символические имена и строки в апострофах. После присвоения этим конструкциям символического имени его можно использовать везде, где требуется размещение данной конструкции. Синтаксис псевдооператора equ: имя_идентификатора equ строка или числовое_выражение Синтаксис псевдооператора “=”: имя_идентификатора = числовое_выражение
Несмотря на внешнее и функциональное сходство псевдооператоры equ и “=” отличаются следующим: - из синтаксического описания видно, что с помощью equ идентификатору можно ставить в соответствие, как числовые выражения, так и текстовые строки, а псевдооператор “=” может использоваться только с числовыми выражениями; - идентификаторы, определенные с помощью “=”, можно переопределять в исходном тексте программы, а определенные с использованием equ – нельзя. Ассемблер всегда пытается вычислить значение строки, воспринимая ее как выражение. Для того, чтобы строка воспринималась именно как текстовая, необходимо заключить ее в угловые скобки: <строка>. Псевдооператор equ удобно использовать для настройки программы на конкретные условия выполнения, замены сложных в обозначении объектов, многократно используемых в программе более простыми именами и т. п. Псевдооператор “ = ” удобно использовать для определения простых абсолютных (то есть независящих от места загрузки программы в память) математических выражений. Главное условие то, чтобы транслятор мог вычислить эти выражения во время трансляции.
Макрокоманды Идейно макрокоманда представляет собой дальнейшее развитие механизма замены текста. С помощью макрокоманд в текст программы можно вставлять последовательности строк (которые логически могут быть данными или командами) и даже более того – привязывать их к контексту места вставки. Макрокоманда представляет собой строку, содержащую некоторое символическое имя – имя макрокоманды, предназначенное для того, чтобы быть замещенной одной или несколькими другими строками. Имя макрокоманды может сопровождаться параметрами. Обычно программист сам чувствует момент, когда ему нужно использовать макрокоманды в своей программе. Если такая необходимость возникает, и нет готового ранее разработанного варианта нужной макрокоманды, то вначале необходимо задать ее шаблон-описание, который называют макроопределением. Синтаксис макроопределения следующий: имя_макрокоманды macro список_аргументов тело макроопределения Endm
Есть три варианта размещения макроопределения: - В начале исходного текста программы до сегмента кода и данных с тем, чтобы не ухудшать читабельность программы. - В отдельном файле. Этот вариант подходит при работе над несколькими программами одной проблемной области. Чтобы сделать доступными эти макроопределения в конкретной программе, необходимо в начале исходного текста этой программы записать директиву include имя_файла. - В макробиблиотеке. Если у вас есть универсальные макрокоманды, которые используются практически во всех ваших программах, то их целесообразно записать в так называемую макробиблиотеку. Сделать актуальными макрокоманды из этой библиотеки можно с помощью все той же директивы include. Если в программе некоторая макрокоманда вызывается несколько раз, то в процессе макрогенерации возникнет ситуация, когда в программе один идентификатор будет определен несколько раз, что, естественно, будет распознано транслятором как ошибка. Для выхода из подобной ситуации применяют директиву local, которая имеет следующий синтаксис: local список_идентификаторов.
Задание на выполнение
Данная работа рассчитана на 2 лабораторные работы (8 часов). Выполните задания в соответствии с вашим вариантом. И подготовиться к ответам на теоретическую часть лабораторной работы. Вариант 1 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=А+В. 2. Установить все четные биты С. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде. 4. Написать процедуру для вывода результата 5. Написать процедуру для ввода чисел 6. Написать макрос для расчета 7. Передача параметров через регистры 8. Используйте стандартные директивы сегментации и формат exe-программы.
Вариант 2 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=А+В. 2. Обнулить все нечетные биты С. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде. 4. Написать процедуру для вывода результата 5. Написать макрос для ввода чисел 6. Написать макрос для расчета 7. Передача параметров через стек 8. Используйте упрощенные директивы сегментации и формат exe-программы.
Вариант 3 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=А+В*2. 2. Если третий бит числа С установлен, то вывести на экран С в двоичном виде, в противном случае, вывести на экран С/2 в двоичном виде. 3. Написать макрос для вывода результата 4. Написать процедуру для ввода чисел 5. Написать макрос для расчета 6. Передача параметров через стек 7. Используйте стандартные директивы сегментации и формат сом-программы.
Вариант 4 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=А/2+В. 2. Установить все нечетные биты С. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде. 4. Написать макрос для вывода результата 5. Написать макрос для ввода чисел 6. Написать процедуру для расчета 7. Передача параметров через стек 8. Используйте упрощенные директивы сегментации и формат сом-программы.
Вариант 5 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=(А+В)/4. 2. Сбросить пятый бит числа С, если он установлен. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде. 4. Написать процедуру для вывода результата 5. Написать процедуру для ввода чисел 6. Написать макрос для расчета 7. Передача параметров через стек 8. Используйте стандартные директивы сегментации и формат exe-программы.
Вариант 6 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=(А-В)*4. 2. Выполнить циклический сдвиг полученного числа С на 3 бита вправо. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде. 4. Написать процедуру для вывода результата 5. Написать макрос для ввода чисел 6. Написать процедуру для расчета 7. Передача параметров через стек 8. Используйте упрощенные директивы сегментации и формат exe-программы.
Вариант 7 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=А/2+В. 2. Выполнить арифметический сдвиг С на 3 бит влево. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде.
4. Написать макрос для вывода результата 5. Написать процедуру для ввода чисел 6. Написать процедуру для расчета 7. Передача параметров через стек 8. Используйте стандартные директивы сегментации и формат сом-программы.
Вариант 8 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=А+В*2. 2. Обнулить все четные биты С. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде. 4. Написать процедуру для вывода результата 5. Написать процедуру для ввода чисел 6. Написать процедуру для расчета 7. Передача параметров через стек 8. Используйте упрощенные директивы сегментации и формат сом-программы.
Вариант 9 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=А+(В-5h)*2. 2. Если установлен четвертый бит числа С то вывести на экран А в десятичном виде, в противном случае вывести на экран число В в десятичном виде. 3. Написать макрос для вывода результата 4. Написать макрос для ввода чисел 5. Написать макрос для расчета 6. Передача параметров через общую память 7. Используйте стандартные директивы сегментации и формат exe-программы.
Вариант 10 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=(А+12h)/2+В. 2. Обнулить все четные биты С. 3. Вывести на экран число С и все промежуточные результаты в двоичном виде. 4. Написать процедуру для вывода результата 5. Написать макрос для ввода чисел 6. Написать макрос для расчета 7. Передача параметров через общую память 8. Используйте упрощенные директивы сегментации и формат exe-программы.
Вариант 11 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=(А-14h)*4-В. 2. Установить все четные биты С. 3. Вывести на экран число С и все промежуточные результаты в десятичном виде. 4. Написать макрос для вывода результата 5. Написать процедуру для ввода чисел 6. Написать макрос для расчета 7. Передача параметров через общую память 8. Используйте стандартные директивы сегментации и формат сом-программы.
Вариант 12 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=А*В-4. 2. Если третий и пятый бит числа С установлены, вывести на экран А в двоичном виде, если третий и пятый бит числа С сброшены, вывести на экран В в двоичном виде, в других случаях вывести на экран число С в двоичном виде. 3. Написать макрос для вывода результата 4. Написать макрос для ввода чисел
5. Написать процедуру для расчета 6. Передача параметров через общую память 7. Используйте упрощенные директивы сегментации и формат сом-программы.
Вариант 13 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=(А+В)/4-16. 2. Если третий и пятый бит числа С установлены, вывести на экран А в двоичном виде, если третий и пятый бит числа С сброшены, вывести на экран В в двоичном виде, в других случаях вывести на экран число С в двоичном виде. 3. Написать процедуру для вывода результата 4. Написать процедуру для ввода чисел 5. Написать макрос для расчета 6. Передача параметров через общую память 7. Используйте стандартные директивы сегментации и формат exe-программы.
Вариант 14 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=(А-В)*2+1Ah. 2. Вывести на экран 1 если шестой бит числа С установлен и 0 в противном случае. 3. Написать макрос для вывода результата 4. Написать процедуру для ввода чисел 5. Написать процедуру для расчета 6. Передача параметров через общую память 7. Используйте упрощенные директивы сегментации и формат exe-программы.
Вариант 15 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=(А-14h)*4-В. 2. Сбросить третий бит числа С, если он установлен. 3. Вывести на экран число С и все промежуточные результаты в десятичном виде. 4. Написать процедуру для вывода результата 5. Написать макрос для ввода чисел 6. Написать процедуру для расчета 7. Передача параметров через общую память 8. Используйте стандартные директивы сегментации и формат сом-программы.
Вариант 16 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=А+4*В. 2. Выполнить циклический сдвиг числа С на 3 бита вправо. 3. Вывести на экран число С и все промежуточные результаты в десятичном виде. 4. Написать процедуру для вывода результата 5. Написать процедуру для ввода чисел 6. Написать процедуру для расчета 7. Передача параметров через общую память 8. Используйте упрощенные директивы сегментации и формат сом-программы.
Вариант 17 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=A*3+B*2. 2. Выполнить арифметический сдвиг числа С на 2 бита вправо. 3. Вывести на экран число С и все промежуточные результаты в десятичном виде. 4. Написать макрос для вывода результата 5. Написать макрос для ввода чисел 6. Написать макрос для расчета 7. Передача параметров через регистры 8. Используйте стандартные директивы сегментации и формат exe-программы.
Вариант 18 Пользователь вводит два числа А и В в десятичном виде. Программа должна: 1. Посчитать С=A*3+B*2. 2. Выполнить арифметический сдвиг числа С на 2 бита вправо. 3. Вывести на экран число С и все промежуточные результаты в шестнадцатеричном виде. 4. Написать процедуру для вывода результата 5. Написать макрос для ввода чисел 6. Написать макрос для расчета 7. Передача параметров через регистры 8. Используйте упрощенные директивы сегментации и формат exe-программы.
Вариант 19 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=А*В-4. 2. Если третий и пятый бит числа С установлены, вывести на экран А в десятичном виде, если третий и пятый бит числа С сброшены, вывести на экран В в десятичном виде, в других случаях вывести на экран число С в десятичном виде. 3. Написать макрос для вывода результата 4. Написать процедуру для ввода чисел 5. Написать макрос для расчета 6. Передача параметров через регистры 7. Используйте стандартные директивы сегментации и формат сом-программы.
Вариант 20 Пользователь вводит два числа А и В в шестнадцатеричном виде. Программа должна: 1. Посчитать С=(А+17h)/2+В. 2. Обнулить все четные биты С. 3. Вывести на экран число С и все промежуточные результаты в десятичном виде. 4. Написать макрос для вывода результата 5. Написать макрос для ввода чисел 6. Написать процедуру для расчета 7. Передача параметров через регистры 8. Используйте упрощенные директивы сегментации и формат сом-программы.
СПИСОК ЛИТЕРАТУРЫ 1. Гриценко Ю. Б. Операционные системы: учебное пособие для вузов / Томск: ТУСУР, 2004. - 243[1] с. 2. Гриценко Ю. Б. Операционные среды, системы и оболочки: учебное пособие / Томск: ТУСУР, 2005. - 281 с. 3. Гордеев А.В. Операционные системы: Учебник для вузов / СПб.: Питер, 2004. - 415[1] с. 4. Робачевский А. М.. Операционная система UNIX: Учебное пособие для вузов / СПб.: BHV – Санкт-Петербург, 2002. – 514с. 5. Юров В. Assembler / СПб.: Питер, 2001. – 624с. ил.
[1] Синтаксис представлен для ОС Windows XP построенной на базе технологии NT, в ОС MS-DOS и Windows 9x количество аргументов и команд несколько меньше. [2] CHOICE — это внешняя команда. [3] Для адаптивного планирования — текущий и начальный приоритеты. [4] Квадратные скобки означают не обязательные параметры [5] За исключением модели памяти TINY при использовании упрощенных директив сегментации.
|
|||||||||
Последнее изменение этой страницы: 2016-08-16; просмотров: 465; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.135.53 (0.011 с.) |