Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

МЕТОДИЧЕСКИЕ УКАЗАНИЯ. Реализовать функцию Sum = х + у для данных типа integer





Реализовать функцию Sum = х + у для данных типа integer.

Это можно сделать на чистом Паскале — см. вариант 1, с применением встроенного Ассемблера (см. варианты 2 и 3), а также с помощью ассемблерной функции — вариант 4. Варианты 3 и 4 используют специальную переменную Паскаля @Result для возврата из функции значения. Вариант 4 — самый близкий вариант к чистому Ассемблеру. Именно его рекомендуется использовать при отладке тем, кто изучает Ассемблер.

Исходный текстпрограммы AsmlnPa& pas

ProgramAsmlnPas;

{

Sum = x + у для данных типа integer. Входные данные и результат на ДОПУСТИМЫЙ диапазон

!!!!!!!!!!!! НЕ ПРОВЕРЯЮТСЯ!!!!!!!!!!!!

}

Var

x.y.s: Integer;

{Вариант 1 — ПАСКАЛЬ} Function Sum1 (x, y: Integer): Integer; Begin

Sum1: = x+yEnd;

{Вариант 2 — Встроенный Ассемблер — передача параметров по ЗНАЧЕНИЮ}

Function Sum2 (x, y: lnteger): lnteger; Begin ASM

mov ax, x add ax.y mov @Result, ax END

End;

{Вариант 3 — ВстроенныйАссемблер — передачапараметровпоССЫЛКЕ} Function Sum3 (Var x, y: lnteger): lnteger; Begin ASM

lesbx.x

{КОСВЕННАЯ адресация — берем значение по адресу}

mov ax, es: [bx]

les bx.y

addax, es: [bx]

mov @Result, ax END End;

{Вариант 4 Ассемблернаяфункция}

Function Sum4 (x, y: lnteger): lnteger;

ASSEMBLER;

ASM

mov axtx

add ax, y

End;

begin

WritelnfВычислить: Sum = x + удляданныхтипаInteger; ");

Write ('Введите значение х ');

Readln(x);

Write ('Введите значение у ');

Readln(y);

s: = Sum1(x, y);

writeln ('ПАСКАЛЬ: Sum = \ х, 1 + \ у, 1 = \s); s: = 0; {для ЧИСТОТЫэксперимента}

s: = Sum2(x, y);

writeln (' Встроенный Ассемблер');

writeln (— передача параметров по ЗНАЧЕНИЮ: Sum =, х, +, у, =, s); s: = 0;

s: = Sum3(x, y);

writeln (' — передача параметров по ССЫЛКЕ: Sum =, х, +, y, =, s); s: = 0;

s: = Sum4(x, y);

writeln ('Ассемблернаяфункция: Sum = ', x, ' + ', y, ' = \s);

writeln ('Нажмителюбуюклавишу ');

Readlnend.

Ассемблер, встроенный в программу на языке C/C++

Поскольку язык С++ и компиляторы, его поддерживающие, продолжают развивать­ся, команды, которые поддерживает встроенный Ассемблер, существенно зависят от вер­сии компилятора и от его разработчиков.

ИнтегрированнаясредапрограммированияMicrosoftVisualС++

Здесь необходимо учитывать, что компилятор VC++ является 32-разрядным. Поэтому, чтобы СОХРАНИТЬ исходную постановку задачи, наш пример 6.1 немного видоизменит­ся:

1)описания данных типа int нужно ВСЮДУ заменить на тип shortint;

2)оператор asm должен быть с ДВУМЯ символами подчерка asm.

Исходныйтекстпрограммы 1срр

//1.срр: Defines the entry point for the console application.

//

include " stdafx.h"

#include " iostream.h"

#include " typeinfo.h"

short int funcCi(short int x) {

return x/3; }

short int funcCu (unsigned short int x) {

return x/3; }

short int funcAsml (short int x)
{ asm

{mov ax, x cwd







Дата добавления: 2014-11-10; просмотров: 638. Нарушение авторских прав; Мы поможем в написании вашей работы!




Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

Факторы, влияющие на степень электролитической диссоциации Степень диссоциации зависит от природы электролита и растворителя, концентрации раствора, температуры, присутствия одноименного иона и других факторов...

Studopedia.info - Студопедия - 2014-2025 год . (0.013 сек.) русская версия | украинская версия