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

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

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. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


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

Ученые, внесшие большой вклад в развитие науки биологии Краткая история развития биологии. Чарльз Дарвин (1809 -1882)- основной труд « О происхождении видов путем естественного отбора или Сохранение благоприятствующих пород в борьбе за жизнь»...

Этапы трансляции и их характеристика Трансляция (от лат. translatio — перевод) — процесс синтеза белка из аминокислот на матрице информационной (матричной) РНК (иРНК...

Условия, необходимые для появления жизни История жизни и история Земли неотделимы друг от друга, так как именно в процессах развития нашей планеты как космического тела закладывались определенные физические и химические условия, необходимые для появления и развития жизни...

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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