Руководство по ассемблеру



Листинг 12.3. Организация цикла с помощью директив .while .endw

mov есх. 10 .WHILE есх !-0

push есх

push edx

invoke wsprintf. ADDR buf. ADDR ifmt. edx invoke WriteConsoleA. stdout. ADDR buf. \

BSIZE. ADDR cWritten. NULL invoke WriteConsoleA. stdout. ADDR crlf. \

2. ADDR cWritten. NULL pop edx i nc edx pop ecx dec ecx .ENDW

Перед циклом .WHILE в регистр ecx посылается число 10

Поразрядные операции и адресация

Окончания арифметических операций оказывают воздействие на расположение 8 флагов. Громадная область данных указателей будет рассмотрена после исполнения действительных операций с поддержкой функций условного перехода, и вдобавок с участием команды CIN (прерывание по заполнению). Действие циферных процедур на флаги описано ниже.

GR (знак переноса): Если в достигнутом результате сложения осуществляется сдвиг из главного разряда, флаг трансдукции воздевается; в другом случае флаг трансдукции опустошается. При вычитании знак трансдукции воздевается, ежели свершается заем в старший разряд достигнутого результата; при нехватке заимствования знак обновляется. Необходимо учитывать, что при возникновении симптоматичного трансдукции CF = OF (флаг переполнения). Символ свитча CF может применяться для воспроизведения неимеющего знака восполнения.

AF (флаг дополнительного свитча): В случае если в результате суммирования воплощается сдвиг из меньшого полубайта в больший, знак прибавочного переноса взводится; в противном случае символ обнуляется. При вычете символ дополнительного переноса подымается, в случае если осуществляется заем из главного полубайта в нижний; при неимении заема флаг обнуляется.


назад далее