|
Вам при-
дется перепроектировать все интерфейсы модулей.
Другой трудностью является то, что необходимо непрерывно сох-
ранять используемую дорожку, на которую выводится каждый регистр.
Эта игра "кто первый" может наскучить даже наиболее опытному иг-
року. Особое расстройство вызывает случай, когда принято решение,
что регистр X освободился и, следовательно, освободилась програм-
ма модуля. |
avast 4 professional edition |
|
|
Позднее, когда принимается решение об использовании
того же самого модуля в другом месте, может оказаться, что не ос-
вободился как раз только регистр X. Так команда PUSH (запомнить
содержимое регистра в стеке) записывает в стек значение, содержа-
щееся в регистре X, затем выполняется вызов и команда POP (выб-
рать значение регистра из стека) выбирает из стека значение ре-
гистра и заносит его в регистр X. |
panda |
|
|
Таким образом, в результате та-
кого оборота X содержит возвращаемое значение. Видите, что теперь
освободилось? И так случается очень часто.
Практически, ограничением передачи параметров через регистры
является ограничение объема информации, передаваемой через ре-
гистры, до 16 бит, т.е. |
win rar |
|
|
avast edition, norton, avast 4 home, английский словарь, антивирус касперского, .
текстовые редакторы
|
Заметим, что различие произ-
водится в зависимости от того, требуют ли модули входных парамет-
ров, хотя как программист вы интуитивно осознаете различие.
Опции передачи параметров
Для программ, будь они подпрограммами или функциями, принима-
ющими входные параметры, должна быть разрешена проблема передачи
им параметров. При программировании на языке высокого уровня в
этом отношении программист обычно не имеет выбора. В языке Ас-
семблер таких опций много. Мы рассмотрим все опции, хотя исполь-
зовать некоторые из них необходимо с осторожностью.
Передача через регистры
Наиболее общим способом передачи данных при программировании
на языке Ассемблер является способ передачи данных через регист-
ры. Немедленная доступность и высокая скорость делают их основны-
ми средствами для решения поставленной задачи. Регистры всегда
отделены от кода операции, независимо от используемой программной
среды. Почти все вызываемые функции MS-DOS передают свои данные
таким способом. Короткие программы языка Ассемблер, являющиеся
интерфейсными программами с MS-DOS, для манипулирования данными
часто используют те же самые регистры, которые требуют функции,
вызывающие эти данные MS-DOS.Это приводит к ощущению создания па-
- 2-8 -
раметра в том же регистре, что и MS-DOS.
Одной из трудностей, возникающей при использовании этого спо-
соба, является то, что количество регистров, имеющееся в наличии,
ограничено. Если имеется программа, требующая большее количество
регистров, чем имеется в наличии, то это вызывает лишние хлопоты.
Новые микропроцессоры имеют меньшие ограничения, чем старые, но
количество регистров все равно ограничено. Кроме того, если необ-
ходимо переместить часть программы из одного типа процессора в
другой, то ситуация, в которой два процессора могут совместно ис-
пользовать один и тот же набор регистров, маловероятна.
|
|
|