Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

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

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Система команд процессоров х86




Задание:

Пользуясь ассемблерными вставками в Pascal написать программу вычисления выражения

 

Укрупненное описание алгоритма:

 

1. Ввод исходных данных (чисел А и В)

2. Вычисление первого слагаемого числителя 2a4b

3. Вычисление второго слагаемого числителя 5b3

4. Вычисление числителя

5. Вычисление знаменателя

6. Вычисление результата Y

7. Вывод значения выражения и числа из Y.

 

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

 

Program Prim;

var A, B, Y: integer; {переменные для исходных данных и результата}

begin

write('А, В?:'); read(A, B); {вводим исходные данные}

asm {начало ассемблерной вставки}

 

{вычисляем первое слагаемое числителя}

mov ax, A {помещаем в регистр ax число из А}

imul ax {возводим его в квадрат}

push ax {запоминаем квадрат А в стеке}

imul ax {получаем четвертую степень А}

imul B { четвертую степень А умножаем на В}

mov bx, 2 {и еще на 2}

imul bx

mov si, ax {полученное значение числителя сохраняем в si}

 

{вычисляем второе слагаемое числителя}

mov ax, 5 {помещаем в регистр ax число 5}

imul B {трижды умножаем его на В}

imul B

imul B

 

{вычисляем числитель}

add ax, si {к второму слагаемому добавляем первое}

 

{вычисляем знаменатель}

pop bx {квадрат А извлекаем из стека}

inc bx {увеличиваем его на 1}

 

{вычисляем результат}

cwd {преобразуем 16 – разрядное значение числителя в 32 - разрядное}

idiv bx {делим значение числителя на значение знаменателя}

mov Y, ax {частное помещаем в переменную Y}

end; {конец ассемблерной вставки }

 

{выводим результаты по выражению и ассемблерной вставке}

writeln('Result: ', (2*sqr(sqr(A))*B+5*sqr(B)*B)

div (sqr(A)+1), ', Y = ', Y)

end.

Результаты работы программы («скриншот»)

 

 







Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных