Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2014, 23:17   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,690
По умолчанию

Цитата:
Небольшой Апдейт: RadAsm-а 2.2.2.0 нету, на торрентах лежит откровенное старьё, но даже торренты мёртвые и не качаются. WinAsm аналогично, всё мёртвое, на официальном форуме ссылки на скачку нету
Странно... KetilO, как автор, на форуме давал ссылку и она (сюрприз) до сих пор работает https://svn.code.sf.net/p/fbedit/code/RadASM30/Release/
p51x вне форума Ответить с цитированием
Старый 14.09.2014, 17:08   #12
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию

Смотрите пожалуста КодерПро. Я сохранил кажится прошлой осинью листы сайта, статьи как и оформление понравились офигенно!

Может прилипнут к сообщению..

Урок 10 - Преимущества MASM.mht:
Некорректный файл

Жаль!!!!!!!!

Ну тогда так что ли.


10- Преимущества MASM вперед


--------------------------------------------------------------------------------

10.0 - Преимущества masm

Если вы не используете masm, то можете пропустить этот раздел и попробовать преобразовать все примеры, или прочитать это и пробовать убедить себя, использовать masm. Конечно это ваш собственный выбор. Но masm делает действительно ассемблер намного проще.


10.1 - Конструкции сравнения и повтора

Masm имеет некоторый синтаксис псевдовысокого уровня, чтобы легко создавать конструкции сравнения и повтора:

.IF, .ELSE, .ELSEIF, .ENDIF
.REPEAT, .UNTIL
.WHILE, .ENDW, .BREAK
.CONTINUE

If

Если у вас есть опыт в языках программирования, возможно вы видели что-то вроде if/else конструкций:

.IF eax==1
;eax равен 1
.ELSEIF eax=3
; eax равен 3
.ELSE
; eax не равен 1 и 3
.ENDIF

Эта конструкция очень полезна. Вам не нужно вставлять сравнения и переходы, а только вставте директиву .IF (не забудьте точку перед .IF и .ELSE и т.д.). Вложенности if позволяются:

.IF eax==1
.IF ecx!=2
; eax= 1 и ecx не равно 2
.ENDIF
.ENDIF

Это может быть сделано проще:

.IF (eax==1 && ecx!=2)
; eax = 1 и ecx не равно 2
.ENDIF

А вот и операторы, которые вы можете использовать: == равно
!= не равно
> больше
< меньше
>= больше или равно
<= меньше или равно
& проверка бита
! инверсия ( NOT )
&& логическое 'И' ( AND )
|| логическое 'ИЛИ' ( OR )
CARRY? флаг переноса (cf) установлен?
OVERFLOW? флаг переполнения (of) установлен?
PARITY флаг паритета (pf) установлен?
SIGN? флаг знака (sf) установлен?
ZERO? флаг нуля (zf) установлен?

Repeat

Эта конструкция выполняет блок, пока условие не истинно:

.REPEAT
; код здесь
.UNTIL eax==1

Эта конструкция повторяет код между repeat и until, пока eax не станет равным 1.

While

Конструкция while это инверсия конструкции repeat. Она выполняет блок, пока условие истинно:

.WHILE eax==1
; код здесь
.ENDW

Вы можете использовать директиву .BREAK, чтобы прервать цикл и выйти.

.WHILE edx==1
inc eax
.IF eax==7
.BREAK
.ENDIF
.ENDW

Если eax=7, цикл while будет прерван.

Директива continue осуществляет переход на код проверяющий условие цикла в конструкциях repeat и while.


10.2 - Invoke

Это самое большое преимущество над tasm и nasm. Invoke упрощает использование процедур и вызовов.

Обычный стиль:

push параметр_3
push параметр_2
push параметр_1
call procedure

Invoke стиль:

invoke procedure, параметр_1, параметр_2, параметр_3

Собранный код будет одинаковым, но invoke стиль проще и более надежнее. Чтобы использовать invoke для вызова процедуры, вы должны определить ее прототип:

PROTO STDCALL testproc:DWORD, :DWORD, :DWORD

Эта директива объявляет процедуру, названную testproc, которая берет 3 параметра размером DWORD.
Теперь, если вы сделаете это...

invoke testproc, 1, 2, 3, 4

...masm выдаст вам ошибку, что процедура testproc берет 3 параметра, а не 4. Masm также имеет контроль соответствия типов, т.е. проверяет, имеют ли параметры правильный тип (размер).

В invoke вы можете использовать ADDR вместо OFFSET. Это сделает адрес в правильной форме, когда код будет собран.

Процедуры определены подобно этому:

testproc PROTO STDCALL :DWORD, :DWORD, :DWORD

.code

testproc proc param1:DWORD, param2:DWORD, param3:DWORD

ret
testproc endp

Это создает процедуру, названную testproc, с тремя параметрами. Прототип используется, invoke.

