Студопедия Главная Случайная страница Обратная связь

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

Model flat, stdcall





option casemap: none

Includelib kernel32.lib

Includelib kernel32.inc

Includelib windows.inc

Includelib user32.inc

Includelib user32.lin

Date

z dd “ ”, 13, 10

zsize db ($-z)

nz db “ne chislo null”, 13, 10

nzsize dd ($-nz)

Digit dd 1

cwritten dd?

stdout dd?

Code

start:

Invoke GetStdHandle, STD_OUTPUT_HANDLE

Mov stdout, eax

.IF digit ==0

Invoke WriteConsoleA, stdout, ADDR z, zsize, ADDR cwritten, NULL

ELSE

invoke WriteConsoleA, stdout, ADDR nz, nzsize, ADDR cwritten, \

NULL

ENDIF

Invoke ExitProcess, 0

End start

 

В операциях сравнения могут использоваться и другие условия (аналогичные языку С):

! = не равно;

< меньше;

> больше;

=< меньше или равно;

=> больше или равно.

Следует отметить, что директивы и.ELSE не являются инструкциями процессора. Поэтому компилятор ассемблера преобразут их в настоящие инструкции cmp, jnz, jmp и другие.

Замечание. В ассемблере существует два типа сравнения: для чисел со знаком используются инструкции jg и jl, и для беззнакового сравнения ja и jb.

Высокоуровневая директива.IF по умолчанию используется для сравнения беззнаковых чисел. Для того чтобы сравнивать числа со знаком следует пометь одно из сравниваемых чисел операторами SDword PTR (для двойного слова), Sword PTR (для слова) или Sbyte PTR (для байта).

Например:

.IF SDWORD PTR digit> 0

При ассемблировании использованная в примере директива преобразуется в инструкцию jle (если меньше или равно – перейти).

Ниже приведен пример использования высокоуровневых директив. Проанализировать массив данных из 16 элементов. Подсчитать и вывести на экран количество элементов, которые по значению находятся в середине диапазона от 32 до 128.

 

Текст программы:

 

 

.686; директива определения типа микропроцессора

.model flat, stdcall; задание линейной модели памяти

option casemap: none; отличие малых и больших букв

Include windows.inc

Include kernel32.inc

Include fpu.inc

Include user32.inc

Include msvcrt.inc

Includelib user32.lib

Includelib kernel32.lib

Includelib msvcrt.lib

Includelib fpu.lib

.data; директиваопределения данныx

_c dd 10; число элементов массива

Sum dd 0

op1 dd 32; дапазоны вводимых в массив чисел

op2 dd 128; дапазоны вводимых в массив чисел

frmt db " %d", 0

buf db 30 dup(?)

stdout DWORD?

stdin DWORD?

cRead dd?

temp dd?

Mas1 dd 41 dup(0)

st1 db " Vvesty masiv: "

st2 db " Вывод числа элементов массива в диапазоне (32, 128)! ", 0

St3 db 10 dup(0)

ifmt db " количество = %d", 0

.code; директива начала кода программы

_start:

lea esi, mas1; загрузка адреса начала массива

Mov ecx, _c

m1:

Mov ebx, ecx

Invoke GetStdHandle, STD_OUTPUT_HANDLE

Mov stdout, eax

Invoke GetStdHandle, STD_INPUT_HANDLE







Дата добавления: 2014-11-10; просмотров: 678. Нарушение авторских прав; Мы поможем в написании вашей работы!




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

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

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

Studopedia.info - Студопедия - 2014-2025 год . (0.013 сек.) русская версия | украинская версия