Оператор MOV

Оператор пересылки MOV (переслать, передать) осуществляет пересылку байта или слова из источника (src) в получатель (dst): dst:=(src).

Форматы команды MOV:


1. MOV mem/reg, здесь mem -память,

2. MOV reg, data, reg -регистр,

3. MOV mem/reg,data, ac -аккумулятор,

4. MOV ac, mem, sreg -сегментный регистр.

5. MOV mem, ac,

6. MOV sreg, mem/reg,

7. MOV mem/reg, sreg,

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

Пример использования оператора пересылки MOV:

1. MOV AX, BX

2. MOV CX, 0E563

3. MOV VER, 34AC или MOV [0037], 34AC

4. MOV AL, VER или MOV AL, [0037]

5. MOV VER, AL или MOV [0037], AL

6. MOV DS, AX

7. MOV [0046], ES

В примере 1 осуществляется пересылка содержимого регистра BX в AX. В примере 2 число E563 записывается в регистр CX. В примере 3 число 34AC заносится в память, в одном случае адрес слова памяти обозначен символической переменной VER, а во втором случае адрес памяти непосредственно указан в программе. В память при этом будет записано два байта, т.е. записываемое слово будет размещено в двух ячейках памяти с адресами: 0037 и 0038. При этом младший байт AC будет размещен по младшему адресу, а старший байт 34-по старшему, поэтому в окне отладчика Вы видите число 34AC как AC34. В примере 4 пересылка осуществляется из памяти в регистр, т.е. содержимое ячейки памяти (один байт) с адресом 0037 будет занесено в однобайтовый регистр AL. В примере 5 осуществляется операция обратная выше описанной. В примере 6 инициализируется значение сегментного регистра DS. В сегментный регистр нельзя записать число, непосредствен указав его в команде MOV. Эту операцию выполняют, используя какой-либо промежуточный регистр или память. Так. Что записать регистр SS число 3415 необходимо выполнить следующие действия:

MOV AX, 3445h

MOV SS, AX.

В примере 7 содержимое сегментного регистра ES заносится память.

Ниже приводится текст программы, которую следует использовать для работы в отладчике AFD.

Текс программы SL1

Name ex

Assume cs:code,ds:date,ss:stak

Stak segment word stack

Dw 100 dup(?)

Stk_top label word

Stak ends

Dat segment; резервирование места в памяти под строку символов,

; начальный адрес строки-LL

LL db ‘ПРИВЕТ учащимся DPTI 111$’

dat ends

code segment; начало кодового сегмента

start proc far

push ds

mov ax,0

push ax

mov ax,dat; инициализация

mov ds,ax; сегментных

mov es,ax; регистров

mov ax,600h; очистка экрана

mov bh,41h; установка

mov cx,0; цветового

mov dx,18fh; режима

int 10h

mov ah,02; установить положение курсора

mov bh,00; на странице 0

mov dh,12; в строке 12

mov dl,20; в столбце 20

int 10h; вызов прерывания BIOS

mov ah,09h; вывод на экран строки

lea dx,11; символов, записанных

int 21h; по адресу LL

mov ah,00;ожидание ввода символа с экрана

int 16h

ret

start endp

code ends; конец кодового сегмента

end start


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: