Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Макросредства языка ассемблера↑ ⇐ ПредыдущаяСтр 10 из 10 Содержание книги
Поиск на нашем сайте
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; просмотров: 451; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.187.240 (0.007 с.) |