Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
RazerVG
1 / 1 / 1
Регистрация: 22.03.2012
Сообщений: 60
#1

Вывод введенного сообщения работает только для цифр. Исправить код

26.12.2012, 17:17. Просмотров 473. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main()
{int x;
char* fmt = "%u";
__asm {
 lea eax, x; 
 push eax; 
 push fmt; 
 call scanf; 
 
 push x
 push fmt;
 call printf;
 
}
 
}
при вводе чисел он работает а при вводе букв нет

даже изменение

C++
1
char* fmt = "%s";
не помогает

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 17:17
Ответы с готовыми решениями:

Вывод сообщения на экран: исправить код
Код ASM CSEG segment org 100h start: mov cx, 3 Label_1: mov,ah 9...

Вывод цветного текста, исправить код
Код рабочей программы. Запустите, там четвертой строкой выводится красное &quot;a&quot;,...

Вещественный ввод\вывод: исправить код
Ребят, помогите пожалуйста разобраться почему программа не вводит и не выводит...

Задано число не более, чем из четырех цифр. Вывести его величину по-английски (исправить код)
Задано число не более, чем из четырех цифр. Вывести его величину по-английски...

Процедура работает до команды ret, исправить код
помогите, пожалуйста, найти ошибку. все норм работает до команды ret....

4
Charles Kludge
Клюг
7641 / 3156 / 382
Регистрация: 03.05.2011
Сообщений: 8,382
26.12.2012, 18:04 #2
Цитата Сообщение от RazerVG Посмотреть сообщение
не помогает
И не поможет. Если только "%c" - х же интегер. И после call не забывайте стек очищать.
1
RazerVG
1 / 1 / 1
Регистрация: 22.03.2012
Сообщений: 60
27.12.2012, 09:41  [ТС] #3
Все равно не помогает может быть X сделать тоже строкой?
А можно сделать вывод в с++ или тоже будут проблемы?

Добавлено через 30 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main()
{char* x = "%c";
char* fmt = "%c";
__asm {
 lea eax, x; //заносим адрес переменной x в eax
 push eax;// кладем адрес переменной x в стек
 push fmt; //кладем адрес строки форматирования в стек
 call scanf; //вызываем функцию scanf. Заметьте, что аргументы передаются в обратном порядке
 add esp,8;// убираем аргументы из стека. 4 - размер одного аргумента; 2 - их количество
 
}
printf("%c",x);}
Теперь выводится 1 символ строки ,например пишем asdf выводит только a
Как сделать чтобы всю строку выводил
0
Charles Kludge
Клюг
7641 / 3156 / 382
Регистрация: 03.05.2011
Сообщений: 8,382
27.12.2012, 10:20 #4
printf("%s",x);
Ъ, я вам здесь что, интерактивный талмуд по асму/сю/паскалю?
Учите матчасть, cwerj.
0
RazerVG
1 / 1 / 1
Регистрация: 22.03.2012
Сообщений: 60
27.12.2012, 16:24  [ТС] #5
Она так вообще не работает ни одного не выводит .

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main()
{char* x = "%c";
char* fmt = "%c";
__asm {
 lea eax, x; //заносим адрес переменной x в eax
 push eax;// кладем адрес переменной x в стек
 push fmt; //кладем адрес строки форматирования в стек
 call scanf; //вызываем функцию scanf. Заметьте, что аргументы передаются в обратном порядке
 add esp,8;// убираем аргументы из стека. 4 - размер одного аргумента; 2 - их количество
 
}
printf("%s",x);}
я так понимаю это надо делать так но вообще результат нулевой

Добавлено через 4 часа 36 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{char x;
char* fmt = "%s";
_asm
{
lea eax, x
push eax
push fmt
call scanf
add esp, 30;
 
 
lea eax, x
push eax
push fmt;
call printf;
add esp, 30;
}
return 0;
}
ну вот прога которая вводит и выводит но выдает в конце ошибку

Stack around the variable 'x' was corrupted

Добавлено через 1 час 14 минут
Все нашел ошибку

C++
1
char x[10];
0
27.12.2012, 16:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 16:24

Словари: вывод только значения для введенного ключа
Добрый день,я только начал изучать питон да и в целом программирование,по этому...

Исправить код: работает только оператор сложения
Как надо исправить код, чтобы можно было выбирать сначала действия с числами и...

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


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

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

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