Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 07.09.2014, 23:17   #11
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,503
Репутация: 2631
По умолчанию

Цитата:
Небольшой Апдейт: 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
Репутация: 15
По умолчанию

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

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

Урок 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
Адрес: Москва
Сообщений: 20,995
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

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

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

Цитата:
Сообщение от КодерПро Посмотреть сообщение
Тем и не устраивает, что там нет билда, там нет отладчика, нет интелисенса, нет брейкоинтов, нет трассивоки, нет создания проэктов с готовыми пре-созданными шаблонами.
Из перечисленного нет интелисенса и пре-созданных шаблонов, все остальное в студии есть, правда для MASM, но я видел сторонние плагины для NASM.
waleri вне форума   Ответить с цитированием
Старый 13.05.2019, 00:49   #16
xwicked
Профессионал
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Адрес: Россия, г. Старый Оскол
Сообщений: 1,335
Репутация: 406

icq: 624801702
skype: labfreetech.org
Вопрос Visual studio 2019 и assembler

Всем привет!

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

icq: 624801702
skype: labfreetech.org
Радость Получилось!

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

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

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

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

Кстати, а что значит "учить языки"?
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


05:11.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru