3 года назад

asm работа с указателями c++

Ассемблерный код встраивается в с++ код, написанный в MS Visual Studio 2010 с помощью _asm{}; Как в нем работать с указателями и классами C++?

Light_And_Dark (Гость) Assembler
3

Assembler: asm работа с указателями c++

8 месяцев назад Assembler под Windows (MASM32). Не работает процедура произведения матриц

Есть процедура. При её вызове ей сообщается:1. MAAd - адрес начала первой матрицы А2. MBad - адрес начала второй матрицы В3. MCad - адрес начала результирующей матрицы С4. RowA - количество строк в матрице А5. CalB - количество столбцов в матрице В6. СaRoAB - количество столбцов в матрице А или строк в ВВнутри регистрируются локальные переменные NeRA (i), NeCB (j) и NexCR (l), которые являются счетчиками для циклов.Данная процедура должна совершать операцию произведения двух матриц и записывать ...

The White (Гость) 1 ответ
3
8 месяцев назад Ассемблер принцип работы программы

Объясните принцип работы программы в двух словах:; masm dos com # .286 .model small .stack 100h .data; выводимые сообщения в кодировке DOS   mes1 db '‚ўҐ¤Ё бва®Єг Ё ­ ¦¬Ё ­  Ete',0Dh,0Ah,'$' mes2 db 0Dh,0Ah,'Џ®«г祭­ п бва®Є : ' dest db 510 dup('$')     ; место для размещения преобразованной строки buff db 255,?,255 dup(?) ; структура для ввода строки:                          ; макс...

Claudia (Гость) 1 ответ
3
8 месяцев назад Какие программы нужны для работы с ассемблером?

Честно говоря знаю asm на уровне "hello wold",но вот никак не разберусь какие инструменты нужны для работы с ним. (Стоит widows vista)

pavelkuznitsov (Гость) 1 ответ
3
Ответы (2)
amigo dias (Гость) 3 года назад
3

Ну это элементарно.

#include \u003cstdio.h



// удаление диапазона из строки
char* Delete(char* pstr, int pos, int cnt) {
char* tmp \u003d pstr;
__asm {
mov esi, pstr
mov edi, pstr
add esi, dword ptr pos
add edi, dword ptr pos
add edi, dword ptr cnt
next:
mov dl, [edi]
mov [esi], dl
or dl, 0
jz end;
inc esi
inc edi
jmp next;
end:
};
return tmp;
}



//...
class test {
public:
int arr[2];
};



int main(void)
{
char s[] \u003d "bla-bla 2012 over.";

puts(s);
puts( Delete(s, 8, 4) );

test t;
test* p \u003d \u0026t;
__asm {
lea esi, p
mov [esi + 4], 1000
mov [esi + 8], 2000
};
printf("%d %d\
", t.arr[0], t.arr[1]);

return 0;
}

p.s. примеры очень простенькие и не нуждаются в пояснении.

Пожаловаться
Сергей Миронов (Гость) 3 года назад
3
asm работа с указателями c++ (Assembler) - вопросы и ответы на все случаи жизни - справочник Assembler i-vopros.ru