Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для rozz
3 / 3 / 0
Регистрация: 02.09.2010
Сообщений: 50

Перестановка переменных.

16.11.2010, 11:42. Показов 3075. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите, пожалуйста, решить данное задание. Дело в том, что оно не только на асме, но и вместе с С++, да и должно быть написано командами сопроцессора.

Написать программу, которая обменивает местами содержимое:
а) 3 переменных - var0 ... var2
б) 4 переменных - var0 ... var3 - попарно (0-3,1-2, 0-2, 1-3, 0-1, 2-3)
только c использованием стека сопроцессора. В отчет занести состояние стека сопроцессора после выполнения каждой операции обмена.


Обязательным является представление решения задачи, подробные комментарии и результатах выполнения программы в дебаггере.
Нужно следить за содержанием соответствующих регистров и использовать команды загрузки, выгрузки и обмена данных.

Пример.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
format pe
jmp start
memo1 dt 10.0
memo2 dt 20.0
memo dt?
start:
        finit
        fld [memo1]; поместить значение переменной memo1 в стек
        fld [memo2]; поместить memo2 в стек
        fxch st1; обменять значение в st (0) и st (1)
        fstp [memo2]; сохранить содержимое вершины стека в memo2
        fstp [memo1]; сохранить содержимое вершины стека в memo1
        lea eax, [memo]; вернуть адрес области памяти в регистре EAX
ret
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2010, 11:42
Ответы с готовыми решениями:

Перестановка байт в двух переменных
Ребят, помогите, пожалуйста))) Неправильно выводит комбинацию чисел "После перестановки". Даны две переменные A и B (long int)...

перестановка значений переменных
Добрый вечер! Помогите пожалуйста с решением задачи. Нужно поменять местами значения трех числовых переменных без буфера. Для 2х переменных...

Перестановка двух переменных x^=y^=x^=y;
Всем известен способ обмена двух чисел без третьей переменной в языке С++ : int x = 352; int y =784; x ^= y ^= x ^= y; В...

8
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
16.11.2010, 11:53
rozz, ну как обменять местами две переменных я представляю, там кстати не нужно ни finit ни fxch
Assembler
1
2
3
4
5
6
7
8
9
.code
start:  fld memo1
    fld memo2
    fstp memo1
    fstp memo2  
mov eax,offset memo1
.data
memo1 dt 10.0
memo2 dt 20.0
но как менять местами три переменные? Циклически что ли? var1->var2 var2->var3 var3->var1?
Assembler
1
2
3
4
5
6
fld memo1
fld memo2
fld memo3
fstp memo1
fstp memo3
fstp memo2
Соответственно четыре попарно 0->3,1->2, 0-2, 1-3, 0-1, 2-3 (Условие явно не верное) ну я думаю суть ты поняла
Assembler
1
2
3
4
5
6
7
8
fld memo0
fld memo1
fld memo2
fld memo3
fstp memo0
fstp memo1
fstp memo2
fstp memo3
1
 Аватар для rozz
3 / 3 / 0
Регистрация: 02.09.2010
Сообщений: 50
16.11.2010, 15:20  [ТС]
А как это все реализовать вместе с С++? У нас должно быть два в одном, сопроцессор + С/C++. + комменты нужны к каждой строке.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
16.11.2010, 15:25
rozz, коменты к командам fld и fstp у тебя в первом посте там только имя переменной меняется, а в С++ вставляется
C++
1
2
3
__asm
{  текст на ассемблере
}
0
 Аватар для rozz
3 / 3 / 0
Регистрация: 02.09.2010
Сообщений: 50
16.11.2010, 16:42  [ТС]
C++
1
2
3
__asm
{  текст на ассемблере
}
И все? Библиотек не надо?

Goodwin98, Пардон, забыла уже, что надо в теги..
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
17.11.2010, 06:06
Цитата Сообщение от rozz Посмотреть сообщение
И все? Библиотек не надо?
не надо
0
 Аватар для rozz
