as86 - Онлайн в облаке

Это команда as86, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


as86 - Ассемблер для процессоров 8086..80386

СИНТАКСИС


as86 [-0123агьюв] [-лм[список]] [-n имя] [-o об] [-b[бункер]] [-s сим] [-t текстсег] SRC

as86_encap прогр. прог.в [приставка_] [as86_options]

ОПИСАНИЕ


as86 ассемблер для процессоров 8086..80386, его синтаксис ближе к
форма intel / microsoft, а не более нормальная общая форма системы unix
ассемблер.

В SRC file может быть '-' для сборки стандартного ввода.

Этот ассемблер может быть скомпилирован для поддержки процессора 6809 и может даже работать.

as86_encap это сценарий оболочки для вызова as86 и преобразования созданного двоичного файла в файл C
прог.в для включения или связывания с программами, такими как установщики загрузочного блока. В приставка_
Аргумент - это префикс, который будет добавлен ко всем переменным, определенным источником, по умолчанию он равен
имя исходного файла. Определенные переменные включают префикс_старт префикс_размер и
префикс_данные для определения и содержания кода, а также целых чисел, содержащих значения всех
экспортированные этикетки. Либо, либо оба прогр. и прог.в аргументы могут быть '-' для стандартных
вход / выход.

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ


-0 начать с 16-битного сегмента кода, предупреждать для всех инструкций> 8086

-1 начать с 16-битного сегмента кода, предупреждать для всех инструкций> 80186

-2 начать с 16-битного сегмента кода, предупреждать для всех инструкций> 80286

-3 начните с 32-битного сегмента кода, не предупреждайте ни о каких инструкциях. (даже не 486 или
586)

-a включить частичную совместимость с Minix asld. Это меняет интерпретацию
круглые скобки и квадратные скобки, а также внесение изменений в код
генерация и синтаксис для 16-битных переходов и вызовов. ("jmp @ (bx)" тогда является допустимым
инструкция)

-g помещать только глобальные символы в объект или файл символов

-j заменить все короткие переходы на аналогичные 16- или 32-битные переходы, 16-битные условные
ветви кодируются как короткая условная и длинная безусловная ветвь.

-O это заставляет ассемблер добавлять дополнительные проходы, чтобы попытаться использовать прямые ссылки на
уменьшить количество байтов, необходимых для некоторых инструкций. Если метки перемещаются на последнем проходе
ассемблер будет добавлять проходы до тех пор, пока все метки не стабилизируются (до максимального
из 30 проходов) Это, вероятно, не лучшая идея использовать это с рукописным ассемблером
использовать явный br индекс массы тела BCC коды операций стиля для кода 8086 или JMP возле стиль для
условные инструкции i386 и убедитесь, что все переменные определены, прежде чем они
используются.

-l создать файл списка, имя файла может следовать

-m печатать расширения макросов в листинге

-n следует имя модуля (входит в объект вместо имени источника)

-o создать объектный файл, имя файла следует

-b создать необработанный двоичный файл, имя файла может следовать за ним. Это "сырой" двоичный файл с
нет заголовка, если нет -s вариант файл начинается с местоположения 0.

-s создать файл символов ASCII, имя файла следует за ним. Формат этой таблицы
разработан, чтобы его было легко анализировать на предмет инкапсуляции и связанных действий в отношении
в двоичные файлы, созданные с помощью -b вариант. Если двоичный файл не начинается с
нулевое положение первые два элемента в таблице - это начальный и конечный адреса
двоичный файл.

-u Предположим, что неопределенные символы импортируются с неопределенным сегментом.

-w- разрешить ассемблеру печатать предупреждающие сообщения.

-t n переместить все данные текстового сегмента в сегмент n + 3.

AS86 ИСТОЧНИК


Специальные символы

* Адрес начала текущей строки.

; ! Любой из них отмечает начало комментария. Вдобавок любые "неожиданные"
символ в начале строки считается комментарием (но он также
отображается на терминал).

$ Допускается также префикс для шестнадцатеричных чисел, синтаксис «C», например 0x1234.

% Префикс для двоичных чисел.

# Префикс для непосредственных операндов.

[ ] Задает косвенный операнд.
В отличие от MASM, ассемблер не имеет информации о типе меток, только сегмент и
компенсировать. Это означает, что способ работы этого оператора и непосредственного префикса
как традиционные сборщики.

Примеры:
мов топор, bx
джмп бх
Прямая адресация регистров, переход копирует BX в ПК.

mov ax, [bx]
прыгнуть [бх]
Простая косвенная адресация регистров, переход перемещает содержимое ячейки
указанный BX в ПК.

mov ax, # 1234
Непосредственное значение ax становится 1234.

