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

38 0014  CD 21                                int     21h      ; на экран

39                   

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

41 0016  BC 0028 R                             mov      sp,offset tos-24

42 0019  CD 12                                  int      12h

43                   

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

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

46 001B  8D 26 000C R                           lea      sp,vst-4

47 001F  E8 0039 R                              call     pr1

48                   

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

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

51 0022  9A 0050 ---- R                               call   far ptr pr2

52                   

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

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

55 0027  8D 26 0040 R                           lea      sp,tos

56 002B  60                                     pusha

57 002C  B4 09                             mov      ah,9h       ;  Вывод

58 002E  8D 16 0011 R                    lea      dx,text2    ; сообщения

59 0032  CD 21                            int      21h        ; на экран

60 0034  61                                     popa

61                   

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

63 0035  B4 4C                                  mov      ah,4ch

64 0037  CD 21                                  int      21h

65                   

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

67 0039                                pr1      proc     near

68                   

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

70                   

71 0039  B9 0005                                mov      cx,5

72 003C  B8 2A5C                                mov      ax,'*\'

73 003F  50                            m1:      push     ax

74 0040  E2 FD                                  loop     m1

75 0042  B8 2F5C                                mov      ax,'/\'

76 0045  50                                     push     ax

77 0046  8B EC                                  mov      bp,sp

78 0048  83 C5 0C                                     add      bp,12     

79 004B  8B E5                                  mov      sp,bp

80 004D  C2 0004                                ret      4

81 0050                                pr1      endp

82                   

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

84 0050                                pr2      proc     far

85                   

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

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

88 0050  8B EC                                  mov      bp,sp

89 0052  8B 5E F6                               mov      bx,[bp-10]

90 0055  8A 76 1C                          mov      dh,byte ptr [bp+28]

91 0058  83 C5 1F                               add      bp,31

92 005B  8A 56 00                          mov      dl,byte ptr [bp]

93 005E  CB                                     ret

94 005F                                pr2      endp

95                   

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

97 005F                                code     ends

98                                         end      nach

Segments and Groups:

                N a m e         Length     Align     Combine Class

CODE . . . . . . . . . . . . . .      005F PARA NONE

DATA . . . . . . . . . . . . . .      0020 PARA NONE

STS  . . . . . . . . . . . . . .      0040 PARA STACK

Symbols:           

                N a m e         Type Value     Attr

M1 . . . . . . . . . . . . . . .      L NEAR     003F CODE

NACH . . . . . . . . . . . . . .      L NEAR     0000 CODE

PR1  . . . . . . . . . . . . . .      N PROC     0039 CODE Length = 0017

PR2  . . . . . . . . . . . . . .      F PROC     0050 CODE Length = 000F

TEXT1  . . . . . . . . . . . . .      L BYTE     0000 DATA

TEXT2  . . . . . . . . . . . . .      L BYTE     0011 DATA

TOS  . . . . . . . . . . . . . .      L WORD     0040 STS

VST  . . . . . . . . . . . . . .      L WORD     0010 STS

@CPU . . . . . . . . . . . . . .      TEXT  1287     

@FILENAME  . . . . . . . . . . .      TEXT  l3       

@VERSION . . . . . . . . . . . .      TEXT  510