Даны 3 целые числа найти количество отрицательных и положительных - Assembler
Формулировка задачи:
Здраствуйте, не могли бы помочь чайнику.как можно перевести данный код в Ассемблер:
Код в делфи
Var j,i,b,c,a:integer;
begin i:=0;
J:=0;
Writeln('vvedi a=');
Readln(a);
Writeln('vvedi b=');
Readln(b);
Writeln('vvedi c=');
Readln(c);
if a<0 then j:=j+1;
if b<0 then j:=j+1;
if c<0 then j:=j+1;
Writeln('polojitelnie 4isla =', inttostr(i));
Writeln('polojitelnie 4isla =', inttostr(j));
End;
End.Решение задачи: «Даны 3 целые числа найти количество отрицательных и положительных»
textual
Листинг программы
mov i,0 mov j,3 mov eax,a shr eax,31 add i,eax sub j,eax mov eax,b shr eax,31 add i,eax sub j,eax mov eax,c shr eax,31 add i,eax sub j,eax
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- mov i,0 - переменной i присваивается значение 0
- mov j,3 - переменной j присваивается значение 3
- mov eax,a - в регистр eax записывается значение переменной a
- shr eax,31 - значение в регистре eax сдвигается вправо на 31 бит и записывается обратно в регистр eax
- add i,eax - к значению переменной i прибавляется значение из регистра eax
- sub j,eax - значение переменной j вычитается из значения из регистра eax
- mov eax,b - в регистр eax записывается значение переменной b
- shr eax,31 - значение в регистре eax сдвигается вправо на 31 бит и записывается обратно в регистр eax
- add i,eax - к значению переменной i прибавляется значение из регистра eax
- sub j,eax - значение переменной j вычитается из значения из регистра eax
- mov eax,c - в регистр eax записывается значение переменной c
- shr eax,31 - значение в регистре eax сдвигается вправо на 31 бит и записывается обратно в регистр eax
- add i,eax - к значению переменной i прибавляется значение из регистра eax
- sub j,eax - значение переменной j вычитается из значения из регистра eax Получается, что в данном коде происходит подсчет количества бит, которые содержат значения переменных a, b и c. Значение переменной i увеличивается на количество бит, а значение переменной j уменьшается на количество бит.