мов топор, 1234
mov ax, _hello
mov ax, [_ привет]
Абсолютная адресация, для ax установлено содержимое ячейки 1234. Обратите внимание на третий вариант.
не является строго согласованным, но используется в основном для совместимости с asld.

mov ax, _table [bx]
mov ax, _table [bx + si]
mov eax, _table [ebx * 4]

mov ax, [bx + _table]
mov ax, [bx + si + _table]
mov eax, [ebx * 4 + _table]
Индексированная адресация, оба формата в порядке, я думаю, что первый более правильный, но я
как правило, привык ко второму. :-)

Conditionals

ЕСЛИ, ЕЩЕ, ЭЛЬСЕИФ, ENDIF
Числовое условие

МФК, ЭЛЬЗАЙФК
Сравнение строк (str1, str2)

FAIL .НЕУДАЧА
Сгенерировать ошибку пользователя.

Сегмент, связанный

.ТЕКСТ .ПЗУ .ДАННЫЕ .BSS
Установить текущий сегмент. Им может предшествовать ключевое слово .SECT

МЕСТОПОЛОЖЕНИЕ Установите числовой сегмент 0 = ТЕКСТ, 3 = ДАННЫЕ, ПЗУ, BSS, 14 = МАКС. Порядок сегментов, установленный
линкер теперь 0,4,5,6,7,8,9, A, B, C, D, E, 1,2,3. Сегмент 0 и все сегменты выше 3
считаются текстовым сегментом. Обратите внимание, что ограничения на размер в 64 КБ не применяются для
сегменты 3-14.

Определение типа метки

ЭКСПОРТ ОБЩЕСТВЕННОЕ .ОПРЕДЕЛЯТЬ
Метка экспорта, определенная в этом объекте

ВСТУПЛЕНИЕ Заставить компоновщик включить указанную метку в a.out

.ГЛОБЛ .ГЛОБАЛЬНЫЙ
Определите метку как внешнюю и принудительно импортируйте, даже если она не используется.

ВНЕШНИЙ ВНЕШНИЙ ИМПОРТИРОВАТЬ .ВНЕШНИЙ
Импортировать список внешних меток
NB: Нет смысла использовать импорт для необработанных двоичных файлов.

.ВХОДИТЬ Отметить запись для старого двоичного файла (obs)

Определение данных

DB .ДАННЫЕ1 .БАЙТ FCB
Список 1-байтовых объектов.

DW .ДАННЫЕ2 .КОРОТКАЯ ФДБ .СЛОВО
Список 2-байтовых объектов.

DD .ДАННЫЕ4 .ДЛИННЫЙ
Список 4-байтовых объектов.

.ASCII FCC
Строка ascii скопирована для вывода.

.АСЦИЗ Строка ascii скопирована на вывод с завершением нулю байт.

Определение пространства

.BLKB Юаней .ПРОСТРАНСТВО
Пространство считается в байтах.

.BLKW .НОЛЬ
Пространство считается словами. (По 2 байта)

СВЯЗЬ .COMM ЛКОММ .LCOMM
Определение данных общей области

Другие полезные псевдооперации.

.ВЫРОВНЯТЬ .ДАЖЕ
центровка

EQU Определить ярлык

УСТАНОВКА Определить повторно определяемую метку

ORG .ORG
Установить место сборки

BLOCK / БЛОК Установите место сборки и сложите старый

ЕНДБ Вернуться к месту сборки

ПОЛУЧИТЬ ВКЛЮЧАЮТ
Вставить новый файл (без кавычек в имени)

ИСПОЛЬЗОВАНИЕ16 [процессор]
Определите размер операнда по умолчанию как 16 бит, аргумент - тип процессора, для которого ожидается код
запускать инструкции (86, 186, 286, 386, 486, 586) для процессора позже, чем указано
предупредить.

ИСПОЛЬЗОВАНИЕ32 [процессор]
Определите размер операнда по умолчанию как 32 бит, аргумент - тип процессора, для которого ожидается код
запускать инструкции (86, 186, 286, 386, 486, 586) для процессора позже, чем указано
предупредить. Если процессор не указан, ассемблер гарантирует, что он> = 80386.

END Конец компиляции этого файла.

.ПРЕДУПРЕЖДАТЬ Предупреждения о переключении

.СПИСОК Объявления вкл / выкл (1, -1)

.MACLIST
Включение / выключение списков макросов (1, -1)

Макросы, сейчас работают, общий вид такой.

МАКРО-саксофон
mov ax, #? 1
ИСПРАВЬТЕ
саксофон(1)

Не реализовано / не используется.

IDENT Определить строку идентификатора объекта.

SETDP Установить значение DP на 6809

MAP Установить номер карты таблицы двоичных символов.

