АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Дополнительные сведения

Читайте также:
  1. Б) дополнительные
  2. Б) Дополнительные риски.
  3. Базовая ставка и дополнительные выплаты
  4. ВНИМАНИЕ: если не получены дополнительные рекомендации, то обновление необходимо установить сразу после получения.
  5. Вопрос 32. Электронные таблицы: назначение, основные и дополнительные функции (MS Excel).
  6. Глава VII ДОПОЛНИТЕЛЬНЫЕ АКТЫ К ПЕРВЫМ ОСНОВНЫМ ЗАКОНАМ СВЯТОГО ТРИБУНАЛА, ВЫТЕКАЮЩИЕ ИЗ НИХ ПОСЛЕДСТВИЯ И АПЕЛЛЯЦИИ В РИМ ПРОТИВ ЗЛОУПОТРЕБЛЕНИЯ ИМИ
  7. Для инициации транскрипции у эукариот требуются дополнительные факторы
  8. Дополнительные белки тонких нитей
  9. Дополнительные главы. Глава 19. Рудольф Штейнер и Макс Гендель: теософская традиция.
  10. ДОПОЛНИТЕЛЬНЫЕ ДЕТАЛИ
  11. Дополнительные единицы
  12. Дополнительные жесты левой рукой (выполняются как с жезлом, так и без него).

Необходимо отметить, что в группу арифметических команд входит ещё шесть команд корректировки результатов вычислений, которые приведены в табл. 7. Как уже отмечалось, арифметические операции можно производить и над числами, записанными в двоично-десятичном формате в упакованном и неупакованном виде. Изменяется лишь форма представления переменной, а сам процесс вычисления остаётся неизменным. Вследствие чего в результирующей переменной может возникнуть неопределённость.

Таблица 7

Название корректировки Мнемоника и формат Описание
сложение вычитание умножение деление сложение вычитание aad aas aam aad daa das (al) ← (al’) (al) ← (al’) (ah:al) ← (ah:al’) (ah:al) ← (ah:al’) (al) ← (al’) (al) ← (al’)

 

В качестве примера приведём сложение двух двоично-десятичных чисел, представленных в упакованном виде в один байт.

 

+47

26

6D

 

Поскольку в двоично-десятичных числах не используются значения А, В, С, D, E, F, полученный результат не является корректным. Для ликвидации неопределенности необходимо воспользоваться соответствующей командой корректировки результата. Так для чисел, записанных в упакованном виде, используются команды daa и das, исправляющие результат вычислений после операций сложения и вычитания. Для чисел, представленных в неупакованном виде, применяются четыре команды aaa, aas, aam и aad – корректировка сложения, вычитания, умножения и деления соответственно. Все эти команды однобайтовые. Корректируемый операнд всегда должен находиться в аккумуляторе (al или al:ah). Все команды исправления результата вычислений, кроме aad, применяются после соответствующих операций над двоично-десятичными числами. Команду корректировки деления aad необходимо применять перед операцией деления над числами.

Вернемся к приведенному примеру. После получения промежуточного результата необходимо воспользоваться командой dda, вследствие чего в аккумуляторе сформируется правильный результат равный 73. Если же промежуточный результат был уже корректным, то никаких действий данная команда производить не будет. Отметим, что если было произведено исправление результата вычислений, то могут измениться значения флагов AF, CF, ZF, OF, PF, SF.

 

2 .7 Основные правила при разработке программ на языке ASSEMBLER.

