MASM - это инструмент Microsoft Macro Assembler для преобразования языка ассемблера в объектный код. Он обрабатывает инструкции x86 и псевдо-инструкции, написанные в "синтаксисе Intel". MASM - это стандартный низкоуровневый язык для всех сред MSDOS и Windows, который в настоящее время поддерживается в 32-битной и 64-битной версиях.
2 ответа

Зарегистрировать косвенную адресацию

Я хотел бы знать, если есть разница между: MOV [BX] + 20, AX а также MOV [BX + 20], AX Я рассуждаю так: для 1-го случая мы переносим значение AX + 20 в адрес BX И для 2-го случая мы перемещаем значение AX в адрес BX+ 20 Благодарю.
27 апр '11 в 09:19
3 ответа

Вывод Hello World в MASM с использованием функций WIN32

содержание вступление Код Сборка и запуск Разнообразный Вопрос 1. Введение Это не вопрос как таковой (хотя он и есть внизу), а приложение HelloWorld, с которым люди в Stackru могут экспериментировать. Когда я впервые пытался программировать на MASM,…
31 дек '10 в 05:33
1 ответ

Встроенный сборочный эквивалент директивы.data MASM

Мне любопытно, что эквивалент (например) .data x dword 42 .code main proc ; Do stuff here. ret main endp end было бы, если бы я писал встроенную сборку (в D). Я понимаю, что мог сделать что-то вроде int main() { int x = 42; asm { // Do stuff here. }…
04 авг '13 в 03:24
1 ответ

MASM и C переходят к функции

У меня есть указатель на функцию __stdcall в C, и в ассемблере x86 и x64 мне бы хотелось иметь функцию asm, которую я могу использовать для перехода к этой функции. Например возьмем функцию Windows API MessageBoxW void *fn = GetProcAddress(GetModule…
15 авг '15 в 06:37
0 ответов

Вызов printf в 64-битном MASM не работает (отлично работает)

Рассмотрим следующий код сборки (MASM) (helloworld.asm): extern puts: PROC .data msg db 'hello world', 0Ah, 00 .code main proc sub rsp, 40 lea rcx, msg call puts add rsp, 40 ret main endp End Он прекрасно компилируется под Windows 7 (после установки…
26 окт '17 в 19:31
1 ответ

Как включить только разделы сборки включаемых файлов

Я создал отдельные включаемые файлы для общего использования в моих программах сборки. (например, строковые операции / форматированный ввод / и т.д.). Когда я включаю эти файлы, я замечаю, что все функции включаются в целевой двоичный файл. Есть ли …
14 мар '13 в 12:33
2 ответа

2-х ступенчатый загрузчик с MASM

Вот мой код для загрузочного сектора и ядра. Я загружаю свой загрузочный сектор из usb, используя int 13 func 42 в 1000:00(h), и я прыгаю к ядру, но всегда ничего не радует после загрузки ядра... ;----------------------------------------------------…
25 авг '15 в 09:54
2 ответа

Генерировать случайное число в диапазоне в сборке

Я пытаюсь создать случайное число между -27 и +33 в сборке. Есть процедура, которая называется Randomize который генерирует случайное число от 0 до n, где n - верхняя граница. Как сдвинуть нижнюю границу на -27, а не на 0? Это код: title test INCLUD…
09 июн '12 в 18:33
3 ответа

Почему это объявление массива вторгается в следующий?

Я изучаю ассемблер для IA-32 с MASM, используя Microsoft Visual C++ Express Edition, и эта проблема возникла. Когда я делаю это: INCLUDE Irvine32.inc QUANT = 47 .data fibonacciVetor DWORD 1, 1, (QUANT - 2) DUP(0) fileName BYTE "vetor.txt", 0 fileHan…
13 апр '10 в 20:26
1 ответ

И, ИЛИ, или XOR Язык ассемблера MASM X86 IRVINE

В предложениях, а не в коде, мне просто нужно объяснение. Как вы пишете команды для изменения заглавной буквы Х в нижний регистр х
17 дек '15 в 23:35
1 ответ

Понимание слова PTR

У меня есть 16-битный исходный код, который я пытаюсь понять. Я имею. unsigned short addr, d; addr = &d; 8D46FA // LEA AX,WORD PTR [d] 8946FC // MOV WORD PTR [addr],AX адрес становится 0x159A Почему addr = 0x159A, а не 0xFA46? Этот вопрос был от…
04 июл '18 в 21:02
3 ответа

Добавление более четырех параметров в сборке

У меня есть файл C++ и.asm, как показано ниже. Я пытаюсь добавить все параметры, которые я передал в функцию суммирования summation(int a ,int b ,int c ,int d, int e,int f) C++ файл выглядит так: #include <iostream> #include <conio.h> #i…
10 дек '13 в 17:35
1 ответ

Присвойте значения регистрам, сложите и вычтите их

Я полностью потерян с этим. Мне нужно запрограммировать, что вычисляет следующее выражение, используя регистры: varA = (varA + varB) - (varC + varD), где varA, varB и т. Д., Являются переменными. Присвойте целочисленные значения регистрам EAX, EBX, …
01 окт '18 в 16:25
1 ответ

Доступ к префиксу сегмента программы

Я пытаюсь получить доступ к префиксу сегмента программы (PSP) в x86 MASM Assembler. В качестве теста я хотел бы напечатать заданные аргументы командной строки после запуска моей программы. Я попытался поместить адрес PSP в dx регистр со смещением 81…
17 авг '17 в 19:43
1 ответ

Распределение памяти ассемблера

Я пытался решить эту проблему в течение нескольких дней. Я понятия не имею, как выделить память для копирования строки в другое место. Вот код: Строка процесса caesarAsm: DWORD, ключ: DWORD, строкаДлина: DWORD; внутри этой процедуры у меня есть код,…
30 окт '15 в 08:58
2 ответа

Фатальная ошибка сборки LNK1190: найдено недопустимое исправление, тип 0x0001

Я хочу написать 16-битный код сборки 8086 в Visual Studio 2010, но выдает ошибку: code: .MODEL small .STACK 100h .data message BYTE "Hello, world!","$" .code mov ah,9 mov dx,OFFSET message ; addr of buffer int 21h END вывод дает мне эту ошибку: fm.o…
04 фев '13 в 17:57
1 ответ

Смешивание переменных при загрузке одного из них

Я пытаюсь написать простую программу на MASM, и я заметил, что моя программа смешивает переменные во время загрузки одного из них. Вот простой пример: .386 .model FLAT, STDCALL option casemap:none include \masm32\include\masm32rt.inc includelib \mas…
08 июн '17 в 12:44
1 ответ

Ошибка MSB3721 при попытке собрать простую программу вычитания в сборке

Я пишу простую программу сборки, которая должна вычесть 3 целых числа, используя только 16-битные регистры. Затем я должен вызвать DumpRegs, чтобы показать вывод. Я использую Microsoft Visual Studio 2013. Мой код: INCLUDE Irvine32.inc .386 .model fl…
11 окт '15 в 22:20
2 ответа

Изменение строки (расширение имени файла)

Я здесь новенький. Вот в чем дело: мне нужно прочитать имя файла и затем убедиться, что оно заканчивается на ".IN", если нет, мне нужно добавить его, чтобы открыть файл. После этого мне нужно создать файл с тем же именем файла, но заканчивающийся на…
11 июл '17 в 20:16
2 ответа

Широкий символьный строковый литерал в MASM?

Ты используешь name DB "Foo",0 объявить name быть байтовой строкой "Foo", Как вы объявляете это вместо словосочетания? (т.е. 16 бит на символ) Редактировать: Я ищу метод, который хорошо работает внутри макросов, например: GenerateThunk macro Name .c…