Способы передачи параметров.

1). Передача характеристик через РОН.

Плюсы: резвый и удачный;

Недочеты: ограничен в размерах (менее 5).

Применение: написание операционных систем (печать строчки. и др.).

2). Передача через общую область памяти. (общие переменные)

Общие переменные описываются последующим образом,

в вызывающей:

PUBLIC перечень имен (имена переменных либо меток).

В вызываемой процедуре:

EXTERN {имя параметра, тип}

Пример Способы передачи параметров.:

;головная программка

DATA Segment

EXTERN A:WORD, R:WORD

DATA ENDS

CODE Segment PUBLIC

ASSUME DS:DATA,CS:CODE

PUBLIC PUB_PROC FAR

start:

mov AX, DATA

mov DS, AX

CALL far ptr pub_proc

mov cx, ds:A

sub cx, 2

add cx, ds:R

mov ds:A,cx

ret

CODE ENDP

END start

;Модуль, задающий общие переменные и процедура.

DATA Segment

PUBLIC A, R

A DW 10

B Способы передачи параметров. DW 5

C DW 3

B DW 1

DATA ENDS

CODE Segment PUBLIC

ASSUME DS:DATA,CS:CODE

Public Pub_Proc

Pub_Proc Proc Far

mov AX, B

add AX, C

mov R, AX

ret

Pub_Proc ENDP

CODE ENDS

END

3). Передача характеристик через стек.

Таковой способ применим не только лишь меж ассемблерными модулями, да и с различными языками. STDCALL- стандартная связь процедур по Способы передачи параметров. характеристикам. Главным средством доступа к характеристикам является BP, для которого:

- его значение при запуске процедуры сохраняется в стеке;

- доступ к характеристикам осуществляется при помощи базисной адресации

Структура стека на момент начала работы с параметрами вызванной процедуры:

(Этот вариант употребляется в языке С.)

BP ß SPàBP
CS:IP ß (BP Способы передачи параметров.)+2
Par1 ß (BP)+4/6
Par2 ß (BP)+6/8
………
ParN ß (BP)+(N+4)/(N+6)
Стек

Вариант для Pascal таковой же, кроме порядка характеристик.

Пример:

;main

CODE Segment

EXTERN ADD3UP

Push AX

Push BX

Push CX

CALL ADD3UP

ADD SP,6

CODE ENDS

END start

;процедура обработки

ADD3UP Proc NEAR

Public ADD3UP

Push BP

mov BP, SP

mov AX, [BP+4]

add AX, [BP+6]

add AX, [BP+8]

pop BP

ret

ADD Способы передачи параметров.3UP ENDP

4). Передача характеристик через поток кода.

Передаваемые характеристики располагаются конкретно в коде программки, сходу за вызывающей командой.

Пример:

Call Print_It

db ‘печатная строчка’

;продолжение программки.

Плюсы: возможность использования хоть какого числа характеристик;

Недочеты: доступ косвенный, как следует неспешный.

5). Передача характеристик результата.

Передача характеристик результатов может быть реализована через стек Способы передачи параметров., AX (BYTE, WORD), DX:AX (DWORD), ST(0)- верхушка стека x87 (FLOAT).

Режим адресации в памяти и процессоре Intel 86.

Режимом либо методом адресации именуют функцию нахождения операндов.

Операнды в программке могут задаваться в:

1) РОНах

2) Конкретно в коде программки

3) Ячейках памяти (прямо либо косвенно)

4) В портах ввода/вывода

Режим адресации Обозначение в ассемблере Регистр. сектор. по Способы передачи параметров. дефлоту Пример использования
регистровый AX/AL (16/8) ----- Mov AX,CX; Mov AL,BH
Конкретная адресация Const (16/8) ----- Mov AX,100H; Mov BL,-24H
Ровная адресация Метка, задающая смещение относительно данных. DS Mov Ax,TAB (обычно употребляется для задания статических переменных)
Косвенная адресация [BX], [BP] [DI], [SI] (>i386 можно Способы передачи параметров. исп. все регистры) DS, SS DS (ES), SS Mov AL,[DI] Mov AX, ES:[BX]
Базисная адресация [BX]+смещение [BP]+ смещение DS ES Mov AX, 4[BP] (значит 4+BP) Mov CX, [BP]+2 Mov AX, CS:[BX]+4
Индексная адресация [SI]+смещение [Di]+ смщение DS DS (ES) Mov AL,B, TAB (исп. для строк Способы передачи параметров. либо массивов)
Базово – индексная адресация [BX]:[DI]+смещение [BX]:[SI]+смещение [BX]:[BP]+смещение DS, SS DS, SS Mov AX,ES:VALUE [BX]:[DI] (VALUE+BX+DI)
Базово – индексная с масштабированием (начиная с i386) [EAX][ESX*m]+смещение m=1, 2, 4, 8 Mov Ax,4*[BP] Mov CX,[BP]*2+2

1) Операнды могут размещаться Способы передачи параметров. в всех РОНах и сегментных регистрах. В тексте программки указывается заглавие соответственного регистра.

2) Все арифметические команды (не считая деления) позволяют указывать один из операндов конкретно в тексте программки.

3) Если известен адресок операнда в памяти, можно использовать этот адресок. Ровная адресация время от времени именуется адресацией по смещению (Mov Способы передачи параметров. AX,ES:2CH – из ячейки с адресом 2СН сектора EXTRA содержимое пересылается в AX).

4) Адресок операнда в памяти можно хранить в любом из обозначенных регистрах ([BX]:[BP]; [DI]:[SI]). После i386 в всех регистрах.

Mov AX,ES:[DI] – из регистра [DI] выбирается адресок операнда, ищем его в секторе EXTRA и пересылаем Способы передачи параметров. в AX.

5) Базисную адресацию используем, когда в регистре находится адресок начала структуры данных (вектора, строчки и т.д.), а доступ нужно выполнить к какому или элементу этой структуры (Mov AX,4[BP] – содержимое является адресом операнда в AX). Другое применение – это доступ из подпрограмм к характеристикам, переданных в STACK Способы передачи параметров..

6) Для нахождения частей массива

7) Для двумерных массивов и массивов записи

8) Расширенный режим (употребляется в микропроцессорах выше i386).


sposobi-restrukturizacii-organizacionnoj-podsistemi.html
sposobi-sistematicheskoj-fiksacii-dinamiki-detskogo-razvitiya-v-gkp-m-p-m-p.html
sposobi-slovoobrazovaniya-v-sovremennom-anglijskom-yazike.html