1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

На каких ассемблерах вы пишете чаще всего?

Тема в разделе "WASM.ASSEMBLER", создана пользователем Jin X, 17 янв 2018.

?

На каких ассемблерах вы пишете ЧАЩЕ ВСЕГО? (читайте примечание в теме)

  1. Macro Assembler (MASM)

  2. Turbo Assembler (TASM)

  3. Flat Assembler (fasm)

  4. Netwide Assembler (NASM), YASM (включая NASM в SASM IDE с его макросами)

  5. GNU Assembler (GAS)

  6. WASM и его потомки: UASM/HJWASM, JWASM

  7. GoAsm (отдельно GoLink не считается)

  8. Pelle Orinius Assembler (PoAsm)

  9. Ассемблер, встроенный в языки высокого уровнях (C++, Delphi, etc... напишите!)

  10. Ассемблер в emu8086 (TASM-подобный, не fasm !!!)

  11. Flat Assembler G (fasmg) [укажите в теме – для каких архитектур используете !!!]

  12. Atmel AVR Assembler (или другой AVR-ассемблер, но не fasmg... напишите!)

  13. FASMARM и другие ARM-ассемблеры (напишите в теме – какой именно!)

  14. Другие ассемблеры для архитектур, совместимых с IA-32/Intel 64 (напишите!)

  15. Другие ассемблеры для архитектур, НЕ совместимых с IA-32/Intel 64 (для микроконтр, 8-бит, напишите!)

  16. Я не пишу на ассемблере :(

  17. High-level Assembler/Assembly (HLA, HLASM)

Можно выбрать сразу несколько вариантов.
Результаты будут видны только после голосования.
  1. Aoizora

    Aoizora Member

    Публикаций:
    0
    Регистрация:
    29 янв 2017
    Сообщения:
    114
    Что-то не получается его использовать вместе с директивой dd

    Код (Text):
    1. macro round value, align { rb (value-1)-($+value-1) mod value }
    dd round(filesize, sectalign) ; SizeOfImage
    --- Сообщение объединено, 1 июн 2019 ---
    Не до любой ближайшей степени двойки, а выравнивание до section alignment, который может быть единицей или степенью двойки. То есть если мы выравниваем значение 1 на границу 512, в результате будет 512, а не 2.
     
  2. f13nd

    f13nd Active Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    689
    Потому что в фасме два процессора языка, не надо их мешать.

    (1+0x1FF)&FFFFFE00=0x200
     
  3. Aoizora

    Aoizora Member

    Публикаций:
    0
    Регистрация:
    29 янв 2017
    Сообщения:
    114
    >>Потому что в фасме два процессора языка, не надо их мешать.

    Звучит плохо. Макрос это процедура времени компиляции, ее результат должен подставляться, как выражение constexpr в C++. А здесь это не получается.
     
  4. f13nd

    f13nd Active Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    689
    Просто надо знать как пользоваться макроязыком и тогда однопроходной C++ покажется детской игрушкой, макросы фасма несравнимо мощней.
    кстати говоря ты пытаешься директиве dd дать значение round, которое макрос не возвращает.
     
  5. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    332
    Адрес:
    Кольца Сатурна
    Макросы в fasm возвращать значения не могут, так что именно в таком виде использовать не получится.
    Как вариант, можно сделать так:
    Код (ASM):
    1. macro round n,r { @result = (n+r-1)/r*r }
    2.  
    3. round 23,16
    4. mov al,@result
    p.s. В fasmg макросы вроде могут возвращать значения.