Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
zlodeyxgm
3 / 3 / 4
Регистрация: 08.09.2015
Сообщений: 71
1

ASM Вставка в С++

03.12.2015, 20:42. Просмотров 269. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Затаился такой вот вопрос: как работать с call и ret в вставки asm на С++?

Написал простенькую программу, которая высчитывает максимальное число из двух операндов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "stdafx.h" //стандартная библиотека студии
#include <iostream> //библиотека ввода\вывода
using namespace std; 
 
int main()
{
setlocale(LC_ALL, "Russian");//Русс язык
int a,b,y=0;//переменные целого типа
cout<<"Введите А В: ";//вывод текста на экран
cin>>a>>b;//ввод данных
__asm
{//вставка асм   регистр eax=0 (p0)  ebx=1 (p1)
mov eax,[a];//р0=А
mov ebx,[b];//р1=В
call MAX;
mov [y],eax;//сохранить в Y р0
 
MAX:CMP eax,ebx;//р0-р1
JA romka;//r0>r1
XCHG eax,ebx;//поменять значение регистров местами
romka:ret;
}
cout<<"Y="<<y<<endl;//Вывод ответа на экран
system("pause");//пауза консоли
return 0;
}
Читал много информации и понял, что call сохраняет адрес перехода в стек, но я не использую здесь стек, так почему возврат ret работает некорректно?

Тест программы:
Введите А В: 2 5
Введите А В:

Вот такое выводит консоль.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2015, 20:42
Ответы с готовыми решениями:

Asm вставка
Пишу в первый раз в жизни на ассемблере если что: После ввода значений переменных vicual c++ 2008...

Вычисление выражения (ASM вставка в С++)
Знающие что не так в asm вставке??? вроде работает, ввожу значение переменных и ответ всегда...

Сумма элементов матрицы (asm вставка в C)
Добрый день, возникла следующая проблема: Пишу код на Microsoft Visual C++ 2010, Express,...

Получить 3 разряд числа, asm вставка в С++
В цикле для команды 4 реализуйте ввод числа и вывод его третьего двоичного разряда. Для выполнения...

Реализуйте логическую арифметику, при которой в одном слове хранилось бы 16 логических переменных. Asm вставка на Си
Добрый вечер, прошу помочь с заданием. Реализуйте логическую арифметику, при которой в одном слове...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2015, 20:42

Delphi и ASM - не работает вызов функции Invoke через asm
В Delphi не работает вызов функции Invoke через asm. часть кода: asm invoke...

Выделение мантиссы, вставка asm в C++
Здравствуйте мне необходимо сделать вставку на ассемблере в Сишный код, что бы получить мантиссу...

Сумма двух чисел (asm-вставка)
Не работает код по сложению 2-х простых чисел #include &quot;stdafx.h&quot; int _tmain(int argc, _TCHAR*...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.