Ассемблер Это просто! Учимся программировать


Регистры данных (Таблица № 1)


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

AX (Accumulator register - аккумулятор). Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно

BX (Base register - база). Применяется для хранения базового адреса некоторого объекта в памяти

CX (Count register - счетчик). Применяется в командах, производящих некоторые повторяющиеся действия.

DX (Data register - регистр данных). Так же, как и регистр AX, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно

Эти шестнадцатиразрядные регистры могут хранить числа от 0 до 65.535 (от 0h до FFFFh в шестнадцатеричной системе (вспоминаем прошлую главу)). Под ними идет ряд восьмиразрядных регистров (AH, AL, BH, BL, CH, CL, DH, DL), которые могут хранить максимальное число 255 (FFh). Это половинки (старшая или младшая) шестнадцатиразрядных регистров.

Например:

Мы уже знаем оператор MOV, который предназначен для загрузки числа в регистр. Чтобы присвоить, к примеру, регистру AL число 35h, нам необходимо записать так:

mov al,35h

а регистру AX число 346Ah - так:

mov ax,346Ah

Если мы попытаемся загрузить большее число, чем может содержать регистр, то, при ассемблировании программы произойдет ошибка.

Например, следующие записи будут ошибочны:

mov ah,123h максимум FFh mov bx,12345h максимум FFFFh mov dl,100h максимум FFh

Здесь надо отметить, что если шестнадцатеричное число начинается не с цифры (напр.: 12h), а с буквы (A-F) (напр.: С5h), то перед таким числом ставится нуль: 0C5h. Это необходимо для того, чтобы программа-ассемблер могла отличить где шестнадцатеричное число, а где метка. Ниже мы рассмотрим это на примере.

Допустим, мы выполнили команду mov ax,1234h. В этом случае в регистре AH будет находится число 12h, а в регистре AL - 34h. Т.е. AL, BL, CL, DL - это младшие (Low), а AH, BH, CH, DH - старшие (High) половинки шестнадцатиразрядных регистров (см. Таблицу № 4).

Таблица № 4. Результаты выполнения различных команд

КомандаРезультат

mov ax,1234hAX = 1234h, AH = 12h, AL = 34h
mov bx,5678hBX = 5678h, BH = 56h, BL = 78h
mov cx,9ABChCX = 9ABCh, CH = 9Ah, CL = 0BCh
mov dx,0DEF0hDX = 0DEF0h, DH = 0DEh, DL = 0F0h
<


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



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