Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по Ассемблеру гр.32.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
158.72 Кб
Скачать

Работа с integer (word)

var a,b,d1,d2:integer;

a1,b1:integer;

c1:longint;

begin

read(a,b);

asm

a+b

mov ax,a

пересылаем в регистр ax значение переменной а

mov bx,b

пересылаем в регистр bx значение переменной b

add ax,bx

складываем значения регистров ax и bx

mov a1,ax

пересылаем полученный результат в переменную a1

end;

asm

a-b

mov ax,a

пересылаем в регистр ax значение переменной а

mov bx,b

пересылаем в регистр bx значение переменной b

sub ax,bx

вычитаем из значения регистра ax значение регистра bx

mov b1,ax

пересылаем полученный результат в переменную b1

end;

asm

a*b

mov ax,a

пересылаем в регистр ax значение переменной а

Imul b

умножаем результат регистра ax на b (результат записывается в регистры ax, dx)

mov word ptr c1,ax

пересылаем часть результата из регистров ax и dx в переменную c1

mov word ptr c1+2,dx

end;

asm

a/b

mov ax,a

пересылаем в регистр ax значение переменной а

cwd

подготовка к делению

Idiv b

делим результат регистра ax на b

mov d1,ax

пересылаем результат деления из регистра ax в переменную d1

mov d2,dx

пересылаем остаток то деления из регистра dx в переменную d2

end;

writeln(a1,' ',b1,' ',c1)

writeln(d1,' ' ,d2);

end.

Условный переход

Ввести число. Если оно больше 0, то напечатать 1, если равно, то 0, если меньше 0, то -1.

var a,b:integer;

begin

read(a);

asm

cmp a,0

сравниваем переменную а с 0

jl @1

a<0 переход на метку @1

jg @2

a>0 переход на метку @2

mov b,0

пересылаем в переменную b 0

jmp @3

переход на метку @3

@1: mov b, -1

пересылаем в переменную b -1

jmp @3

переход на метку @3

@2: mov b,1

пересылаем в переменную b 1

@3:

метка, если @1 или @2 не выполняются

end;

writeln(b);

end.

Ввести 2 числа word. Если первое больше второго, то напечатать их разность, если меньше, то произведение, если равны, то напеч. число.

var

a,s:WORD;

d:longint;

begin

writeln('Введите два числа: ');

readln(a,s);

asm

mov ax,a

пересылаем в регистр ax значение переменной a

cmp ax,s

сравниваем значение регистра ax с s

jg @bol

a>s переход на метку @bol

je @rav

a=s переход на метку @rav

mul s

a<s => произведение

jmp @vv

переход на метку @vv

@bol:

sub ax,s

a>s => разность

mov dx,0

пересылаем в регистр dx 0

jmp vv

переход на метку @vv

@rav:

mov dx, 0

пересылаем в регистр dx 0

@vv:

mov word ptr d,ax

пересылаем результат из регистров ax и dx в переменную d

mov word ptr d+2,dx

end;

writeln('Результат: ', d);

end.