Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aplake
6 / 6 / 1
Регистрация: 20.02.2011
Сообщений: 43
#1

Asm в Builder - C++

14.11.2011, 20:33. Просмотров 458. Ответов 5
Метки нет (Все метки)

Делаю ассемблеровскую вставку в Builder 6;
в консоле. Проблема в 14 строке
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
int main(int argc, _TCHAR* argv[])
{
  short S, R, Q;
  S = 1;
  R = 0;
 
  _asm {
 
   test R,1; // R=1?
   jz a1
   test S,1; // S=1?
   jz a2
    //  вот в этой строчке надо что бы на экраны выводилась строка Неопределенное состояние.
   jmp exit
   a1: test S,1
   jz exit; // R=0 S=0 состояние хранение
   mov Q,1; // R=0 S=1 установка триггера
   jmp exit
   a2: mov Q,0;// R=1 S=0 сброс триггера
   exit:
   }
   cout << Q << endl;
 
   system ("PAUSE");
    return 0;
Не знаю как это сделать. Есть конечно вариант, но он безнадежно глуп :
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
27
28
int main(int argc, _TCHAR* argv[])
{
  short S, R, Q, F;
  S = 1;
  R = 0;
 
  _asm {
 
   test R,1; // R=1?
   jz a1
   test S,1; // S=1?
   jz a2
   mov F, 1  //  вот в этой строчке надо что бы на экраны выводилась строка Неопределенное состояние.
   jmp exit
   a1: test S,1
   jz exit; // R=0 S=0 состояние хранение
   mov Q,1; // R=0 S=1 установка триггера
   jmp exit
   a2: mov Q,0;// R=1 S=0 сброс триггера
   exit:
   }
   if (F == 1){
     cout << "Неопределенное состояние" << endl ;}
 
   cout << Q << endl;
   
   system ("PAUSE");
    return 0;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 20:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Asm в Builder (C++):

asm в VS - C++
вот такой код не работает. строит нормально, но во время запуска выводит &quot;необр. искл&quot; пытаюсь запустить слип() #include &lt;Windows.h&gt; ...

C++ И ASM - C++
Всем привет. Мне нужно создать функцию на С++, но особенную. Мне нужно, чтобы она была пустая, при void Func(){}, компилятор уже...

Asm + C++ - C++
Помогите на C++ считает нормально , а на asm #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include &lt;iomanip&gt; using namespace std; bool...

c++ asm - C++
_asm {} какие библиотеки нужно подключать , чтобы заставить работать ассемблер на с++ и как правильно записывать всё это дело ...

c++ и ASM - C++
помогите найти ошибку #pragma once #include &lt;stdlib.h&gt; #include &lt;iostream&gt; class bbyte { private: void...

C++ и ASM - C++
Всем привет. Необходимо посчитать уравнение на языке ASM и вывести ответ на языке С++. Вот готовая программа на ASM с выводом на...

5
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
14.11.2011, 23:11 #2
Для __cdecl
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void) {
  const char* msg = "undefined state";
  size_t _size = sizeof(char*);
 
  _asm {
       push msg
       call puts
       add  esp, dword ptr _size
  };
  getchar();
  return 0;
}
0
magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
15.11.2011, 14:01 #3
xAtom, а как процедуру вызывать, если она даже не написана???
И msg, я так понимаю в стеке лежит... Я твой код асма непонял (((
0
LosAngeles
Заблокирован
15.11.2011, 15:55 #4
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
int main()
{
    char str[] = "Undefined state";
    short S, R, Q;
    S = 1;
    R = 0;
    Q = 0;
 
    __asm__ (               "movw %1, %%ax\n\t"
                            "testw $1, %%ax\n\t"
                            "jz a1\n\t"
                            "movw %0, %%ax\n\t"
                            "testw $1, %%ax\n\t"
                            "jz a2\n\t"
 
                            "movl %3, %%ebx\n\t"
                            "pushl %%ebx\n\t"
 
                            "call _printf\n\t"
                            "popl %%ebx\n\t"
 
                            "jmp exit\n\t"
                            "a1:\n\t"
                            "movw %0, %%ax\n\t"
                            "testw $1, %%ax\n\t"
                            "jz exit\n\t"
                            "movw $1, %%ax\n\t"
                            "movw %%ax, %2\n\t"
                            "jmp exit\n\t"
                            "a2: xorw %%ax, %%ax\n\t"
                            "movw %%ax, %2\n\t"
                            "exit:\n\t"
                            :
                            : "r" (S), "r" (R), "r" (Q), "r" (str)
                            : );
 
 
 
 
 
    cout << Q << endl;
 
    //system ("PAUSE");
    return 0;
}
0
magistr011
6 / 6 / 0
Регистрация: 22.10.2011
Сообщений: 164
15.11.2011, 18:39 #5
Цитата Сообщение от LosAngeles Посмотреть сообщение
call _printf
тоже вызываем процедуру, её нет...
на экран судя по всему выведем 0, и программа закроется...
0
LosAngeles
Заблокирован
15.11.2011, 18:51 #6
всё есть, всё выводится. Если изменить S разумеется

Добавлено через 1 минуту
а так то да, вывод моего листинга ноль, потому что в ветку с printf управление вобще не передаётся
0
15.11.2011, 18:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2011, 18:51
Привет! Вот еще темы с ответами:

asm вставка в C++ - C++
#include &lt;iostream&gt; int a = 10; void func( int&amp; aIn ) { __asm { mov aIn, 15 } }

asm вставка в C++ - C++
есть код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; slozh(int* pi1, int...

Вставка asm в С++ - C++
Здравствуйте! Помогите пожалуйста! Задание: Вычислить арифметическое выражение. Требуется написать функцию на языке C++ с вставкой на...

C++ + ASM FASM - C++
Всем привет. Можно ли в с++ коде вызывать функции написанные на FASM синтаксисе? Visual Studio 2012


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

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

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