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

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

МЕТОДИЧЕСКИЕ УКАЗАНИЯ. Реализовать функцию 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. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

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

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

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

ПУНКЦИЯ И КАТЕТЕРИЗАЦИЯ ПОДКЛЮЧИЧНОЙ ВЕНЫ   Пункцию и катетеризацию подключичной вены обычно производит хирург или анестезиолог, иногда — специально обученный терапевт...

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

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