Реферат Курсовая Конспект
Практическая работа №1-3 Представление информации в ЭВМ. Кодирование и подсчет количества информации. Приобретение навыков представления двоичной информации в ЭВМ - раздел Компьютеры, Практическая Работа №1-3 Представление Информации В Эвм...
|
Практическая работа №1-3 Представление информации в ЭВМ. Кодирование и подсчет количества информации.
ЦЕЛЬ РАБОТЫ
Приобретение навыков представления двоичной информации в ЭВМ
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Прочитать задания к работе, просмотреть все предложенные примеры решения задач и дополнительные задания к ним
2. Сформулировать условие и решить задачу.
3. Оформите отчет по самостоятельной работе, который должен содержать:
-титульный лист (см. приложение);
-условие задачи;
-решение;
-ответ.
Выполнение арифметических операций компьютере
Правила выполнения арифметических операций в двоичной системе счисления
аналогичны правилам операций в десятичной системе счисления.
Сложение | 101110 + 001011 | Вычитание | 101110 001011 |
Результат | Результат | ||
У'множение | X 101 101101 000000 101101 | Деление | 101101 /101 01 010 0101 |
'Результат произведение) | Результат (частное) |
Пример 3
Сложение | 101110 + 001011 | Вычитание | 101110 001011 |
Результат | Результат | ||
У'множение | X 101 101101 000000 101101 | Деление | 101101 /101 01 010 0101 |
'Результат произведение) | Результат (частное) |
Пример 4
Сформулировать задание для выбранных чисел и произвести вышеуказанные действия
Подтвердить решение, сделав обратное преобразование)
Пример 5
Пример 6
ПРИМЕРНЫЕ ВОПРОСЫ НА ЗАЩИТЕ РАБОТЫ
Расскажите о позиционных и непозиционных системах исчисления
Назовите некоторые наиболее известные коды
В чем сущность двоичного кодирования звуковой информации
ПРАКТИЧЕСКАЯ РАБОТА №4. Представление чисел в ЭВМ
1 ЦЕЛЬ РАБОТЫ
Изучить информацию о представлении чисел в ЭВМ
Прочитать МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Прочитать задания к работе, просмотреть все предложенные примеры решения задач и дополнительные задания к ним
2. Сформулировать своё условие (подобное предложенным) и решить задачу.
3. Оформите отчет по самостоятельной работе, который должен содержать:
-титульный лист (см. приложение);
-условие задачи;
-решение;
-ответ.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Для получения дополнительного кода отрицательного числа необходимо все символы этого числа инвертировать, кроме последней младшей единицы и тех нулей, которые за ней следуют.
Выполнение арифметических операций компьютере
Правила выполнения арифметических операций в двоичной системе счисления
аналогичны правилам операций в десятичной системе счисления.
Пример:
Сложение | 101110 + 001011 | Вычитание | 101110 001011 |
Результат | Результат | ||
У'множение | X 101 101101 000000 101101 | Деление | 101101 /101 01 010 0101 |
'Результат произведение) | Результат (частное) |
ПРАКТИЧЕСКАЯ РАБОТА №5. Логические основы и элементы ЭВМ
1 ЦЕЛЬ РАБОТЫ
Изучить информацию о логических основах и элементах ЭВМ.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
3. Ответить на контрольные вопросы
3. ОФОРМИТЕ ОТЧЕТ, КОТОРЫЙ ДОЛЖЕН СОДЕРЖАТЬ:
-титульный лист (см. приложение);
-цель работы;
-порядок выполнения работы;
Логические операции и базовые элементы компьютера
В алгебре высказываний над высказываниями можно производить определенные логические операции, в результате которых получаются новые высказывания. Истинность результирующих высказываний зависит от истинности исходных и использованных для их преобразования логических операций. „
Схемные элементы ЭВМ. Преобразование информации в ЭВМ осуществляется элементами (схемами) двух классов:
- комбинационными;
- последовательностными (схемами с памятью).
Состояние выходов комбинационных схем однозначно определяется состояниями входов в данный момент времени.
Состояние выходов в последовательных схемах определяется не только состоянием входов, но и внутренними состояниями, имевшими место в предыдущие моменты времени.
Комбинационные схемы являются техническим аналогом булевых функций. Подобно тому, как сложная булева функция может быть получена суперпозицией более простых функций, так и комбинационная схема может строиться из более простых схем.
Существует следующее определение — систему логических элементов, с помощью которых путем суперпозиции можно представить любую сколь угодно сложную комбинационную схему, называют функционально полной. Известны различные функционально полные системы элементов, но наибольшее распространение получили системы, использующие логические операции, выражаемые предлогами НЕ, и, или.
Логический элемент компьютера — это часть электронной схемы, которая реализует элементарную логическую функцию. Логическими элементами компьютеров являются электронные схемы «И», «ИЛИ», «НЕ», «И-НЕ», «ИЛИ-НЕ» или другие (называемые также вентилями), а также триггер. Можно показать, что с помощью этих схем можно реализовать любую логическую функцию, описывающую работу устройств компьютера. Обычно у вентилей бывает от двух до восьми входов и один или два выхода.
Каждый логический элемент имеет свое условное обозначение, которое выражает его логическую функцию, но не указывает на то, какая именно электронная схема в нем реализована. Работу логических элементов описывают с помощью таблиц истинности.
Рассмотрим логические операции и соответствующие им элементы логических схем.
Конъюнкция. Соединение двух (или нескольких) высказываний в одно с помощью союза и (or) называется операцией логического умножения, или конъюнкцией. Эту операцию принято обозначать знаками «^, &» или знаком умножения «х». Сложное высказывание А ^ В истинно только в том случае, когда истинны оба входящих в него высказывания. Истинность такого высказывания задается табл.
Коньюнкция | Дизъюнкция | |||||
A | B | A&B | A | B | AvB | AxorB(исключающее или) |
Логическая схема «И» реализует конъюнкцию двух или более логических значений. Условное обозначение на структурных диаграммах схемы «И» с двумя входами представлено на рис.
Единица на выходе схемы «И» будет тогда и только тогда, когда на всех входах будут единицы. Когда хотя бы на одном входе будет нуль, на выходе также будет нуль.
Связь между выходом z этой схемы и входами х и у описывается соотношением z = x&y (читается как «х и у»). Операция конъюнкции на структурных схемах обозначается знаком «&».
Дизъюнкция. Объединение двух (или нескольких) высказываний с помощью союза или (OR) называется операцией логического сложения, или дизъюнкцией. Эту операцию обозначают знаками «I, v» или знаком сложения «+». Сложное высказывание A v В истинно, если истинно хотя бы одно из входящих в него высказываний (см. табл. 1.14).
В последнем столбце табл. 1.14 размещены результаты модифицированной операции ИЛИ — Исключающее или (XOR). Отличается от обычного или последней строкой (см. также рис. 1.7, е).
Схема «ИЛИ» реализует дизъюнкцию двух или более логических значений. Когда хотя бы на одном входе схемы «ИЛИ» будет единица, на ее выходе также будет единица.
Условное обозначение на структурных схемах схемы «ИЛИ» с двумя входами представлено на рис. 1.7, б. Знак «1» на схеме происходит от классического обозначения дизъюнкции как «>=» (т. е. значение дизъюнкции равно единице, если сумма значений операндов больше или равна 1). Связь между выходом z этой схемы и входами х и у описывается соотношением z = x v у (читается как «х или у»).
Схема «НЕ» (инвертор) реализует операцию отрицания. Связь между входом х этой схемы и выходом z можно записать соотношением z = х, где х читается как «не х» или «Инверсия х».
Если на входе схемы «О», то на выходе «1», и наоборот. Условное обозначение на структурных схемах инвертора — на рис. 1.7, в.
Вентили. Кроме схемных элементов, соответствующих перечисленным логическим операторам, в состав логических схем ходят комбинированные связки, именуемые вентилями, например, следующие.
Схема «И-НЕ» состоит из элемента «И» и инвертора и осуществляет отрицание результата схемы «И» (табл. 1.16). Связь между выходом z и входами х и у схемы записывают как , или «Инверсия х и у». Условное обозначение на структурных схемах схемы «И-НЕ» с двумя входами приведено на рис. 1.7, г.
Таблица 1.16. Таблица истинности схем «И-НЕ», «ИЛИ-НЕ»
Инверсия х и у | Инверсия x или у | ||||
x | y | x | y | ||
0 | |||||
Схема «ИЛИ-НЕ» состоит из элемента «ИЛИ» и инвертора и осуществляет отрицание результата схемы «ИЛИ» (табл. 1.16). Связь между выходом z и входами хну схемы записывают как х v у, или «Инверсия х или у». Условное обозначение на структурных схемах схемы «ИЛИ-НЕ» с двумя входами представлено на рис. 1.7, д.
Схема «Исключающее ИЛИ» (рис. 1.7, е) соответствует «сложению по модулю два» (см. также табл. 1.14).
Следует отметить, что помимо операций и, или, не в алгебре высказываний существует ряд и других операций. Например, операция эквивалентности (эквиваленции)
А ~ В (А = В, или A eqv В) (табл. 1.17).
Таблица 1.17. Таблицы истинности операций эквивалентности и импликации
Эквивалентность | Импликация | ||||
А | В | А~В | А | В | АВ |
---- | |||||
Другим примером может служить логическая операция импликации или логического следования (А —> В, A IMP В)у иначе говоря, «если А, то В» (табл. 1.17).
Высказывания, образованные с помощью логических операций, называются сложными. Истинность сложных высказываний можно установить, используя таблицы истинности. Например, истинность сложного высказывания (^) определяется табл. 1.18.
Таблица 1.18. Таблица истинности высказывания(A&B)v(&)
А | В | & | ||
Высказывания, у которых таблицы истинности совпадают, называются равносильными. Для обозначения равносильных высказываний используют знак «=» (А = В). Рассмотрим сложное высказывание
(А ^ В) v (^) — табл. 1.19.
Таблица 1.19. Таблица истинности выражения (А& В) v (&)
А | B | А&В | & | (А & В) v (А &B) | ||
Если сравнить эту таблицу с таблицей истинности операции эквивалентности высказываний A v В (см. табл. 1.17), то можно увидеть, что высказывания (А ^ В) v (А ^ В) и А ~ В тождественны, т. е. (А ~ В) = (А л В) v (А л В).
В алгебре высказываний можно проводить тождественные преобразования, заменяя одни высказывания равносильными им другими высказываниями.
Свойства операций. Исходя из определений дизъюнкции, конъюнкции и отрицания, устанавливаются свойства этих операций и взаимные распределительные свойства. Приведем примеры некоторых из этих свойств:
Высказывания, образованные с помощью нескольких операций логического сложения, умножения и отрицания, называются сложными. Истинность всякого сложного высказывания устанавливается с помощью таблиц истинности. Сложные высказывания, истинные (true) для любых значений истинности входящих в них простых высказываний, называются тождественно-истинными. Наоборот, тождественно-ложными являются формулы, принимающие значение false для любых значений входящих в него простых высказываний.
В табл. 1.20 приведено доказательство истинности дистрибутивного закона. Аналогичным образом могут быть доказаны и другие тождества.
Таблица 1.20. Доказательство истинности | |||||||
А | B | C | BvC | A^(BvC) | А^B | А^C | (A ^B)v(A ^С) |
ЦЕЛЬ РАБОТЫ
Приобретение навыков работы с регистрами процессора. и памятью.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Оформите отчет, который должен содержать:
- титульный лист (см. приложение);
-постановку задачи;
-формулировка варианта задания.
-размещение данных в ОЗУ.
-программа в форме таблицы
-последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.
-результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.
Пример 1
Дана последовательность мнемокодов, которую необходимо преобразовать в машинные коды, занести в ОЗУ ЭВМ, выполнить в режиме Шаги зафиксировать изменение состояний программно-доступных объектов ЭВМ (табл. 9.1).
Таблица 9.1. | Команды и коды | |||||||
Последовательность | Значения | |||||||
Команды | RD#20 | WR30 | ADD | #5 | WR@30 | JNZ 002 | ||
Коды | 21 1 020 | 22 0 030 | 23 1 | 22 2 030 | 12 0002 |
Введем полученные коды последовательно в ячейки ОЗУ, начиная с адреса 000. Выполняя команды в режиме Шаг,будем фиксировать изменения программно-доступных объектов (в данном случае это Асе, PC и ячейки ОЗУ 020 и 030) в табл. 9.2.
Таблица 9.2.Содержимое регистров
PC | Асc | М(30) | М(20) | PC | Асc | М(30) | М(20) |
Задание 1
1. Ознакомиться с архитектурой ЭВМ
2. Записать в ОЗУ "программу", состоящую из пяти команд— варианты задания выбрать из табл.. Команды разместить в последовательных ячейках памяти.
3. При необходимости установить начальное значение в устройство ввода IR.
4. Определить те программно-доступные объекты ЭВМ, которые будут изменяться при выполнении этих команд.
№ | IR | Команда 1 | Команда 2 | Команда 3 | Команда 4 | Команда 5 |
IN | MUL #2 | WR10 | wr @10 | JNS 001 | ||
X | RD #17 | SUB #9 | WR16 | WR @16 | JNS 001 | |
IN | ADD #16 | WR8 | WR @8 | JS 001 | ||
X | RD #2 | MUL #6 | WR 11 | WR @11 | JNZ 00 | |
IN | WR8 | DIV #14 | WR @8 | JMP 002 | ||
X | RD #4 | WR 11 | RD @11 | ADD #330 | JS 000 | |
IN | WR9 | RD @9 | SUB#1 | JS 001 | ||
X | RD 4 | SUB #8 | WR8 | WR @8 | JNZ 001 | |
IN | ADD #12 | WR 10 | WR @10 | JS 004 | ||
X | RD 4 | ADD #15 | WR 13 | WR @13 | JMP 001 | |
IN | SUB #308 | WR11 | WR @11 | JMP 001 | ||
X | RD #988 | ADD #19 | WR9 | WR @9 | JNZ 001 | |
IN | WR11 | ADD 11 | WR @11 | JMP 002 | ||
X | RD #5 | MUL #9 | WR10 | WR @10 | JNZ 001 |
5. Выполнить в режиме Шагвведенную последовательность команд, фиксируя изменения значений объектов, определенных в п. 4, в таблице (см. форму табл. 9.2).
6. Если в программе образуется цикл, необходимо просмотреть не более двух повторений каждой команды, входящей в тело цикла.
ТаблицаВарианты задания 1
Контрольные вопросы 1
1. Из каких основных частей состоит ЭВМ и какие из них представлены
в модели?
2. Что такое система команд ЭВМ?
3. Какие классы команд представлены в модели?
4. Какие действия выполняют команды передачи управления?
5. Какие способы адресации использованы в модели ЭВМ? В чем отличие между ними?
6. Какие ограничения накладываются на способ представления данных модели ЭВМ?
7. Какие режимы работы предусмотрены в модели и в чем отличие между ними?
8. Как записать программу в машинных кодах в память модели ЭВМ.
9. Как просмотреть содержимое регистров процессора и изменить содермое некоторых регистров?
10. Как просмотреть и, при необходимости, отредактировать содержи ячейки памяти?
11 Как запустить выполнение программы в режиме приостановки работы
после выполнения каждой команды?
12 Какие способы адресации операндов применяются в командах ЭВМ?
13 Какие команды относятся к классу передачи управления?
МЕТОДИЧЕСКИЕ УКАЗАНИЯ 2. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩЕГОСЯ ПРОЦЕССА
Для реализации алгоритмов, пути в которых зависят от исходных данных, используют команды условной передачи управления.
Пример 2
В качестве примера (несколько упрощенного по сравнению с заданиями практической работы № 3) рассмотрим программу вычисления функции
причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис.
В данной практической работе используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда.
Оценив размер программы примерно в 20—25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде табл. 9.4.
Таблица Пример программы
Адрес | Команда | Примечание | ||
Мнемокод | Код | |||
IN | 01 0 000 | Ввод х | ||
WR 30 | 22 0 030 | Размещение х в ОЗУ(ОЗО) | ||
SUB #16 | 24 1016 | Сравнение с границей — (х -16) | ||
JS 010 | Переход по отрицательной разности | |||
RD 30 | 21 0 030 | Вычисления по первой формуле | ||
SUB #11 | 24 1011 | |||
WR 31 | 22 0 031 | |||
MUL 31 | 25 0 031 | |||
SUB #125 | 24 1 125 | |||
JMP 020 | 10 0 020 | Переход на вывод результата | ||
RD 30 | 21 0 030 | Вычисления по второй формуле | ||
MUL 30 | 25 0 030 | |||
WR 31 | 22 0 031 | |||
RD 30 | 21 0 030 | |||
MUL #72 | 25 1 072 | |||
ADD 31 | 23 0 031 | |||
ADI 106400 | 43 0 000 | |||
DIVI 100168 | 46 0 000 | |||
OUT | 02 0 000 | Вывод результата | ||
HLT | 09 0 000 | Стоп | ||
Задание 2
1. Разработать программу вычисления и вывода значения функции:
Fi(x), при х>=а,
Fj(x) при x< а,
для вводимого из IR значения аргумента х. Функции и допустимые пределы изменения аргумента приведены в табл. 9.5, варианты заданий — в табл. 9.6.
2. Исходя из допустимых пределов изменения аргумента функций (табл. 9.5) и значения параметра а для своего варианта задания (табл. 9.6) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.
3. Ввести текст программы в окно Текст программы,при этом возможен набор и редактирование текста непосредственно в окне Текст программы
или загрузка текста из файла, подготовленного в другом редакторе.
4. Ассемблировать текст программы, при необходимости исправить синтаксические ошибки.
5. Отладить программу. Для этого:
а) записать в IR значение аргумента х > а (в области допустимых значений);
б) записать в PC стартовый адрес программы;
в) проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 5, г и 5, д; иначе перейти к п. 5, е;
г) записать в PC стартовый адрес программы;
д) наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 5, а — 5, в;
е) записать в IR значение аргумента х < а (в области допустимых значений); выполнить пп. 5, б и 5, в;
ж) записать в IR недопустимое значение аргумента х и выполнить пп. 5, 6 и 5, в.
6. Для выбранного допустимого значения аргумента х наблюдать выполнение отлаженной программы в режиме Шаг и записать в форме табл. 9.2 содержимое регистров ЭВМ перед выполнением каждой команды.
Контрольные вопросы 2
1. Как работает механизм косвенной адресации?
2. Какая ячейка будет адресована в команде с косвенной адресацией через
ячейку 043, если содержимое этой ячейки равно 102 347?
3. Как работают команды передачи управления?
4. Что входит в понятие "отладка программы"?
5. Какие способы отладки программы можно реализовать в модели?
Практическая работа 9. Программирование цикла с переадресацией
.
ЦЕЛЬ РАБОТЫ
Приобретение навыков работы с регистрами процессора. и памятью.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Оформите отчет, который должен содержать:
- титульный лист (см. приложение);
-постановку задачи;
-формулировка варианта задания.
-размещение данных в ОЗУ.
-программа в форме таблицы
-последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.
-результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ 1.
Программирование цикла с переадресацией
При решении задач, связанных с обработкой массивов, возникает необходимость изменения исполнительного адреса при повторном выполнении некоторых команд. Эта задача может быть решена путем использования косвенной адресации.
ПримерЗ
Разработать программу вычисления суммы элементов массива чисел С], С2,..., С„ . Исходными данными в этой задаче являются: п — количество суммируемых чисел и Сх, С2,..., С„ — массив суммируемых чисел. Заметим, что должно выполняться условие п > 1, т. к. алгоритм предусматривает, по крайней мере, одно суммирование. Кроме того, предполагается, что суммируемые числа записаны в ОЗУ подряд, т. е. в ячейки памяти с последовательными адресами. Результатом является сумма S.
Распределение памяти таково. Программу разместим в ячейках ОЗУ, начиная с адреса 000, примерная оценка объема программы — 20 команд; промежуточные переменные: Аг — в ячейке ОЗУ с адресом 030, к — по адресу 031, S — по адресу 032. ГСА программы показана на рис. 9.2, текст программы с комментариями приведен в табл. 9.7.
Адрес | Команда | Примечание |
RD #40 | Загрузка начального адреса массива 040 | |
WR 30 | в ячейку 030 | |
RD #10 | Загрузка параметра цикла к = 10 в ячейку 031 | |
WR 31 | ||
RD #0 | Загрузка начального значения суммы S = 0 | |
WR 32 | в ячейку 032 | |
Ml: RD 32 | Добавление | |
ADD @30 | к текущей сумме | |
WR 32 | очередного элемента массива | |
RD 30 | Модификация текущего | |
ADD #1 | адреса массива | |
WR 30 | (переход к следующему адресу) | |
RD 31 | Уменьшение счетчика | |
SUB #1 | (параметра цикла) | |
WR 31 | на1 | |
JNZ Ml | Проверка параметра цикла и переход при к ■*■ 0 | |
RD 32 | Вывод | |
OUT | результата | |
HLT | Стоп |
Задание 3
1. Написать программу определения заданной характеристики последовательности чисел С1, С2,..., Сп . Варианты заданий приведены в табл. 9.8.
2. Записать программу в мнемокодах, введя ее в поле окна Текст программы.
3. Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов.
4. Загрузить в ОЗУ необходимые константы и исходные данные.
Отладить программу
Номер варианта | Характеристика последовательности чисел С,, С2,..., С„ |
Количество четных чисел | |
Номер минимального числа | |
Произведение всех чисел | |
Номер первого отрицательного числа | |
Количество чисел, равных С} | |
Количество отрицательных чисел | |
Максимальное отрицательное число | |
Номер первого положительного числа | |
Минимальное положительное число | |
Номер максимального числа | |
Количество нечетных чисел | |
Количество чисел, меньших С{ | |
Разность сумм четных и нечетных элементов массивов | |
Отношение сумм четных и нечетных элементов массивов |
Примечание.Под четными (нечетными) элементами массивов понимаются элементы массивов, имеющие четные (нечетные) индексы. Четные числа — элементы массивов, делящиеся без остатка на 2.
Содержание отчета
1. Формулировка варианта задания.
2. Граф-схема алгоритма решения задачи.
3. Распределение памяти (размещение в ОЗУ переменных, программы и не
обходимых констант).
4. Программа.
5. Значения исходных данных и результата выполнения программы.
Контрольные вопросы
1. Как организовать цикл в программе?
2. Что такое параметр цикла?
3. Как поведет себя программа, приведенная в табл. 9.7, если в ней будет отсутствовать команда wr 31 по адресу 014?
4. Как поведет себя программа, приведенная в табл. 9.7, если метка mi будет поставлена по адресу 005? 007?
Практическая работа №9-10 Работа со стековой памятью. (Ассемблер)
ЦЕЛЬ РАБОТЫ
Приобретение навыков работы со стековой памятью. (Ассемблер)
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Прочитать задания к работе
4. Оформите отчет, который должен содержать:
-титульный лист (см. приложение);
-постановку задачи;
- описание пошагового исполнения;
- отчет о полученном результате
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Пример
Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов. Каждый массив задается двумя параметрами: адресом первого элемента и длиной. Очевидно, в программе трижды необходимо выполнить поиск максимального элемента массива, поэтому следует написать соответствующую подпрограмму.
Параметры в подпрограмму будем передавать через регистры: R1 — начальный адрес массива, R2 — длина массива.
Рассмотрим конкретную реализацию этой задачи. Пусть первый массив начинается с адреса 085 и имеет длину 14 элементов, второй— 100 и 4, третий— 110 и 9. Программа будет состоять из основной части и подпрограммы. Основная программа задает параметры подпрограмме, вызывает ее и сохраняет результаты работы подпрограммы в рабочих ячейках. Затем осуществляет вычисление среднего арифметического и выводит результат на устройство вывода. В качестве рабочих ячеек используются регистры общего назначения R6 и R7 — для хранения максимальных элементов массивов. Подпрограмма получает параметры через регистры R1 (начальный адрес массива) и R2 (длина массива). Эти регистры используются подпрограммой в качестве регистра текущего адреса и счетчика цикла соответственно. Кроме того, R3 используется для хранения текущего максимума, a R4 — для временного хранения текущего элемента. Подпрограмма возвращает результат через аккумулятор. В табл. 9.9 приведен текст основной программы и подпрограммы. Обратите внимание, цикл в подпрограмме организован с помощью команды jrnz, а модификация текущего адреса— средствами постинкрементной адресации.
Программа примера
Команда | Примечания | |||
Основная программа | ||||
RD #85 | Загрузка | |||
WR R1 | параметров | |||
RD #14 | первого | |||
WR R2 | массива | |||
CALL M | Вызов подпрограммы | |||
WR R6 | Сохранение результата | |||
RD #100 | Загрузка | |||
WR R1 | параметров | |||
RD #4 | второго | |||
WR R2 | массива | |||
CALL M | Вызов подпрограммы | |||
WR R7 | Сохранение результата | |||
RD #110 | Загрузка | |||
WR Rl | параметров | |||
RD #9 | третьего | |||
WR R2 | массива | |||
CALL M | Вызов подпрограммы | |||
ADD R7 | Вычисление | |||
ADD R6 | среднего | |||
DIV #3 | арифметического | |||
OUT | Вывод результата | |||
Подпрограмма MAX | ||||
HLT | Стоп | |||
M: RD @R1 | Загрузка | |||
WR R3 | первого элемента в R3 | |||
L2: RD @R1+ | Чтение элемента и модификация адреса | |||
WR R4 | Сравнение | |||
SUB R3 | и замена, | |||
JS LI | если R3 < R4 | |||
MOV R3,R4 | ||||
LI: JRNZ R2,L2 | Цикл | |||
RD R3 | Чтение результата в Асе | |||
RET | Возврат | |||
Задание
Составить и отладить программу учебной ЭВМ для решения следующей задачи. Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода среднее арифметическое параметров этих массивов. Параметры определяются заданием к предыдущей лабораторной работе (см. табл. 9.8), причем соответствие между номерами вариантов заданий 3 и 4 устанавливается по табл. 9.10.
Номер варианта задания 4 | ||||||||||||||
Номер строки в табл. 9.9 |
Содержание отчета
Формулировка варианта задания.
Граф-схема алгоритма основной программы.
Граф-схема алгоритма подпрограммы.
Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант).
Тексты программы и подпрограммы.
Значения исходных данных и результата выполнения программы.
Контрольные вопросы
Как работает команда mov R3, R7?
Какие действия выполняет процессор при реализации команды call?
Как поведет себя программа примера 4, если в ней вместо команд call m использовать команды jmp m?
После начальной установки процессора (сигнал Сброс) указатель стека SP устанавливается в 000. По какому адресу будет производиться запись в стек первый раз, если не загружать SP командой wrsp?
Как, используя механизмы постинкрементной и преддекрементной адресации, организовать дополнительный стек в произвольной области памяти, не связанный с SP?
Практическая работа 11-12 ПРИНЦИПЫ РАБОТЫ КЭШ-ПАМЯТИ
ЦЕЛЬ РАБОТЫ
Приобретение навыков работы с кэш-памятью.
Проверить работу различных алгоритмов замещения при различных режимах записи в кэш-память.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
- Прочитать методические указания
- Разобрать приведенные примеры
- Выполнить задания к работе
- Ответить на контрольные вопросы
Оформите отчет, который должен содержать:
- титульный лист (см. приложение);
постановку задачи;
формулировка варианта задания.
размещение данных в ОЗУ.
программа
результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.
Порядок выполнения работы
Ввести в модель учебной ЭВМ текст своего варианта программы (см. табл. 2), ассемблировать его и сохранить на диске в виде txt-файла.
Установить параметры кэш-памяти размером 4 ячейки, выбрать режим записи и алгоритм замещения в соответствии с первой строкой своего варианта из табл. 9.13.
В шаговом режиме выполнить программу, фиксируя после каждого шага состояние кэш-памяти.
Для одной из команд записи (WR) перейти в режим Такти отметить, в каких микрокомандах происходит изменение кэш-памяти.
Для кэш-памяти размером 8 ячеек установить параметры в соответствии со второй строкой своего варианта из табл. 9.13 и выполнить программу в шаговом режиме еще раз, фиксируя последовательность номеров замещаемых ячеек кэш-памяти.
Напомним, что программа определяется как последовательность команд, выполнение которых позволит получить некий результат.
Содержание отчета
Вариант задания — текст программы и режимы кэш-памяти.
Последовательность состояний кэш-памяти размером 4 ячейки при однократном выполнении программы (команды 1—7).
Последовательность микрокоманд при выполнении команды wr с отметкой тех микрокоманд, в которых возможна модификация кэш-памяти.
Для варианта кэш-памяти размером 8 ячеек — последовательность номеров замещаемых ячеек кэш-памяти для второго варианта параметров кэш памяти при двукратном выполнении программы (команды 1—7).
Контрольные вопросы
В чем смысл включения кэш-памяти в состав ЭВМ?
Как работает кэш-память в режиме обратной записи? Сквозной записи?
Как зависит эффективность работы ЭВМ от размера кэш-памяти?
В какую ячейку кэш-памяти будет помещаться очередное слово, если свободные ячейки отсутствуют?
Какие алгоритмы замещения ячеек кэш-памяти вам известны?
Тема: АЛГОРИТМЫ ЗАМЕЩЕНИЯ СТРОК КЭШ-ПАМЯТИ
Цель: изучение влияния параметров кэш-памяти и выбранного алгоритма замещения на эффективность работы системы. Эффективность в данном случае оценивается числом кэш-попаданий по отношению к общему числу обращений к памяти. Учитывая разницу в алгоритмах в режимах сквозной и обратной записи, эффективность использования кэш-памяти вычисляется выражениям (8.2) и (8.3) соответственно для сквозной и обратной записи.
Очевидно, эффективность работы системы с кэш-памятью будет зависеть не только от параметров кэш-памяти и выбранного алгоритма замещения, но и от класса решаемой задачи. Так, линейные программы должны хорошо работать с алгоритмами замещения типа очередь, а программы с большим числом условных переходов, зависящих от случайных входных данных, могут давать неплохие результаты с алгоритмами случайного замещения. Можно предположить, что программы, имеющие большое число повторяющихся участков (часто вызываемых подпрограмм и/или циклов) при прочих равных условиях обеспечат более высокую эффективность применения кэш-памяти чем линейные программы. И, разумеется, на эффективность напрямую должен влиять размер кэш-памяти.
Для проверки высказанных выше предположений выполняется настоящая лабораторная работа.
Задание
В данной лабораторной работе все варианты задания одинаковы: исследовать эффективность работы кэш-памяти при выполнении двух разнотипных программ, написанных и отлаженных вами при выполнении лабораторных работ № 2 и 4.
Совет_______________________________________________________
При очередном запуске программы не забывайте устанавливать процессор модели в начальное состояние, нажимая кнопку R в окне Процессор!
Повторить все действия, описанные в пп. 1—7 для программы из лабораторной работы № 4, заполняя вторую таблицу по форме табл. 9.15
Содержание отчета
Две таблицы по форме табл. 9.15 с результатами моделирования программ из лабораторных работ № 2 и 4 при разных режимах работы кэш-памяти.
Выводы, объясняющие полученные результаты.
Контрольные вопросы
Как работает алгоритм замещения очередь при установленном флажке С учетом бита записи в диалоговом окне Параметры кэш-памяти?
Какой алгоритм замещения будет наиболее эффективным в случае применения кэш-памяти большого объема (в кэш-память целиком помещается программа)?
Как скажется на эффективности алгоритмов замещения учет значения бита записи W при работе кэш-памяти в режиме обратной записи? Сквозной записи?
Для каких целей в структуру ячейки кэш-памяти включен бит использования. Как устанавливается и сбрасывается этот бит?
Таблица 3. Результаты эксперимента
Способ | Сквозная запись | |||||
Алгоритм | Случайное замещение | Очередь | Бит U | |||
Размер | безАУ | cW | 6e3\V | cW | без\У | cW |
* | ||||||
Практическая работа №14-15FASM (Flat Assembler).
ЦЕЛЬ РАБОТЫ
Приобретение навыков работы в FASM (Ассемблер)
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Прочитать задания к работе
Оформите отчет, который должен содержать:
-титульный лист (см. приложение);
-постановку задачи;
- описание пошагового исполнения;
- отчет о полученном результате
Msg MSG
section '.code' code readable executable
start:
Invoke GetModuleHandle,0
mov [wc.hInstance],eax
Invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
Invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
Invoke RegisterClass,wc
Cmp eax,0
Je error
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,128,128,256,192,0,0,[wc.hInstance],0
Cmp eax,0
Je error
msg_loop:
Invoke GetMessage,msg,0,0,0
Cmp eax,0
Je end_loop
Invoke TranslateMessage,msg
Invoke DispatchMessage,msg
Jmp msg_loop
error:
invoke MessageBox,0,_error,0,MB_ICONERROR+MB_OK
end_loop:
invoke ExitProcess,[msg.wParam]
Proc WindowProc hwnd,wmsg,wparam,lparam
Push ebx esi edi
cmp [wmsg],WM_DESTROY
Je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
Jmp .finish
.wmdestroy:
Invoke PostQuitMessage,0
Mov eax,0
.finish:
Pop edi esi ebx
Ret
Endp
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'
Столько кода, и ничего особенного в результате. В MessageBox хотя бы присутствовала кнопка ОК, а тут — пустое окно. Не волнуйтесь: как только мы разберемся с устройством простейшего окна, мы сразу же перейдем к навешиванию на него прочих элементов. Используя MessageBox, мы были ужасно ограничены набором стандартных параметров этой функции. Кроме того, программа не могла продолжать исполняться до тех пор, пока пользователь не прореагирует нажатием кнопки в окошке или его закрытием. В случае использования окна программа может исполняться, параллельно реагируя на действия пользователя. Сразу будет нелегко понять алгоритм работы окна, но, как только вы его поймете, все остальное пойдет намного легче. Приступаем к разбору полетов. В секции данных после объявления трех текстовых строк (класс окна, его заголовок, сообщение об ошибке) объявляются две структуры данных. Первая — WNDCLASS — структура класса окна. Она описана в файле FASM\INCLUDE\EQUATES\USER32.INC (смотрим файл прямо в компиляторе или через блокнот — кому как удобно) и содержит 10 атрибутов класса окна: style — стиль окна; lpfnWndProc — указатель на процедуру обработки сообщений, посланных окну; cbClsExtra — количество дополнительных байт в памяти для данной структуры; cbWndExtra — количество дополнительных байт в памяти для данных, присоединенных к окну; hInstance — идентификатор приложения, создавшего окно; hIcon — идентификатор иконки окна; hCursor — идентификатор курсора окна; hbrBackground — цвет фона окна; lpszMenuName — указатель на имя меню окна; указатель на имя класса. Вторая — MSG — структура сообщения. Описана там же, где и первая. Состоит из шести элементов: hwnd — идентификатор окна — получателя сообщения; message — сообщение; wParam — дополнительная информация о сообщении; lParam — дополнительная информация о сообщении; time — время отправки сообщения; pt — координаты курсора на время отправки сообщения. Последний элемент, кстати, тоже является структурой, которая описана в том же файле. Это наглядный пример вложенной структуры. Не старайтесь все сразу запомнить — просто примите к сведению. После объявления структур wc будет считаться указателем на первый байт структуры данных, созданной в соответствии с шаблоном WNDCLASS, а msg — указателем на MSG. Элементам структуры wc присваиваются соответствующие значения, разделенные запятыми (в основном пока что ноли). Значения элементов структуры msg считаются сейчас неопределенными — хотя на практике они будут иметь нулевые значения, правильно считать их значения неопределенными. В тексте программы можно обращаться к отдельным элементам структуры, например, wc.hCursor или wc.hIcon, хотя в оперативной памяти все данные будут просто идти друг за другом безо всяких пометок. Элементы структур для 32-битных версий windows обычно имеют размер 32 бита — это 4 байта или двойное слово (dword). Поэтому в описании структуры написано dd (data in dwords). Следовательно, мы могли бы заменить, например, wc.hInstance на wc+16, потому что элементы структуры wc в адресном пространстве будут выглядеть примерно так:
Элемент Адрес
wc.style wc+0
wc.lpfnWndProc wc+4
wc.cbClsExtra wc+8
wc.cbWndExtra wc+12
wc.hInstance wc+16
wc.hIcon wc+20
wc.hCursor wc+24
wc.hbrBackground wc+28
wc.lpszMenuName wc+32
wc.lpszClassName wc+36
Можно было бы сейчас не вдаваться в эти подробности, но лучше, если вы сразу получите правильное представление о размещении данных в памяти. Теперь попробуем разобраться с исполняемым кодом (section '.code'). Функция GetModuleHandle возвращает в eax идентификатор исполняемого модуля. Она имеет всего один параметр — указатель на строку — имя модуля (exe или dll). Если параметр равен нулю, то функция возвращает идентификатор вызвавшего функцию модуля, то есть нашей программы. Этот идентификатор нужен нам для заполнения элемента wc.hInstance, поэтому следующей командой мы сразу помещаем в этот элемент содержимое eax. LoadIcon загружает указанную иконку из ресурсов исполняемого файла. Первый параметр — идентификатор исполняемого файла или ноль для загрузки стандартной иконки. Второй параметр — строка — имя иконки из ресурсов либо идентификатор стандартной иконки, если первый параметр ноль. В нашем случае иконка стандартная. IDI_APPLICATION — это константа — ее и идентификаторы других стандартных иконок вы легко отыщете все в том же EQUATES\USER32.INC. Возвращаемое значение — идентификатор загруженной иконки, который мы тут же помещаем в wc.hIcon. LoadCursor работает по аналогии. Идентификаторы стандартных курсоров вы найдете чуть выше идентификаторов иконок. Теперь, когда все необходимые данные структуры wc находятся на своих местах, вызывается функция RegisterClass. Единственный параметр этой функции — указатель на структуру, содержащую описание класса окна. Если класс был успешно зарегистрирован, возвращаемое значение будет отлично от нуля. Если по каким-либо причинам не удалось зарегистрировать класс, то в eax вернется ноль. Исходя из этого, мы сравниваем eax и 0 (cmp) и в случае равенства прыгаем на метку ошибки (je error). Если не равно нулю — значит, все в порядке, и мы переходим к созданию окна. Функция CreateWindowEx создает окно. Параметры соответственно: расширенный стиль окна; указатель на зарегистрированное имя класса; указатель на имя окна; стандартный стиль окна; X координата левого верхнего угла окна; Y координата левого верхнего угла окна; ширина окна; высота окна; идентификатор родительского окна или окна-владельца; идентификатор меню или дочернего окна; идентификатор исполняемого модуля, с которым связано окно; указатель на значение, которое передается окну через структуру CREATESTRUCT в параметре lParam сообщения WM_CREATE. Возвращаемое значение — идентификатор созданного окна. В случае ошибки возвращается ноль. Названия расширенных стилей окна вы можете найти в файле EQUATES\USER32.INC в группе Extended Window Styles, названия стандартных стилей находятся чуть выше в группах Window Styles и Common Window Styles.
Далее следует цикл msg_loop. Этот цикл будет повторяться до тех пор, пока окно не будет закрыто. Функция GetMessage получает сообщение из очереди сообщений приложения. Если сообщения отсутствуют, функция ожидает их, и цикл приостанавливается до появления нового сообщения. Сообщения посылаются окну операционной системой, когда с окном происходит какое-либо действие — например, когда окно перемещается, изменяется его размер или даже когда курсор мыши просто движется над областью окна. Также окну могут передаваться сообщения от других процессов. Параметры функции следующие: указатель на структуру, в которой разместятся элементы сообщения; идентификатор окна — получателя сообщения: если ноль, то сообщения принимаются для любого окна данного приложения; минимальное значение сообщения; максимальное значение сообщения. Последние два параметра исполняют роль фильтра сообщений. Так как все сообщения являются целочисленными значениями, можно установить фильтрацию типа "от… и до…" Если максимальное и минимальное значения равняются нулю, фильтрация не выполняется, и принимаются все сообщения без исключения. Если функция получает сообщение WM_QUIT (выход), то возвращает ноль. В других случаях eax не будет равен нулю. Следовательно, если eax равен нулю, мы выходим из цикла (je end_loop), иначе цикл продолжается. TranslateMessage переводит комбинации wm_KeyDown/Up в wm_Char или wm_DeadChar, а комбинации wm_SysKeyDown/Up — в wm_SysChar или wm_SysDeadChar — и отправляет переведенное сообщение снова в очередь. Таким образом в процедуру обработки сообщений поступят и виртуальные клавиши и их символьные значения. DispatchMessage передает сообщения процедуре обработки сообщений (WindowProc). В газетной статье нет возможности привести список всех сообщений и их описание, поэтому я рекомендую вам скачать англоязычную справку по API-функциям размером около 22 Мб: сайт . К сожалению, нормального аналогичного справочника на русском языке я вам посоветовать не могу. Так уж сложилось, что не в моде у программистов русский язык.
Процедура обработки сообщений WindowProc вызывается каждый раз при получении окном нового сообщения и передаче его через DispatchMessage. Синтаксис записи этой и других процедур предельно прост: макроинструкция proc, имя процедуры и ее параметры через запятую, которые по умолчанию считаются 32-битными (4 байта каждый). Возврат из процедуры осуществляет команда ret. Каждая процедура должна завершаться инструкцией endp, которая указывает компилятору, где заканчивается код данной процедуры и начинается следующий фрагмент кода. Команда push помещает значение указанного регистра в стек, а команда pop извлекает последнее значение из стека в указанный регистр. Стек — это специально выделенная область памяти для передачи или сохранения данных. Его можно представить, например, как вертикальную штангу тренажера, на которую можно одевать по одному грузу и снимать тоже по одному. Команда push будто указывает, откуда взять груз, а команда pop сообщает, куда поместить груз, снятый со штанги. Такую аналогию я привел для того, чтобы вы уже таки уяснили, что, если мы хотим сохранить содержимое нескольких регистров в стек, а потом вернуть эти значения в регистры, то нам необходимо сохранять в одном порядке, а извлекать — в обратном. Это важно запомнить и не путать: если сохраняем push eax ebx ecx — извлекаем pop ecx ebx eax. А сохраняем мы содержимое этих регистров, чтобы предотвратить потерю данных: функция DefWindowProc спокойно может затереть содержимое этих регистров. Так как окно у нас простейшее, и на нем нет никаких кнопок, кроме крестика для закрытия, единственное сообщение, которое мы должны обработать — это WM_DESTROY, которое будет послано окну перед его удалением. Стало быть, если сообщение равно WM_DESTROY, мы прыгаем на метку .wmdestroy, где будет вызвана функция PostQuitMessage, параметром которой является код завершения. Ноль означает, что программа самостоятельно завершает работу. Эта функция посылает нашему процессу сообщение WM_QUIT, после обработки которого функция GetMessage вернет ноль, и цикл обработки сообщений прервется переходом на end_loop — выход из программы. Если сообщение не WM_DESTROY, то выполняется следующая функция — DefWindowProc. Эта функция обычно вызывается после того, как обработаны все предусмотренные нами сообщения (в нашем случае предусмотрено только одно, но их ведь может быть и сотня), для того, чтобы операционная система своими средствами произвела стандартную обработку сообщения, которое получило наше окно. Параметры функции: идентификатор окна — получателя сообщения; сообщение; дополнительная информация о сообщении; дополнительная информация о сообщении. Что ж, теперь мы можем навесить на наше окно кнопку. Для этого добавим в секцию данных (section '.data') ее класс и имя, а заголовок главного окна немного подправим:
_title db 'НеПустое Окно',0
_classb db 'BUTTON',0
_textb db 'КНОПКА',0
В секцию кода добавим обработку сообщения WM_CREATE, которое приходит окну один раз при его создании, чтобы при создании главного окна создавать дочерние окна. Кнопка — это окно стандартного класса BUTTON, поэтому регистрировать этот класс нам не понадобится. Также добавим обработку сообщения WM_COMMAND, которое приходит окну, когда пользователь выбирает пункт меню или совершает действие с другим дочерним элементом окна (в нашем случае — нажатие на кнопку):
proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
cmp [wmsg],WM_CREATE
je .wmcreate
cmp [wmsg],WM_COMMAND
je .wmcommand
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmcreate:
invoke CreateWindowEx,0,_classb,_textb,WS_VISIBLE+WS_CHILD+BS_PUSHBUTTON, 10,10,100,50,[hwnd],1001,[wc.hInstance],NULL
jmp .finish
.wmcommand:
cmp [wparam],1001
jne .finish
invoke MessageBox,[hwnd],_textb,_title,0
jmp .finish
.wmdestroy:
invoke PostQuitMessage,0
mov eax,0
.finish:
pop edi esi ebx
ret
endp
Теперь при создании окна выполнятся команды после метки .wmcreate, и на главном окне будет создана кнопка с идентификатором 1001. При нажатии на эту кнопку окно получает сообщение WM_COMMAND, а wparam сообщения будет содержать в старших двух байтах BN_CLICKED (кликнута кнопка), а в младших двух байтах — идентификатор кнопки (1001). Так как константа BN_CLICKED равна нулю (убеждаемся в этом в EQUATES\USER32.INC), можно не учитывать ее и просто сравнить wparam с 1001, чтобы убедиться, что была нажата наша кнопка. Если не равно — значит, не наша или не нажата — jne .finish . Иначе — показываем мессадж-бокс. По аналогии можете самостоятельно добавить еще пару кнопок, только не забывайте изменять координаты их местоположения, иначе они будут накладываться друг на друга, и вы увидите лишь одну из них. Поэкспериментируйте со стилями и другими параметрами. К следующему занятию постарайтесь четко усвоить принципы создания и работы простых окон, чтобы мы смело могли двигаться дальше.
format PE GUI 4.0
include '%fasminc%/win32ax.inc'
;задание: X=z^3-t^3 Если результат вычитания получится /
;отрицательный, то выдать на экран кроме полученного /
;результата сообщение: «Результат отрицательный».
.data
formatd db "%d",0 ;output format DEC
result db 256 dup(?)
z db 3
t db 2 ;корректируем значение Т
;t db 4 ; перемещением значка комментария
.code
start:
xor eax,eax ; обнуление
mov al,[z] ; в al вводим z
mul [z] ; умножаем на z
mul [z] ; умножаем на z
mov ebx,eax ; смещаем результат в еbx
mov al,[t] ; в al вводим t
mul [t] ; умножаем на t
mul [t] ; умножаем на t
sub ebx,eax ; вычитаем
cmp ebx,eax ; сравниваем ebx,eax
jns metka ; перейти если нет отрицательного знака на метку
;иначе продолжаем выполнение
invoke wsprintf,result,formatd,ebx,eax ;показываем отрицательный результат
invoke MessageBox,0,result,'Результат отрицательный',MB_OK
invoke ExitProcess,0
metka: ;
invoke wsprintf,result,formatd,ebx,eax
invoke MessageBox,0,result,'вычисление z^3-t^3 (z=3,t=3)',MB_OK
invoke ExitProcess,0
.end start
– Конец работы –
Используемые теги: практическая, работа, Представление, информации, ЭВМ, кодирование, счет, количества, информации, обретение, навыков, представления, двоичной, информации, ЭВМ0.165
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Практическая работа №1-3 Представление информации в ЭВМ. Кодирование и подсчет количества информации. Приобретение навыков представления двоичной информации в ЭВМ
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов