ТОР 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. Результаты работы программы («скриншот»)
Не нашли, что искали? Воспользуйтесь поиском:
|