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

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

МЕТОДИЧЕСКИЕ УКАЗАНИЯ. Реализовать функцию 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 кг мяса...


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

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

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