Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Программа 2. Сложение двух чисел

Ещё о командах ассемблера. | Главная > Язык ассемблера > Процедуры и функции в ассемблере | Объединение процедур, расположенных в разных модулях | Организация интерфейса с процедурой | Способы передачи аргументов в процедуру | Возврат результата из процедуры | Автор: xrnd | Рубрика: Учебный курс | 17-10-2010 | Распечатать запись | Создание локальных переменных | Пример процедуры с локальными переменными | Команды ENTER и LEAVE |


Читайте также:
  1. I. Программа курса
  2. I. РАБОЧАЯ ПРОГРАММА
  3. I. Теоретико-множественный смысл разности целых неотрицательных чисел.
  4. I. Теоретико-множественный смысл суммы целых неотрицательных чисел.
  5. III. Программа
  6. III. Программа и тестовые примеры
  7. III. Программа и тестовые примеры

Программа складывает два числа, и проверяет результат. Если сумма равна 0 — выводится одно сообщение, если нет — другое.

.486.model flat, stdcalloption casemap: none include /masm32/include/windows.incinclude /masm32/include/user32.incinclude /masm32/include/kernel32.inc includelib /masm32/lib/user32.libincludelib /masm32/lib/kernel32.lib include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32.data.codestart: mov eax, 123mov ebx, -90 add eax, ebx test eax, eax jz zero invoke MessageBox, 0, chr$("В eax не 0!"), chr$("Info"), 0jmp lexit zero:invoke MessageBox, 0, chr$("В eax 0!"), chr$("Info"), 0 lexit:invoke ExitProcess, 0 end start

В данной задаче самое интересное — это работа с метками, командами jz, jmp и test.

test — это операция логического сравнения двух операндов, размерностью байт, слово или двойное слово. В процессе выполняется операцию логического умножения: бит результата равен 1, если соответствующие биты операндов равны 1, в остальных случаях бит результата равен 0. Затем устанавливаются флаги, в том числе флаг ZF (zero flag), который равен 1, если результат логического умножения равен нулю.

Флаг ZF в дальнейшем используется для анализа результата.

jnz — выполняет переход по указанной метке, если не установлен флаг ZF. Данная команда обычно используется с операциями сравнения, которые влияют на состояние флага ZF. Например, test и cmp.

jz — выполняет переход по указанной метке, если установлен флаг ZF. Данная команда обычно используется с операциями сравнения, которые влияют на состояние флага ZF. Например, test и cmp.

jmp — выполняет безусловный переход по указанной метке.


Дата добавления: 2015-07-16; просмотров: 107 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Программа 1. Получение данных из командной строки| Программа 4. Сумма всех элементов массива

mybiblioteka.su - 2015-2024 год. (0.006 сек.)