plo_lab1_asm

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
1. С помощью текстового редактора создал ассемблерную программу, выполняющую загрузку
рабочих регистров АХ, ВХ, СХ и DX и осуществляющую простые регистровые операции типа сложение:
Текст программы приведен ниже:
+---------------------------------------------------------------------------+
| .model tiny ; Распределение памяти для .COM файла |
| .code ; Начало сегмента кодов |
| org 100h ; Смещение входа |
| (Код СОМ-программ начинается с адреса 100h)|
| ;___________________________________________________________ |
| start: ; Начало программы |
| ;____________________________________________________________ |
| MOV ax, word ptr massiv+0 ; Заполнение регистров |
| MOV bx, word ptr massiv+1 ; |
| MOV cx, word ptr massiv+2 ; |
| MOV dx, word ptr massiv+3 ; |
| ADD AL, BH ; Сложить регистр АL и ВH. Результат в AL |
| ADD CX, BX ; Сложить регистр CХ и ВХ. Результат в CL |
| ADD DL, DH ; Сложить регистр DL и DH. Результат в DL |
| int 20h ; Выход в DOS (!!!!) |
| ;____________________________________________________________ |
| massiv: ; Данные программы – Ваша фамилия И.О. (Лат) |
| db ‘ФамилияИО’ |
| ;____________________________________________________________ |
| |
| ;____________________________________________________________ |
| end start ; Конец для транслятора |
+---------------------------------------------------------------------------+
2. Оттранслировал программу и создал загрузочный модуль.
транслирование выполняется следующей командой:
tasm name.asm,
Линкование:
tlink /t /x name.obj, где "name" - имя файла.
Ошибок в процессе транслирования и линкования не обнаружено.
3. Запустил отладчик программ TD и запустил .com файл следующей командой:
td name.com, где "name" - имя файла.
4. Исходное содержимое всех регистров следующее:
ax 0000 c = 0
bx 0000 z = 0
cx 0000 s = 0
dx 0000 o = 0
si 0000 p = 0
di 0000 a = 0
bp 0000 i = 1
sp FFFF d = 0
ds 0B72
es 0B72
ss 0B72
cs 0B72
ip 0100
5. Исполнительный адрес первой команды: 0100.
6. Пошагово проверил правильность выполнения программы. Результаты приведены ниже:
N Команда Комментарий Ручная проверка
+-------------------+-----------------------------------------------+----------+
|1. mov ax,[0117] | заносим в регистр AX значение ячейки 0117 | FE83 |
|-------------------+-----------------------------------------------+----------|
|2. mov bx,[0118] | заносим в регистр BX значение ячейки 0118 | 06FE |
|-------------------+-----------------------------------------------+----------|
|3. mov cx,[0119] | заносим в регистр CX значение ячейки 0119 | 7406 |
|-------------------+-----------------------------------------------+----------|
|4. mov dx,[011A] | заносим в регистр DX значение ячейки 011А | 0574 |
|-------------------+-----------------------------------------------+----------|
|5. add al,bh | складываем младшее значение регистра AX | |
| | со старшим значением регистра BX и запи- | FE89 |
| | сываем в регистр AX | |
|-------------------+-----------------------------------------------+----------|
|6. add cx,bx | складываем общее значение регистра CX | |
| | с общим значением регистра BX и записыва- | 7B04 |
| | ем в регистр BX | |
|-------------------+-----------------------------------------------+----------|
|7. add dl,dh | складываем младшее значение регистра DX | |
| | со старшим значением и записываем в ре- | 0579 |
| | гистр DX | |
|-------------------+-----------------------------------------------+----------|
|8. int 20 | заканчиваем выполнение программы | |
+-------------------+-----------------------------------------------+----------+