Для разработки ассемблерных программ в операционной системе DOS необходимо на диске компьютера D выбрать папку SHELLS, а в ней программу под названием VC.COM. После этого на экране монитора откроется окно синего цвета под названием D\SHELLS\VC.COM. В этом окне Вы увидите две одинаковые DOSовские панели под названием D\SHELLS. В них будут представлены некоторые файлы с расширениями:.exe,.map,.hlp и др. Для создания своего файла с программой необходимо на клавиатуре нажать клавиши Sift - F4. После этого откроется окно под названием Edit. В этом окне необходимо набрать имя создаваемого Вами файла с обязательным расширением.asm. Само имя файла может начинаться как с латинской буквы, так и с цифры и состоять не более чем из восьми символов, например, lab_1.asm. После этого нажимается клавиша Enter и на экране монитора появляется чистое окно, в котором и набирается текст программы пользователя с использованием допустимых символов языка ASSEMBLER. Набор текста программы желательно начинать, отступив от левого края несколько позиций, то есть создать слева от основного текста программы свободное поле нажатием клавиши Tab. В этом поле обычно размещаются метки, на которые происходит передача управления в некоторых командах программы. При написании программ на языке ASSEMBLER для указанных выше ЭВМ используются три модели памяти: tiny, small и flat. Мы в дальнейшем будем использовать модель small, а сама программа в первых наших работах всегда будет начинаться стандартными инструкциями:

 

Model small

Stack 100h

Data

 

Эти инструкции означают, что выбирается малая модель памяти, объёмом 64 Кбайта, и под стек отводится 256 байт. После идентификатора.data с новой строки описывается структура памяти, которая будет использоваться программой для хранения данных. Эта область памяти и называется сегментом данных. Её объём всегда должен быть меньше 64 Кбайт, так как в любой модели памяти ПЭВМ должны ещё обязательно располагаться сегмент кода и сегмент стека. Например, если нам необходимо выделить три области памяти в сегменте данных, объёмом 150 байт, 300 слов и 200 двойных слов, то в программе после указанного идентификатора.data необходимо написать следующие инструкции:

 

Buffer_1 db 150

Buffer_2 dw 300

Buffer_3 dd 200

 

Вместо идентификаторов buffer можно использовать любые другие, начинающиеся с буквы. В область памяти buffer_1,например, можно вводить символы с клавиатуры, имеющие формат 1 байт или прочитать 150 байт с жёсткого диска. В области памяти buffer_2 могут, например, размещаться результаты различных вычислений, размером в 2 байта каждый. Область памяти, обозначенная как buffer_3, всегда должна заполняться данными, имеющими формат 4 байта. Эти области памяти иногда предварительно заполняют нулями или символом $, например:

 

Buffer_1 db 150 dup(0)

Или

buffer_1 db 150 dup(’$’)

 

Здесь оператор dup означает дублирование.

Если в программе заранее создаётся какой-то массив чисел, например, 127, 5678, 9573, 752, то в сегменте данных после идентификатора.data следует написать инструкцию:

 

Array_1 dw 127, 5678, 9573,752

 

Отметим, что несколько аналогичных массивов, только под другими названиями, могут располагаться в сегменте данных.

Если в какой-то точке программы необходимо вывести на экран монитора некоторое сообщение, например, слово ’ASSEMBLER’, то в сегменте данных.data нужно сформировать инструкцию вида:

 

String_1 db ’ASSEMBLER’,’$’,

 

то есть, выводимую на экран информацию заключают в кавычки (одинарные или двойные - неважно). В конце сообщения обязательно ставится символ ’$’, означающий окончание вывода. Для того чтобы информация выводилась с новой строки, в области памяти.data формируется инструкция:

 

end_line db 0dh, 0ah,’$’,

 

где код 0dh (ASCII - код) обозначает управляющий символ CR – перевод курсора на начало текущей строки, а код 0ah – управляющий символ LF - перевод курсора на одну позицию вниз. Для исполнения этих инструкций язык ASSEMBLER использует специальные подпрограммы, называемые прерываниями. Так, например, для перевода маркера в начало новой строки и вывода заранее заготовленного текста на экран монитора используется прерывание под номером 21h с функцией DOS 09h, которая предварительно загружается командой mov в регистр ah. Само прерывание вызывается командой int 21h. Например, для вывода на экран с новой строки слова ASSEMBLER в тексте программы в сегменте кода необходимо поместить следующий фрагмент:

 

Mov ah,09h


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)