3 / 3 / 0
Регистрация: 02.09.2010
Сообщений: 50
21.11.2010, 20:43  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// task1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
 
int main()
{
__asm
{ .code
start:  fld memo1
        fld memo2
        fld memo3
        fstp memo1
        fstp memo2   
        fstp memo3
mov eax,offset memo1
.data
memo1 dt 10.0
memo2 dt 20.0
memo3 dt 30.0
}
}
Не знаю я как его делать, делаю это в VisualC++2005 Express Edition.

Естественно, у меня ошибка
task1.cpp
e:\documents and settings\user\мои документы\visual studio 2005\projects\task1\task1\task1.cpp(10) : error C2400: inline assembler syntax error in 'opcode'; found 'code'
e:\documents and settings\user\мои документы\visual studio 2005\projects\task1\task1\task1.cpp(18) : error C2400: inline assembler syntax error in 'opcode'; found 'data'
e:\documents and settings\user\мои документы\visual studio 2005\projects\task1\task1\task1.cpp(19) : error C2400: inline assembler syntax error in 'opcode'; found 'dt'
e:\documents and settings\user\мои документы\visual studio 2005\projects\task1\task1\task1.cpp(20) : error C2400: inline assembler syntax error in 'opcode'; found 'dt'
e:\documents and settings\user\мои документы\visual studio 2005\projects\task1\task1\task1.cpp(21) : error C2400: inline assembler syntax error in 'opcode'; found 'dt'
Build log was saved at "file://e:\Documents and Settings\User\Мои документы\Visual Studio 2005\Projects\task1\task1\Debug\BuildLog .htm"
task1 - 5 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
0
69 / 74 / 0
Регистрация: 15.12.2008
Сообщений: 302
21.11.2010, 21:33
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// task1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
 
int main()
{
double memo1=10.0;
double memo2=20.0;
double memo3=30.0;
__asm{
        fld memo1
        fld memo2
        fld memo3
        fstp memo1
        fstp memo2   
        fstp memo3
        mov eax,offset memo1
};
return 0;
}
1
 Аватар для rozz
3 / 3 / 0
Регистрация: 02.09.2010
Сообщений: 50
21.11.2010, 22:32  [ТС]
Цитата Сообщение от airyashov Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// task1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
 
int main()
{
double memo1=10.0;
double memo2=20.0;
double memo3=30.0;
__asm{
        fld memo1
        fld memo2
        fld memo3
        fstp memo1
        fstp memo2   
        fstp memo3
        mov eax,offset memo1
};
return 0;
}
Компилируется теперь, правда в мув еах чего-то ругалось сначало. А вообще тут результат какой-то выводится на экран? А то получается, как бы поменяли, а результата никакого визуального. Или это в дебаггере(OLLYDBG) смотреть?Если да- то файл с каким расширением сохранять? Объясните, пожалуйста. )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2010, 22:32
Помогаю со студенческими работами здесь

перестановка значений переменных A,B,C,D в порядке убывания возрастания,
разобрать программу перестановки значений переменных A,B,C,D в порядке убывания возрастания,т.е. так что бы A>B>C>D.

Перестановка переменных через третью переменную temp
Здравствуйте. Прохожу задачки на курсе самостоятельно. Текст задачи: Создать двумерный массив из 6 строк по 4 столбца в каждой из...

Перестановка значений переменных a,b,c в порядке возрастания ( использовать swap)
так, чтобы a<b<c не уверен в правильности и корректности составления, искал такуюже задачу - не нашел на форуме, если кто найдет дайте...

Исправить в программном коде рандомное задание переменных, на ввод переменных пользователем
Помогите пожалуйста замеить в программе задание чисел рандомно, на задание вручную. Тобиш чтобы был запрос "введите координаты...

Поменять местами значения целых переменных х и у не используя дополнительных переменных
Знаю, что это очень простая задача, но никак не могу сделать, пожалуйста помогите!!! Поменять местами значения целых переменных х и у не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru