Лабораторная работа №24 / 2
.docСанкт-Петербургский Государственный Электротехнический Университет
Кафедра вычислительной техники
Лабораторная работа №2
3-ий семестр, программирование на языке ассемблера
«Операции пересылки и способы адресации»
Студент гр. 181x:
Санкт-Петербург
2002
Задание.
составить и отладить в отладчике программу, пересылающую 4 байта или 4 слова из одной области памяти в другую, используя заданный тип адресации. Пересылка осуществляется либо в прямом, либо в обратном порядке.
Вариант |
Объект пересылки |
Способ адресации |
Объект пересылки |
2 |
байты |
косвенная |
прямой |
Ход выполнения работы.
Написание программы.
Текст программы:
;laba2
cod segment
assume cs:cod,ds:dat1,es:dat2
begin: mov ax,dat1
mov ds,ax
mov ax,dat2
mov es,ax
cld ;сбрасываем флаг DF - направление
;слева на право
mov bx, offset bytes1 ;помещаем адрес первого байта в BX
lea si,[bx] ;адрес области "откуда"
lea di,es:bites2 ;адрес области "куда"
mov cx,4 ;сколько раз
rep movsb ;перемещаем байт
mov ax, 4c00h
int 21h
cod ends
dat1 segment ;основной сегмент данных
bytes1 db '1234' ;четыре исходных байта
dat1 ends
dat2 segment ;дополнительный сегмент данных
bites2 db 4 dup('0') ;место под четыре байта, заполненное
;ASCII кодами нуля
dat2 ends
stk segment
db 256 dup(?) ;место под стек - 256 байт
stk ends
end begin
Отладка.
Исполняемый файл программы был загружен в отладчик. Программа была выполнена пошагово. В процессе её выполнения мы наблюдали за состоянием дополнительного сегмента данных. За каждый шаг выполнения строки rep movsb в регистр помещались байты из заданной нами строки в сегменте данных. Сначала переместился байт 31h, затем 32h и т.д. до байта 34h. После этого управление было передано следующей команде и, в итоге, программа завершила свою работу.