Similar presentations:
Первое знакомство с языком программирования Ассемблер
1. Лабораторная работа №1
Первое знакомство сязыком программирования
Ассемблер
Файл task_1.asm
Автор: асс. каф. РС
Гайворонский Дмитрий Вячеславович
2. Постановка задачи
Используя директивы и операторы ассемблераAVSIM85, написать программу копирования блока
данных (программу расположить с адреса 230Ch):
Блок данных
Копия блока данных
AAh 3Bh 50h D2h Ah 7 EFh 77 5BhCCh 6 AAh
DADAh - начальный адрес
3. Разделение памяти
Область данныхDADAh
230Ch
0000h
Область
программы
4. Алгоритм решения
HLC
DE
A15-0
D7-0
A
A
1) Указание начального адреса (HL),
адреса ячейки возврата(DE)
размера массива (C)
2) M(DE) ← А←M(HL)
3) Переход к следующей ячейке HL ←HL+1;
DE ←DE+1; C ←C–1
4) Проверка С=0? (пройдены все ячейки)
5. Data Segment
defseg d_seg, start = 0DADAhseg d_seg
beta db 0AAh,3Bh,50h,0D2h,0Ah,7,
0EFh,77,5Bh,0CCh,6,0AAh
teta ds teta - beta
6. Code Segment
defseg c_seg, start = 230Chseg c_seg
LXI H,beta
LXI D,teta
MVI C,teta-beta
L1: MOV A,M ; A ← M(HL)
STAX D
; M(DE) ← A
INX H
; HL ← HL + 1
INX D
; DE ← DE + 1
DCR C
;C←C-1
JNZ L1
end
7. Файл конфигурации отладчика task_1.cmd
LAtask_1D1A0DADAh
SY
←230C
; загрузить файл с именем
task_1
; адрес памяти дампа 1
; разрешение счета числа
тактов при выполнении
; РС←230C – начальный
адрес программы
8. Пошаговое выполнение программы
9.
РегистрыLXI H, 0DADAh
HL ← DADAh
A
XXh XXXX XXXX b
B C XXh XXh
D E XXh XXh
H L DAh DAh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … XXXXh … XXXXh …
D7-0
XXh … XXh
10.
РегистрыLXI D, 0DAE6h
DE ← DAE6h
A
XXh XXXX XXXX b
B C XXh XXh
D E DAh E6h
H L DAh DAh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … XXXXh … XXXXh …
D7-0
XXh … XXh
11.
РегистрыMVI C, 0Ch
C ← 0Ch
A
XXh XXXX XXXX b
B C XXh 0Ch
D E DAh E6h
H L DAh DAh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … XXXXh … XXXXh …
D7-0
XXh … XXh
12.
РегистрыMOV A, M
A
A ← M(H L)=
=M(DADAh)=AAh
AAh
1010 1010 b
B C XXh 0Ch
D E DAh E6h
H L DAh DAh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … DADAh … XXXXh
D7-0
AAh … XXh
…
13.
РегистрыSTAX D
A
M(D E) ← A
M(DAE6h) ← AAh
AAh
1010 1010 b
B C XXh 0Ch
D E DAh E6h
H L DAh DAh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … DADAh … DAE6h
D7-0
AAh … AAh
…
14.
РегистрыINX H
A
HL ← HL+1
HL ← DADA+1=
=DADBh
AAh
1010 1010 b
B C XXh 0Ch
D E DAh E6h
H L DAh DBh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … DADAh … DAE6h
D7-0
AAh … AAh
…
15.
РегистрыINX D
A
DE ← DE+1
DE ← DAE6+1=
=DAE7h
AAh
1010 1010 b
B C XXh 0Ch
D E DAh E7h
H L DAh DBh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … DADAh … DAE6h
D7-0
AAh … AAh
…
16.
РегистрыDCR C
A
C←C-1
C ← 0C - 1=0Bh
AAh
1010 1010 b
B C XXh 0Bh
D E DAh E7h
H L DAh DBh
Флаги
Z
0
Область данных (ОЗУ)
А15-0 … DADAh … DAE6h
D7-0
AAh … AAh
…
17.
РегистрыJNZ L1
Переход
на метку L1,
если Z=0
A
AAh
1010 1010 b
B C XXh 0Bh
D E DAh E7h
H L DAh DBh
Флаги
Z
0
Область данных (ОЗУ)
А15-0 … DADAh … DAE6h
D7-0
AAh … AAh
…
18.
РегистрыMOV A, M
A
A ← M(H L)=
=M(DADBh)=3Bh
3Bh
0011 1011 b
B C XXh 0Bh
D E DAh E6h
H L DAh DBh
Флаги
Z
X
Область данных (ОЗУ)
А15-0 … DADBh … XXXXh
D7-0
3Bh … XXh
…
19.
РегистрыSTAX D
A
M(D E) ← A
M(DAE6h) ← AAh
3Bh
0011 1011 b
B C XXh 0Bh
D E DAh E7h
H L DAh DBh
Флаги
Z
0
Область данных (ОЗУ)
А15-0 … DADBh … DAE7h
D7-0
3Bh … 3Bh
…
20.
РегистрыINX H
A
HL ← HL+1
HL ← DADB+1=
=DADCh
3Bh
0011 1011 b
B C XXh 0Bh
D E DAh E7h
H L DAh DCh
Флаги
Z
0
Область данных (ОЗУ)
А15-0 … DADBh … DAE7h
D7-0
3Bh … 3Bh
…
21.
РегистрыINX D
A
DE ← DE+1
DE ← DAE7+1=
=DAE8h
3Bh
0011 1011 b
B C XXh 0Bh
D E DAh E8h
H L DAh DCh
Флаги
Z
0
Область данных (ОЗУ)
А15-0 … DADBh … DAE7h
D7-0
3Bh … 3Bh
…
22.
РегистрыDCR C
A
C←C-1
C ← 0B - 1=0Ah
3Bh
0011 1011 b
B C XXh 0Ah
D E DAh E7h
H L DAh DBh
Флаги
Z
0
Область данных (ОЗУ)
А15-0 … DADBh … DAE7h
D7-0
3Bh … 3Bh
…
23.
РегистрыJNZ L1
Переход
на метку L1,
если Z=0
A
3Bh
0011 1011 b
B C XXh 0Ah
D E DAh E8h
H L DAh DCh
Флаги
Z
0
Область данных (ОЗУ)
А15-0 … DADBh … DAE7h
D7-0
3Bh … 3Bh
…
24. Фрагмент окончания программы
25.
РегистрыDCR C
A
C←C-1
C ← 01 - 1=00h
AAh
1010 1010 b
B C XXh 00h
D E DAh F2h
H L DAh E6h
Флаги
Z
1
Область данных (ОЗУ)
А15-0 … DAE5h … DAF1h
D7-0
AAh … AAh
…
26.
РегистрыJNZ L1
A
Продолжение
программы
(выход из цикла),
если Z=1
AAh
1010 1010 b
B C XXh 00h
D E DAh F2h
H L DAh E6h
Флаги
Z
1
Область данных (ОЗУ)
А15-0 … DAE5h … DAF1h
D7-0
AAh … AAh
…