Win32asm обучение


Урок 3 - Основы ассемблера


        Win32Asm Tutorial

       

назад 3 - Основы ассемблера вперед

3.0 - Основы ассемблера

Эти туториалы обучат вас основам ассемблера.

3.1 - Коды операции (далее опкоды)

Программы Ассемблера созданы с помощью опкодов. Опкоды это команды, которые понимает процессор. Например:

ADD

Инструкция add складывает вместе два числа. Большинство опкодов имеют операнды:

ADD eax, edx

ADD имеет 2 операнда. В случае, источника и приемника. Она добавляет значение источника к значению приемника и сохраняет результат в приемнике. Операнды могут быть разных типов: регистры, ячейки памяти, непосредственные значения (см. ниже).

3.2 - Регистры

Есть несколько размеров регистров: 8 бит, 16 бит, 32 бит (и больше на MMX процессорах). В 16-разрядных программах, вы можете использовать только 8 и 16 битные регистры. В 32-разрядных программах вы также можете использовать 32 битные регистры.

Некоторые регистры являются частью других; например, если EAX содержит значение EA7823BBh, вот то, что содержат другие регистры.

EAX EA 78 23 BB
AX EA 78 23 BB
AH EA 78 23 BB
AL EA 78 23 BB

регистры ax, ah, al - части регистра eax. Eax это 32-битный регистр (доступный только начиная с 386+), ax содержит младшие 16 бит (2 байта) регистра eax, ah содержит старший байт регистра ax, и al содержит младший байт регистра ax. Регистр ax - 16 битный, al и ah - 8 битные. Так из примера выше, вот значения регистров:

eax = EA7823BB (32-бит)

ax = 23BB (16-бит)

ah = 23 (8-бит)

al = BB (8-бит)

Пример использования регистров (не заботьтесь об опкодах, просто смотрите на регистры и описание):

mov eax, 12345678h mov загружает значение в регистр (Обратите внимание: 12345678h это шестнадцатиричное число, т.к. в конце стоит суффикс 'h')
mov cl, ah копирует старший байт регистра ax (67h) в регистр cl
sub cl, 10 вычесть 10 (десятичное) из значения в регистре cl
mov al, cl и сохранить его в младшем байте регистра eax.
<


- Начало -  - Назад -  - Вперед -



Книжный магазин