- •Дагестанкий государтвенный технический университет
- •Махачкала 1997 г.
- •Лабораторная работа №1
- •1.1.Создание выполнимого файла, работа в отладчике, изучение оператора пересылки mov.
- •1.2. Оператор mov.
- •1.3. Основные команды отладчика afd.
- •1.4. Индивидуальные задания.
- •2.1. Сегментация памяти, директивы ассемблера
- •2.3. Косвенная адресация
- •2.4. Директива assume
- •2.5. Индивидуальные задания
- •2.2. Прямая адресация
- •Лабораторная работа №3
- •3.1. Директивы equ, label, команды сложения и вычитания
- •3.1.1. Директивы equ
- •3.1.2. Директива label
- •3.2. Команды сложения и вычитания
- •3.3. Индивидуальные задания Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Вариант 11.
- •Вариант 12.
- •3.4. Примечание
- •Лабораторная работа №4
- •4.1. Изучение операторов обмена xchg и xlat
- •. Индивидуальные задания Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Вариант 11.
- •Вариант 12.
- •4.3. Приложение
- •Литература
- •Оглавление
- •Хачумов Вячbслав Михайлович Исмаилов Шейх-Магомед Абдулаевич Лагиева Марият Тагировна
1.2. Оператор mov.
Оператор пересылки MOV (переслать, передать) осуществляет пересылку байта или слова из источника (src) в получатель (dst): dst:=(src).
Форматы команды MOV:
MOV mem/reg, здесь mem-память,
MOV reg, data, reg-регистр,
3. MOV mem/reg,data, ac-аккумулятор,
4. MOV ac, mem, sreg-сегментный регистр.
MOV mem, ac,
MOV sreg, mem/reg,
MOV mem/reg, sreg,
Следует помнить, что пересылка возможна только между регистрами и между регистрам и памятью (пересылка типа память-память здесь не возможна).
Пример использования оператора пересылки MOV:
MOV AX, BX
MOV CX, 0E563
MOV VER, 34AC или MOV [0037], 34AC
MOV AL, VER или MOV AL, [0037]
MOV VER, AL или MOV [0037], AL
MOV DS, AX
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
