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

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

Войти
Регистрация
Восстановить пароль
 
feanoris
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 50
#1

Вставка ассемблерного кода в С++ для очистки экрана - C++

06.12.2012, 22:57. Просмотров 539. Ответов 6
Метки нет (Все метки)

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 <conio.h>
#include "iostream"
#include <fstream>
#include "windows.h"
#include <stdlib.h>
#include <cstdlib>
#include <string>
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
   double x=5;
   double y=6;
   cout<<x;
   const char* command = "cls"; 
   _asm 
   { 
         push command 
         call system 
   }
   cout<<y;
     return 0;
}
Visual studio 12 выдает ошибку: " Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention." Подскажите, как исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вставка ассемблерного кода в С++ для очистки экрана (C++):

Как реализовать вставку ассемблерного кода в код с++ для очистки экрана? - C++
Как реализовать вставку ассемблерного кода в код с++ для очистки экрана (аналог system(&quot;cls&quot;), только в виде вставки _ass {}?? ps работаю в...

Вставка ассемблерного модуля в С++ проект - C++
Понимаю,что данный вопрос не раз уже поднимался на форуме,но даже после прочтения некоторых тем и поиска в гугле,всё равно доходит не...

Запуск ассемблерного кода на выполнение из main() - C++
Добрый день. Подскажите, если есть готовый файл на ассемблерном коде, то как его можно запустить на выполнение из C++? Взаимодействовать...

Нужно осуществить инжект ассемблерного кода в процесс - C++
В процессе по определённому адресу нужно заменить инструкцию. Как указать на адрес? Тоесть мне нужно заNOPать инструкцию. НО я не знаю...

Счетчик в консольном приложении без очистки экрана - C++
Помогите создать счетчик в консольном приложении без system (&quot;cls&quot;). Нужно чтобы не очищался весь экран и отчет был с 03:00 до 00:00, с...

Функция очистки экрана приводит к выборочному крешу программы - C++
Вот программа : #include &quot;classPat.h&quot; #include &lt;fstream&gt; #include &lt;stdlib.h&gt; int main () { setlocale (LC_ALL,...

6
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.12.2012, 23:00 #2
а
C++
1
system("CLS");
не проще написать?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
06.12.2012, 23:05 #3
а если уж очень асма хочется, то написать
Цитата Сообщение от SeregaC++ Посмотреть сообщение
C++
1
system("CLS");
А затем посмотреть дизассемблированный код при отладке.
0
feanoris
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 50
06.12.2012, 23:25  [ТС] #4
Цитата Сообщение от SeregaC++ Посмотреть сообщение
а
C++
1
system("CLS");
не проще написать?
Читать тему умеем? мне не нужно проще, мне нужно решить данный вопрос.
0
feanoris
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 50
06.12.2012, 23:32  [ТС] #5
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 <conio.h>
#include "iostream"
#include <fstream>
#include "windows.h"
#include <stdlib.h>
#include <cstdlib>
#include <string>
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
   double x=5;
   double y=6;
   cout<<x;
   const char* command = "cls"; 
   _asm 
   { 
         push command 
         call system 
   }
   cout<<y;
     return 0;
}
Visual studio 12 выдает ошибку: " Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention." Подскажите, как исправить?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
07.12.2012, 00:08 #6
Цитата Сообщение от feanoris Посмотреть сообщение
Читать тему умеем? мне не нужно проще, мне нужно решить данный вопрос.
Эй, что за наезды, ребята? Попробуй так. Написал, посмотрев дизассемблированный вызов system("pause")
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdlib.h>
#include <stdio.h>
int main()
{
 
    char* command1="CLS";
    char* command2="pause";
    printf("Hello World\n");
     _asm 
     { 
           mov         esi,esp 
           push        command1;
           call        dword ptr [system]
           add         esp,4
           mov         esi,esp 
           push        command2;
           call        dword ptr [system]
           add         esp,4
   }     
return 0;
}
Добавлено через 4 минуты
Причина твоей ошибки: аргументы в стек надо не только запихивать командой push, но и вытаскивать из стека после вызова командой pop либо увеличением esp до прежней величины

Добавлено через 16 минут
ну куда ты опять ушёл???
0
skaa
Хочу в Исландию
1029 / 828 / 75
Регистрация: 10.11.2010
Сообщений: 1,626
07.12.2012, 00:53 #7
У меня вот так работает:
C++
1
2
3
4
5
6
7
8
    const char command[] = "cls"; 
    _asm 
    { 
    lea eax,command[0]
    push    eax
    call    dword ptr system
    pop eax
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2012, 00:53
Привет! Вот еще темы с ответами:

Программа для очистки диска - C++
Нужна простенькая программка для очистки кэша, временных файлов и т.п. Может есть код для программки? чтобы разобраться, не очень...

Функции для очистки буфера COM порта? - C++
Существют ли функции для очистки буфера COM порта? Столкнулся с проблемой: только что открытый порт набит всяким мусором... Заранее...

Функции для очистки содержимого файла - C++
Есть какие нибудь функции для очистки содержимого файла???ну или для его удаления хотя бы?Подскажите пжл...

вставка кода на ассемблере - C++
РЕБЯЯЯЯЯЯТ:(Может кто-нибудь помочь?:( Необходимо,написать программу на с++ с вставкой кода на ассемблере.. в одномерном массиве,...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
07.12.2012, 00:53
Ответ Создать тему
Опции темы

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