Оператор пересылки 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