Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/39: Рейтинг темы: голосов - 39, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.08.2011
Сообщений: 3

c++ и assembler

21.08.2011, 00:53. Показов 7378. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ктонибудь знает какойнибудь код на ассемблере, а то в одной книжка прочитал: чтобы в c++ вставить код ассемблера нужно писать так:
asm{ здесь код ассемблера };
хочу попробовать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.08.2011, 00:53
Ответы с готовыми решениями:

Assembler
Ребят, помогите написать программу. "Если в ячейке внутреннего ОЗУ (DSEG) с адресом 60h - отрицательное число, вычислить модуль числа...

Assembler
Помогите с заданием пожалуйста! Разработать программу на языке ASSEMBLER для микропроцес-сорного устройства, выполнить отладку в...

Assembler
(Assembler TASM) Всем привет! Ассемблером начал изучать недавно, хочу сделать одно задание экзаменационное, суть задания заключается в...

6
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
21.08.2011, 01:15
Лучший ответ Сообщение было отмечено как решение

Решение

Assembler
1
asm int 3
после какого-нибудь условия , хоть после ShowMessage , задаст точку останова
4
46 / 46 / 3
Регистрация: 04.02.2011
Сообщений: 199
22.08.2011, 08:24
Лучший ответ Сообщение было отмечено как решение

Решение

Code
1
2
3
4
__asm
{
   // Тут код асма
}
Например,
C++
1
2
3
4
5
6
7
8
9
10
int a = 5, b = 5, c;
__asm
{
    mov eax, a
    mov ebx, b
    add eax, ebx
    mov c, eax
}
std::cout << c << std::endl;
// Выведет 10
4
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
24.08.2011, 18:29
Я бы посоветовал SetevoY, найти учебник по ассемблеру.
Не все ассемлеровские функции нормально работают.
В ниже приведённом коде можно было и другие функции использовать, а не получается.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        int a = 2; // объявляем переменную a и кладем туда значение байта
        int b = 1; // объявляем переменную a и кладем туда номер бита
        int c = 0; // объявляем переменную c,
 
        // начало ассемблерной вставки
        __asm{
                mov eax, a   // загружаем значение переменной a в регистр EAX
                mov ebx, b   // загружаем значение переменной b в регистр EBX
                bt eax, ebx  // функция проверки битов
                jae l        // если равно нулю, выход
                mov c, 1     // загружаем в переменную c значение 1
                l:
        }
Edit1->Text=IntToStr(c);
}
1
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
25.08.2011, 11:32
Цитата Сообщение от Grey Посмотреть сообщение
Assembler
1
2
3
4
...
mov ebx, b   // загружаем значение переменной b в регистр EBX
bt eax, ebx // функция проверки битов
jae l
bt не меняет zf.
Регистр ebx надо сохранять и восстанавливать, если используется.
1
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
25.08.2011, 22:47
Цитата Сообщение от Somebody Посмотреть сообщение
bt не меняет zf.
Согласно книге Зубкова Сергея владимировича "Assembler для DOS, Windows и UNIX"
Команда BT считывает в флаг CF значение бита из битовой строки, определённой первым операндом, со смещение, указанным во втором операнде.
После выполнения команды BT флаг CF равен значению считанного бита, флаги OF,SF,ZF,AF и PF не определены.
Команда JAE проверяет флаг CF.
P.S.Ну может я чего то и не знаю про флаг ZF.

Добавлено через 13 минут
Цитата Сообщение от Somebody Посмотреть сообщение
Регистр ebx надо сохранять и восстанавливать, если используется.
Да, по моему, сначала я использовал флаг ZF. Но компилятор выдавал ошибки, и я переделал код.
А куда его сохранять и восстанавливать?
1
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
26.08.2011, 10:21
Цитата Сообщение от Grey Посмотреть сообщение
Команда JAE проверяет флаг CF.
Вообще да, просто что-то меня эта E в jaE с толку сбила. Поэтому и есть jnc, чтобы не путаться.
А насчёт флагов: по интеловской документации OF, SF, AF, PF не определены, а ZF не изменяется.
Цитата Сообщение от Grey Посмотреть сообщение
А куда его сохранять и восстанавливать?
Куда угодно (обычно стек), главное восстановить. Менять можно eax, ecx, edx, в общем, как при вызовах функций.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2011, 10:21
Помогаю со студенческими работами здесь

C->ASSEMBLER
Здравствуйте. Для настройки одного девайса был приведен код на С Я его приложил. В этом коде есть функция RFXX_WRT_CMD(unsykned int aCmd)...

AVR assembler
Добрый день. Нужна помощь. Есть задачка - /**Calculating absolute values Write a program that calculates absolute values of two’s...

Книги по Assembler
Всем доброго вечера! Посоветуйте, пожалуйста, хорошие книги по ассемблеру... Пытаюсь написать свой загрузчик к ОС (изучаю исключительно в...

Литература по Assembler
Здравствуйте. Поговорил с программистами Assembler и они сказали, что я должен читать отдельную литературу для DOS, Windows, Linux....

ARM Assembler
Ребята, здравствуйте, можете ответить на ряд вопросов по арм ассемблеру? Начал потихоньку изучать арм ассемблер. Пользуюсь кеилом и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru