1.3 Використання стеку.
На вершину стеку завжди вказує регістр SP. Для доступу до даних в стеку можна використати режим адресації, де базовим є регістр SP:
MOV AX, [BP+4]
Дана інструкція завантажує в регістр AX словом, яке знаходиться в стеку із зміщенням 4.
Однак частіше для роботи зі стеком використовують інструкції PUSH i POP. Інструкція PUSH зберігає операнд у вершині стеку, а POP витягує значення зі стеку і зберігає його в операнді. Приклад:
MOV AX, 1
PUSH AX
POP BX
1.4 Обмін даними
Виконати обмін вмісту двох операндів дозволяє інструкція XCHG. Приклад:
XCHG AX, DX
аналогічна
PUSH AX
MOV AX, DX
POP DX
1.5 Приклади програм на ассемблері
Програма 1: ADDSUB.ASM
1: %TITLE “Використання команд ADD,SUB, INC, DEC”
2:
3: IDEAL
4:
5: MODEL SMALL
6: STACK 256
7:
8: DATASEG
9:
10: ExCode DB 0
11: Count DW 1
12:
13: CODESEG
14:
15: Start:
16: MOV AX,@DATA
17: MOV DS,AX
18:
19: MOV AX,4
20: MOV BX,2
21: ADD AX,BX
22:
23: MOV CX,8
24: ADD CX,[Count]
25:
26: ADD [Count],CX
27:
28: INC [Count]
29: DEC [Count]
30: INC AX
31: DEC CX
32:
33: Exit:
34: MOV AH,04Ch
35: MOV AL,[EXCODE]
36: int 21h
37:
38: END Start
Програма 2. MULDIV.ASM
1: %TITLE “Використання команд MUL,DIV”
2:
3: IDEAL
4:
5: MODEL SMALL
6: STACK 256
7:
8: DATASEG
9:
10: exCode DB 0
11: opByte DB 8
12: opWord DW 100
13: sourceByte DB 64
14: sourceWord DW 4000
15:
16: CODESEG
17:
18: Start:
19: MOV AX,@DATA
20: MOV DS,AX
21:
22: MOV AL,[opByte]
23: MUL [sourceByte]
24:
25: MOV AX,[opWord]
26: MUL [sourceWord]
27:
28: MOV AX,[opWord]
29: MUL AX
30:
31: MOV AX,[opWord]
32: DIV [sourceByte]
33:
34: MOV AX,[opWord]
35: MOV DX,[opWord]
36: DIV [sourceWord]
37:
38: Exit:
39: MOV AH,04Ch
40: MOV AL,[exCode]
41: int 21h
42:
43: END Start
Використання Turbo Debuggtr.
Програми слід асемблювати і компонувати з опціями, які добавляють відлагоджувальну інформацію в *.OBJ- та *.ЕХЕ -файли. В результаті Turbo Debugger отримає інформацію про програмні символи, розташування змінних, організацію сегментів і т.д. Для підготовки прогрми для відлагодження введіть такі команди:
tasm /zi ім'я.asm
tlink /v ім'я.obj
Без цих опцій Turbo Debugger все одно завантажить програму, але буде показувати тільки дизасемльовані машинні коди. З опціями командної стрічки, асемблер може показувати мітки, структури, змінні, рядки вихідної програми та іншу інформацію.
Turbo Debugger може поступово виконувати асемблерну програму і дозволяє заглянути в пам'ять та побачити реальні байти, з яких складається програма і дані. Можна використовувати Turbo Debugger для пошуку і виправлення помилок, а також як персонального вчителя при вивченні мови Assembler, який може виконувати тестові програми і дозволяє спостерігати за результатами виконання окремих машинних команд.
Для виходу з TurboDebugger натисніть <Alt+X>.