Регистры данных могут использоваться программистом по своему усмотрению. В них можно хранить любые данные: числа, адреса и др.
Регистры данных
EAX
| EBX
|
ax
| bx
| cx
| dx
|
ah
| al
| bh
| bl
| ch
| cl
| dh
| dl
|
Аккумулятор
| База
| Счетчик
| Регистр данных
|
| | | | | | | |
В верхенм ряду находятся 32-разрядные регистры, которые могут хранить числа от 0 до 0FFFFFFFFh. Во втором ряду – 16-разрядные, которые могут хранить от 0 до 0FFFFh. В следующей строке расположен ряд 8-разрядных регистров: ah, bh, ch,dh- старшие (High) и cl, al, bl, dl – младшие (Low) половинки 16- разрядных регистров. В эти регистры можно загружать максимальное число 255 (FFh).
Если загрузить большее число , чем может содержать регистр, то при ассемблировании программы произойдет ошибка.
Например, следующие записи будут ошибочны:
mov ah,123h - максимум FFh
mov bx,12345h - максимум FFFFh
mov dl,100h - максимум FFh
Если шестнадцатеричное число начинается не с цифры (12h) , а с буквы (С5h), то перед таким числом ставится 0:0C5h. Это необходимо для того, чтобы программа-ассемблер могла отличить, где шестнадцатеричное число, а где название переменной или метки.
Например, процессор выполняет команду mov ax,1234h. В этом случае в регистр ah загружается число 12h, а в регистр al-34h.
Например:
Команда
| Результат
|
mov ax,1234h
mov bx, 5678h
mov cx,9ABCh
mov dx,0DEF0h
| ax=1234h, ah=12h, al=34h
bx=5678h, bh=56h, bl=78h
cx=9ABCh, ch=9A, cl=BCh
dx=0DEF0h, dh=0DEh, dl=0F0h
|