Создание выполнимого файла, работа в отладчике,

Изучение оператора пересылки MOV

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

Создание ехе-файлаосуществляется в два этапа. Сначала исходный текст программы компилируется и в результате создается объектный файл. В данном случае компилятором является программа tasm.exe, результатом ее работы является файл с расширением "obj". Запуск программы tasmосуществляется следующим образом:

tasm <имя файла с исходным текстом>.

Так, если Вы создали файл с ассемблерной программой revek.asm, то результатом работы программы tasm revek(здесь revek является исходной информацией для tasm) будет файл revek.obj.Следующим шагом в создании ехе-файла является шаг компоновки. Компоновка будет осуществляться следующим образом:

tlink <имя объектного файла> - tlink revek.

В результате выполнения последней операции будет получен выполнимый файл revek.exe.

Оператор MOV

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

dst:=(src)

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

1. MOV mem/reg, mem/reg ;

2. MOV reg, data ;

3.MOV mem/reg, data

MOV ac, mem ;

MOV mem, ac ;

6. MOV sreg, mem/reg ;

7. MOV mem/reg, sreg,

где ac - аккумулятор, mem - память,reg - регистр,sreg - сегментный регистр

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

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

№ пп Оператор  
1. Mov ax, bx ;пересылка содержимого регистра BX в AX.
2. Mov cx, 0e563 ;число E563 записывается в регистр СХ.
3. Mov ver, 34ac или Mov [0037], 34ac ;число 34AC заносится в память, в одном случае адрес слова памяти обозначен символической переменной VER, а во втором случае адрес памяти непосредственно указан в программе. В память при этом будет записано два байта т.е. записываемое слово будет размещено в двух ячейках памяти с адресами: 0037 и 0038. При этом младший байт AC будет размещен по младшему адресу, а старший байт 34 - по старшему, поэтому в окне отладчика Вы видите число 34AC как AC34.
4. Mov al, ver Или Mov al, [0037] ;пересылка осуществляется из ячейки памяти с символическим адресом в регистр, т.е. содержимое ячейки памяти (один байт) с адресом 0037 будет занесено в однобайтовый регистр AL
5. Mov ver, al Или Mov [0037], al ;осуществляется операция обратная выше описанной.
6. Mov ds, ax ;инициализируется значение сегментного регистра DS. В сегментный регистр нельзя записать число, непосредственно указав его в команде MOV. Эту операцию выполняют, используя какой-либо промежуточный регистр или память. Так, чтобы записать в регистр SS число 3415 необходимо выполнить следующие действия: MOV AX, 3415h MOV SS, AX.
7. Mov [0046], es ;содержимое сегментного регистра ES заносится в память.

 

 

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

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

name ex
assume cs:code,ds:dat,ss:stak
stak segment word stack
dw 100 dup(?)
stk_top label word
stak ends
dat segment
; резервирование места в памяти под строку символов, начальный адрес строки - ll
ll db 'ПРИВЕТ учащимся DPTI !!!$'
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,184fh ;режима
  int 10h  
  mov ah,02 ;установить положение курсора
  mov bh,00 ; на странице 0,
  mov dh,12 ; в строке 12,
  mov dl,20 ; в столбец 30
  int 10h ; вызов прерывания BIOS
  mov ah,09h ;вывод на экран строки
  lea dx,ll ;символов, записанных по
  int 21h ;адресу ll
  mov ah,00 ;ожидание ввода символа с экрана
  int 16h  
  ret  
  start endp  
  code ends ;конец кодового сегмента
  end start  

 

Индивидуальные задания

1. В директории ASM (TASM) создать exe-файл SL1.EXE, используя готовый исходный текст программы из файла SL1.ASM. Для подготовки exe-файла необходимо запустить программы TASM - транслятор и TLINK - компоновщик (редактор связей). Создав exe-файл, запустите его на выполнение.

2. Запустить отладчик AFD.COM.

3. Ознакомится с командами отладчика (см. HELP, вызываемый по F4).

4. В отладчике AFD загрузить программу SL1 и выполнить ее. Результат выполнения программы посмотреть в альтернативном окне. Альтернативное окно вызывается по F6, если оно было установлено предварительно по команде < MO A ON >.

5. Заново загрузить программу и начать ее выполнение в пошаговом режиме до первой команды INT <n>. Наблюдать изменения в регистрах процессора.

6. Установить точку останова (break point) после первого оператора INT <n> . Продолжить выполнение программы до точки останова. Результат выполнения программы наблюдать в альтернативном окне.

7. Установить в программе SL1 точки останова после каждого оператора INT <n> и выполнить программу, наблюдая и комментируя результаты работы программы в альтернативном окне.

8. Записать команды и выполнить их в отладчике в пошаговом режиме:

а) занести в регистры число:

 

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5
CXß7F45h AHß124 BLß-17 SIßA87h BLß77 BHß-126 DIß3A72h AHß87h DLß- 87 BPß6ACDh BLß192 CHß-103 DXß7734h CLß184 AHß- 111
Вариант 6 Вариант 7 Вариант 8 Вариант 9 Вариант 10
AXßF4F5h CLß202 BHß-95 CXßE5F1h DLßA7h ALß-57 BXßDEA7h DHß137 ALß- 73 SIßDDE2h BHß171 CLß-119 DXßA3F9h BLß7Ah CHß-133

 

б) переслать содержимое одного регистра в другой:

 

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5
СXßDX CXßSI BXßDI DXßBP BXßDX
Вариант 6 Вариант 7 Вариант 8 Вариант 9 Вариант 10
DXßCX SIßAX DXßDI CXßBP DIßSI

 

в) переслать содержимое ячейки памяти с указанным адресом в регистр AL

 

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5
00Е6 00СЕ
Вариант 6 Вариант 7 Вариант 8 Вариант 9 Вариант 10
003А

 

По указанному выше адресу записать слово:

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5
79A1 00СЕ
Вариант 6 Вариант 7 Вариант 8 Вариант 9 Вариант 10
003А

 

г) переслать в регистр ВХ содержимое ячейки памяти с указанным адресом

д) переслать в память слово, адресуемое указанным в скобках регистром:

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5
12E4®( BX) 3AF6®(DI) AE37®( SI) E058®(BP) FA65®(SI)
Вариант 6 Вариант 7 Вариант 8 Вариант 9 Вариант 10
33AD®(SI) D78®(BX) 67A3®(DI) 8CFE®(SI) C6D®(BX)

 

е) инициализировать сегментные регистры:

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5
DS1C01 ESAA12 SSF12C DS E3A4 SSCDFE
Вариант 6 Вариант 7 Вариант 8 Вариант 9 Вариант 10
DS7A31 ESCC33 ESAC53 SSFF55 DS34E7

Лабораторная работа № 2