testproc PROTO STDCALL :DWORD, :DWORD, :DWORD

.code

testproc proc param1:DWORD, param2:DWORD, param3:DWORD

mov ecx, param1
mov edx, param2
mov eax, param3
add edx, eax
mul eax, ecx

ret
testproc endp

Теперь процедура делает следующие вычисления. testproc(param1, param2, param3) = param1 * (param2 + param3). Значение результата возвращается в регистре eax.
Локальные переменные определяются как здесь:

testproc proc param1:DWORD, param2:DWORD, param3:DWORD
LOCAL var1:DWORD
LOCAL var2:BYTE

mov ecx, param1
mov var2, cl
mov edx, param2
mov eax, param3
mov var1, eax
add edx, eax
mul eax, ecx
mov ebx, var1
.IF bl==var2
xor eax, eax
.ENDIF

ret
testproc endp

Вы не можете использовать эти переменные вне процедуры. Они сохранены в стеке и удаляются при возврате из процедуры.

10.3 - Макрокоманды

Я не буду сейчас рассказывать о Macro. Возможно в более поздних версиях этого туториала, но сейчас они для нас не важны.


[наверх]
Dimka-novitsek вне форума Ответить с цитированием
Старый 14.09.2014, 17:34   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

masm не среда, а компилятор, и указанное в нем умеет уже давно не он один.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.09.2014, 17:48   #14
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию

Да я реально тему знаю края, плохо.
Dimka-novitsek вне форума Ответить с цитированием
Старый 15.09.2014, 00:20   #15
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от КодерПро Посмотреть сообщение
Тем и не устраивает, что там нет билда, там нет отладчика, нет интелисенса, нет брейкоинтов, нет трассивоки, нет создания проэктов с готовыми пре-созданными шаблонами.
Из перечисленного нет интелисенса и пре-созданных шаблонов, все остальное в студии есть, правда для MASM, но я видел сторонние плагины для NASM.
waleri вне форума Ответить с цитированием
Старый 12.05.2019, 23:49   #16
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Вопрос Visual studio 2019 и assembler

Всем привет!

Подниму старую тему. Помогите новичку. Можно ли сейчас подружить Assembler c Visual Studio 2019? Если да, то что установить, какие компоненты среды, какие компиляторы? Я изучал всегда Delphi, QtCreator, поэтому хочу VisualStudio. Начал читать книжку В. И. Юрова. Там Masm.
Сейчас установил студию с компонентом разработки под C++, нашёл 2-е инструкции в интернете, но они не работают. https://prog-cpp.ru/asm-vs/. Дошёл до строки "По правой кнопке мыши для файла с расширением .asm выбираем опцию Свойства."
Выбираю "Свойства" файла Source.asm и там ничего нет.
Изображения
Тип файла: png Скриншот 12-05-2019 234627.png (68.9 Кб, 165 просмотров)
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 16.05.2019, 12:44   #17
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Радость Получилось!

Я не знаю, хоть вы и плевались от Visual Studio, но я настроил её по этому руководству: http://dml.compkaluga.ru/forum/index...owtopic=101277
Проблема была в том, что нужно установить " разработка классических приложений C++" и после этого создавать "Консольное приложение", удалять main.cpp и добавлять новый по инструкции.
Точки останова, отладчик, горячие клавиши, нормальное окно(не консоль), автосборка, объединение нескольких файлов в один проект. Здесь есть всё что мне необходимо для комфортного изучения ассемблера.
Изображения
Тип файла: png Скриншот 16-05-2019 122948.png (71.6 Кб, 132 просмотров)
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 16.05.2019, 21:38   #18
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

ничего ты так не изучишь.
асм тебе не прибомбас к чему-нибудь, и его нужно изучать отдельно.
наоборот, вся высокоуровневая хрень берёт начало от асма, а ты решил пойти обратно
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 16.05.2019, 21:40   #19
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

и дельфи и паскаль это для беременных мамочек,
если хочешь учить языки, начинай с асма
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 16.05.2019, 21:47   #20
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
и дельфи и паскаль это для беременных мамочек
Паскаль для школьников, ну а Дельфи хз для кого сейчас (кроме легаси и т.п.).

Цитата:
Сообщение от R71MT Посмотреть сообщение
если хочешь учить языки, начинай с асма
Если хочешь учить английский — начинай с наскальных рисунков?

Кстати, а что значит "учить языки"?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какая среда лучше? generic1 Общие вопросы C/C++ 6 13.04.2011 16:13
визуальная среда Си++ aurora_87 Общие вопросы C/C++ 0 11.11.2009 21:29
Визуальная среда с++ aurora_87 Общие вопросы C/C++ 1 21.10.2009 23:05
какая из трех сортировок (обменная,исчерпыванием,выбором) самая быстрая? Cyberbest Помощь студентам 2 26.04.2008 10:34