Регистры
БП БХ ДИ СИ
EAX EBP EBX ECX EDI EDX ESI ESP
АХ СХ ДХ СП
AH AL BH BL CH CL DH DL
CS DS ES FS GS SS
CR0 CR2 CR3 DR0 DR1 DR2 DR3 DR6 DR7
TR3 TR4 TR5 TR6 TR7 СТ

Спецификаторы типа операнда
BYTE DWORD FWORD FAR FAR PTR PWORD QWORD TBYTE WORD NEAR

«Близко» и «далеко» не допускают многосегментного программирования, все операции «дальнего»
указаны явно с помощью инструкций: jmpi, jmpf, callf,
retf и т. д. Оператор Near может использоваться для принудительного использования 80386 16bit
условные ветви. Операторы 'Dword' и 'word' могут управлять размером
операнды на дальние переходы и вызовы.

Основные инструкции.
В общем, они такие же, как инструкции любого ассемблера 8086,
Основными исключениями являются несколько инструкций Bcc (BCC, BNE, BGE и т. д.), которые
сокращенное обозначение короткой ветви плюс длинный прыжок и "BR", которое является самым длинным
безусловный переход (16 или 32 бит).

Длинные ветви
BCC BCS BEQ BGE BGT BHI BHIS BLE BLO BLOS BLT BMI BNE BPC BPL BPS BVC BVS BR

Пересечение
КАЛЛИ КАЛЛФ JMPI JMPF

Инструкции по модификатору сегмента
ЭСЭГ ФСЭГ ГСЭГ ССЭГ

Инструкции по работе с байтами
ADCB ADDB ANDB CMPB DECB DIVB IDIVB IMULB INB INCB MOVB MULB NEGB NOTB ORB OUTB
RCLB RCRB ROLB RORB SALB SARB SHLB SHRB SBBB SUBB TESTB XCHGB XORB

Стандартные инструкции
AAA AAD AAM AAS ADC ADD И ARPL BOUND BSF BSR BSWAP BT BTC BTR BTS CALL CBW CDQ
CLC CLD CLI CLTS CMC CMP CMPS CMPSB CMPSD CMPSW CMPW CMPXCHG CSEG CWD CWDE DAA DAS
DEC DIV DSEG ENTER HLT IDIV IMUL IN INC INS INSB INSD INSW INT INTO INVD INVLPG INW
IRET IRETD J JA JAE JB JBE JC JCXE JCXZ JE JECXE JECXZ JG JGE JL JLE JMP JNA JNAE
JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ LAHF LAR LDS
LEA LEAVE LFS LGDT LGS LIDT LLDT LMSW LOCK LODB LODS LODSB LODSD LODSW LODW
LOOP LOOPE LOOPNZ LOOPZ LSL LSS LTR MOV MOVS MOVSB ​​MOVSD MOVSW MOVSX MOVW
MOVZX MUL NEG NOP NOT OR OUT OUTSB OUTSD OUTW OUTW POP POPA POPAD POPF POPFD
PUSH PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR REPE REPE REPNE REPNZ REPZ RET RETF
RETI ROL ROR SAHF SAL SAR SBB SCAB SCAS SCASB SCASD SCASW SCAW SEG SETA SETAE SETB
SETBE SETC SETE SETG SETGE SETL SETLE SETNA SETNAE SETNB SETNBE SETNC SETNE SETNG
SETNGE SETNL SETNLE SETNO SETNP SETNS SETNZ SETO SETP SETPE SETPO SETS SETZ SGDT
SHL SHLD SHR SHRD SIDT SLDT SMSW STC STD STI STOB STOSB STOSD STOSW STOW STR
ПОДТЕСТ VERR VERW WAIT WBINVD WRMSR XADD XCHG XLAT XLATB XOR

Плавающая запятая
F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI
FDIV FDIVP FDIVR FDIVRP FENI FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD FIMUL
FINCSTP FINIT FIST FISTP FISUB FISUBR FLD FLD1 FLDL2E FLDL2T FLDCW FLDENV FLDLG2
FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE FNSTCW FNSTENV
FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS
FSQRT FST FSTCW FSTENV FSTP FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP
FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1

. GASP


Препроцессор ассемблера Gnu предоставляет несколько разумных реализаций пользовательской предвзятости.
псевдо-коды операций.

Его можно вызвать в форме, подобной:

задыхаться [-а ...] файл.s [файл2.s] |
as86 [...] - [-o об] [-b бункер]

Однако имейте в виду, что Gasp генерирует ошибку для .org команды, если вы не используете
альтернативный синтаксис, который вы можете использовать org вместо этого, в противном случае используйте блок и конец. Директива
экспорт переводится на .Глобальный, который вызывает импорт, если вы создаете файл с помощью
-b использование что такое варган? or .определять .

Параметры списка GASP не поддерживаются в as86.

Используйте as86 в Интернете с помощью сервисов onworks.net



Новейшие онлайн-программы для Linux и Windows