Программирование на Ассемблере для персональных компьютеров. Садовой Н.Н - 54 стр.

UptoLike

Составители: 

54
возврата. Каждая процедура «знает» свой тип вызова (одно или два слова)
и отступив от верхушки стека на +2 или на +4 читает параметры.
mov ax, bp+2 ; первый параметр при ближнем вызове
mov ax, bp+4 ; первый параметр при дальнем вызове
Сохранение регистров
Подпрограмма во время выполнения использует регистры процессора.
Значения, которые в них хранились, возможно, ещё
понадобятся основной
программе. По этой причине каждая подпрограмма обязана сохранить зна-
чения регистров перед началом их использования, а после завершения
работы перед возвратом восстановить их прежние значения. Для сохране-
ния регистров используется стек. В процессорах, начиная с 386, введены
команды
pusha
popa
сохраняющие в стеке, а после выполнения подпрограммы, восстанав-
ливающие значения всех
регистров.
6.4. Пример выполнения работы
Разработать подпрограмму, которая удаляет, начиная с задан-
ной позиции строки, указанного числа символов. Написать програм-
му, которая вводит с клавиатуры строку, позицию и длину удаляемой
части строки, удаляет указанную часть и выводит строку.
Текст программы:
data segment
MESS1 db 0dh,0ah, "Введите строку:", 0dh,0ah, "$"
MESS2 db 0dh,0ah, "Введите позицию:", 0dh,0ah, "$"
возврата. Каждая процедура «знает» свой тип вызова (одно или два слова)
и отступив от верхушки стека на +2 или на +4 читает параметры.

   mov    ax, bp+2    ; первый параметр при ближнем вызове
   mov    ax, bp+4    ; первый параметр при дальнем вызове


                         Сохранение регистров
   Подпрограмма во время выполнения использует регистры процессора.
Значения, которые в них хранились, возможно, ещё понадобятся основной
программе. По этой причине каждая подпрограмма обязана сохранить зна-
чения регистров перед началом их использования, а после завершения
работы перед возвратом восстановить их прежние значения. Для сохране-
ния регистров используется стек. В процессорах, начиная с 386, введены
команды

      pusha
      popa
   сохраняющие в стеке, а после выполнения подпрограммы, восстанав-
ливающие значения всех регистров.

                       6.4. Пример выполнения работы

          Разработать подпрограмму, которая удаляет, начиная с задан-
      ной позиции строки, указанного числа символов. Написать програм-
      му, которая вводит с клавиатуры строку, позицию и длину удаляемой
      части строки, удаляет указанную часть и выводит строку.

   Текст программы:
   data   segment
    MESS1      db 0dh,0ah, "Введите строку:", 0dh,0ah, "$"
    MESS2      db 0dh,0ah, "Введите позицию:", 0dh,0ah, "$"

                                                                    54