Резервування пам’ятi для стека та використання команд для роботи зi стеком

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

АП–31б Липка Наталiя

Лабораторна робота № 3

Тема: Резервування пам’ятi для стека та використання команд для роботи зi стеком.

Мета: Навчитися використовувати стек та задiяти регiстри процесора, а також його команди та директиви асемблера, якi забезпечують роботу зi стеком.

Iндивiдуальне завдання: Створити текстовий файл на асемблерi з використанням команд, якi звертаються до стеку. Отримати виконуючий файл. Використовуючи вiдладчик, створену програму завантажити до пам’ятi та виконати в режимi трасировки, фiксуючи при цьому моменти, пов’язанi з роботою зi стеком.

Опис виконання роботи:

                                                            Файл lab3.asm

.286

title      labrab_3

page       ,132

sts        segment    stack

dw         8 dup (?)

vst        label word

dw         12 dup (?)

db         3 dup ('stack   ')

tos        label word

sts        ends

data       segment

text1      db        'begin labrab_3',0ah,0dh,'$'

text2      db        'end labrab_3',0ah,0dh,'$'

data       ends

code       segment

assume     cs:code,ds:data,ss:sts

nach:      mov       ax,data

mov        ds,ax

mov        ax,sts

mov        ss,ax

lea        sp,tos

mov        ah,9h                ;  Вывод

lea        dx,text1              ; сообщения

int        21h                   ; на экран

; Использование стека командами int  и  iret

mov        sp,offset tos-24

int        12h

; Использование стека командами  call  и ret

; при ближнем вызове процедуры

lea        sp,vst-4

call       pr1

; Использование стека командами  call и ret

; при дальнем вызове процедуры

call       far ptr pr2

; Использование стека командами  pusha и popa

; (если имеем МП-80286)

lea        sp,tos

pusha

mov        ah,9h                ;  Вывод

lea        dx,text2              ; сообщения

int        21h                   ; на экран

popa

; Возврат в систему

mov        ah,4ch

int        21h

; ------------- Текст процедуры  pr1 ---------------

pr1        proc       near

; Переход содержимого регистра SP через ноль

mov        cx,5

mov        ax,'*\'

m1:        push       ax

loop       m1

mov        ax,'/\'

push       ax

mov        bp,sp

add        bp,12     

mov        sp,bp

ret        4

pr1        endp

; ------------- Текст процедуры  pr2 ---------------

pr2        proc       far

; Использование регистра BP для организации

; произвольного доступа к памяти, занятой стеком

mov        bp,sp

mov        bx,[bp-10]

mov        dh,byte ptr [bp+28]

add        bp,31

mov        dl,byte ptr [bp]

ret

pr2        endp

; Конец кодового сегмента и текста программы

code       ends

end        nach

                        Файл L3.lst

1                     .286

2                                 title    labrab_3

3                                          page     ,132

4 0000                                sts       segment  stack

5 0000  0008[                                   dw       8 dup (?)

6       ????              

7               ]  

8                    

9 0010                                vst       label    word

10 0010  000C[                                  dw       12 dup (?)

11      ????              

12              ]  

13                   

14 0028  0003[                                 db     3 dup ('stack   ')

15      73 74 61 63 6B    

16      20 20 20          

17              ]  

18                   

19 0040                               tos       label    word

20 0040                               sts       ends

21 0000                               data      segment

22 0000 62 65 67 69 6E 20   text1     db    'begin labrab_3',0ah,0dh,'$'

23       6C 61 62 72 61 62

24       5F 33 0A 0D 24         

25 0011 65 6E 64 20 6C 61   text2     db       'end labrab_3',0ah,0dh,'$'

26       62 72 61 62 5F 33

27       0A 0D 24               

28 0020                               data      ends

29 0000                               code      segment

30                                   assume   cs:code,ds:data,ss:sts

31 0000  B8 ---- R                    nach:     mov      ax,data

32 0003  8E D8                                  mov      ds,ax

33 0005  B8 ---- R                              mov      ax,sts

34 0008  8E D0                                  mov      ss,ax

35 000A  8D 26 0040 R                           lea      sp,tos

36 000E  B4 09                                mov       ah,9h    ; Вывод

37 0010  8D 16 0000 R                        lea   dx,text1  ; сообщения

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.