Читайте также: |
|
Программа складывает два числа, и проверяет результат. Если сумма равна 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. Сумма всех элементов массива |