0 / 0 / 1
Регистрация: 24.03.2018
Сообщений: 41
|
||||||
Ввод/вывод массива с использованием scanf, printf в ассемблерной вставке (C++)02.10.2019, 21:08. Показов 11005. Ответов 5
Метки нет Все метки)
(
Как ввести/вывести массив с помощью асемблерной вставки в c++
используя call scanf,printf очень плохо знаю ассемблер,подскажите как правильно написать
0
|
02.10.2019, 21:08 | |
Ответы с готовыми решениями:
5
Прерывания в ассемблерной вставке |
![]() 1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
||||||
02.10.2019, 22:52 | ||||||
Naglse, ошибки проанализируйте самостоятельно. Обратите внимание, что
scanf портит регистры, поэтому их надо сохранять/восстанавливать.
3
|
0 / 0 / 1
Регистрация: 24.03.2018
Сообщений: 41
|
||||||
03.10.2019, 11:04 [ТС] | ||||||
Спасибо,
написал по примеру вывод,выводит правильно,но вызывается исключение: 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
|
![]() 1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
||||||
03.10.2019, 11:48 | ||||||
Naglse, в printf у вас стек не выровнен - 4 пуша и только 1 поп+8 байт. К тому же вы зачем-то сохраняете [ecx] вместо самого регистра, а потом не восстанавливаете.
3
|
![]() 1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
|
03.10.2019, 15:41 | |
![]() Решение
Не два. Первый раз - действительно пушим сам ESI в рамках процедуры сохранения восстановления контекста. Второй - пушим переменную в качестве параметра printf, которая находится по адресу, лежащим в ESI.
Это называется "сохранение контекста", перед call printf пушится всё, что используется в процедуре, а после вызова - восстанавливается обратно, т.к. внутри printf регистры безвозвратно трутся.
1
|
03.10.2019, 15:41 | ||||||
Помогаю со студенческими работами здесь
6
Как обращаться к членам структуры в ассемблерной вставке на си? Как использовать условные операторы в ассемблерной вставке
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
|
Многопоточное программирование в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
|
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
|
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
|
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
|
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
|
Образование и практика
Igor3D 21.03.2025
Добрый день
А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
|
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
|
Async/await в Swift: Асинхронное программирование в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
|
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
|