Ассемблер.
Альтернативный компилятор ассемблера для х86. Ассемблер написан сам на себе
имеет очень простой синтаксис. Позволяет создавать .com файл для ДОС.
Поддерживает 32 разрядные режимы адресации и данных. Доступен вместе с исходным
кодом.
Описание ассемблера.
Дальше рассмотрим пример Hello World.
* Кстати
комментарии вставляются между парными звездочками
Пример1 "Hello World" выводит на экран надпись.*
JMPS(S)
=A1= 'Hello World !'
=A2= 0A
=S= AX,B800;ES,AX;AX,3;INT10
CX,(A2-A1);SI,(A1);DI,500
AH,[(A2)]
=L= LODSB;STOSW;LOOP(L)
RET
Первая строка - это короткий переход к
началу программы. Ассемблер располагает код и данные именно в том порядке, в
котором вы их расположили в тексте.
JMP - кодирует длинный переход в пределах сегмента.
JMPS - короткий +/- 127 байт.
Со второй строкой все понятно. Третья строка:
По адресу (А2) в памяти ЭВМ размещается байт равный 0А.
Т.е.
Хотите зарезервировать в памяти байт - пищите так:
=vmode= 00 или =adr= 12
Надо выделить два байта пишите:
=X= 0000 или wo0
или
=Y= wosomething
for example rd ptr1234
Есть три ключевых слова определяющих размер.
- by - BYTE
(8)
- wo - WORD (16)
- dw - DWORD (32)
ассемблер проигнорирует все что встретит между этими буквами и
первой цифрой.
Нужен массив из двойных слов -
пожалуйста:
=array= dw0;12345678;01234;dw12;...
Желаете иметь таблицу адресов
чего-нибудь - no problem:
=mytable= (adr1);(adr2);(adr3);dword(adr4)...
C адресами возможны следующие
манипуляции:
CX,(A2-A1) * В CX получается длина
строки(см пример)*
jmps (adr)+2;
mov [bx+si+(a2-a1)+1234],(adr3-adr4)-5
В 386 процессоре появились команды
длинного условного перехода. Отличаются они от коротких так:
JZ (adr) - короткий
JZ_N (adr)
- длинный.
Префиксы "66" и "67" вставляются автоматически.
Префиксы сегментов надо использовать в следующем виде:
ES:
LODSB
или
ES:;LODSB
SS:;MOVAX,[ECX}
т.е. фактически префикс сегмента
воспринимается как однобайтная команда.
С префиксом REPZ и REPNZ все еще проще:
REPZ;MOVSB
или
REPNZ
STOSD
Вот и все.
RET
Скачать ассемблер
|
Программы
|
Remote Control - Программа для удаленного
доступа к компьютеру.
ImageConverter - Программа для уменьшения фотографий.
AutoShutdown - Программа для автоматического выключения компьютера.
Work time counter - Простая программа для учета рабочего времени.
ClearFolders - Программа для массового удаления файлов.
SynchronizeFolders - Программа для синхронизации каталогов.
DiskSector - Утилита позволяет осуществлять чтение / запись секторов диска в
/ из файла.
ROPTest - Программа изображает все 256 вариантов флагов Ternary Raster
Operations Codes, помогает определить необходимый код растровой операции.
HEX Dump ActiveX позволяет просматривать и редактировать данные в
шестнадцатеричном HEX формате.
15 slide puzzle - 15 slide puzzle game.
BOOTSAVER - Позволяет скопировать загрузочный сектор жесткого диска в файл,
восстановить загрузочный сектор из файла, восстановить загрузочную программу
IPL1, не меняя таблицу разделов диска.
Генератор кроссвордов. Описание алгоритм
компьютерного составления кроссвордов.
Симулятор
80196.
Программный симулятор микроконтроллера Intel 80196KR. Имеет встроенный
компилятор ассемблера, текстовый редактор, справочную систему. Может создавать
HEX файлы.
Ассемблер.
Оригинальный компилятор ассемблера х86.
DISKEDIT
Программа позволяет просматривать и редактировать сектора дисков. Работает
через прерывание INT13.
|
Программирование
|
WPF, XPS, NET. Как установить шрифт из
памяти
Нейронные сети. Пример программы и исходный код
С++.
Deflate. Подробное описание алгоритма
декодирование формата Дефлет. Прмер декодирования с пояснениями.
Программирование драйверов для Windows.
Общие вопросы программирования драйверов. Какими средствами пользоваться, где
скачать DDK.
Программирование RS232
в Windows.
СComBase класс для программирования COM порта.
Программирование потоков в Windows.
Класс CBaseThread позволяет организовать несколько рабочих потоков.
Динамический Recordset
CDynamicRecordSet - класс модернизирует CRecordSet для более удобной работы с
БД из MFC приложений.
Как сохранить, восстановить, отредактировать MBR (Master Boot Record), boot
sector, нулевой, загрузочный сектор диска при помощи утилиты debug.exe
|