1 / 9

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

Способы передачи параметров. 1) путем прямого обращения к памяти: а) при совместной трансляции, б) при раздельной трансляции; 2) через регистры; 3) через таблицу адресов; 4) передача параметров через стек. Передача параметров через стек. Пространство имен 1. Пространство имен 2.

iolana
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Способы передачи параметров 1) путем прямого обращения к памяти: а) при совместной трансляции, б) при раздельной трансляции; 2) через регистры; 3) через таблицу адресов; 4) передача параметров через стек

  2. Передача параметров через стек Пространство имен 1 Пространство имен 2 Основная программа Процедура <Имя>PROC RET <Имя>ENDP CALL <Имя> A B C BP=SP BP Aд.возв +4 @C +6 B +8 A

  3. Code segment assume CS:Code,DS:Code extrn Addd:Near A dw 34 B dw 25 D dw ? main proc far mov AX,Code mov DS,AX push word ptr A push word ptr B lea BX,D push BX call Addd mov AH,4ch int 21h main endp Code ends end main Code segment assume CS:Code,DS:Code public Addd Addd proc near push BP mov BP,SP mov AX,[BP+6] add AX,[BP+8] mov BX,[BP+4] mov 0[BX],AX ret Addd endp Code ends end Передача параметров через стек (2)(Ex6_3)

  4. Связь разноязыковых модулей 1. Передача управления 2. Передача данных 3. Совместимость данных

  5. Pascal – Assembler 1. Передача управления а) тип вызова: 1) описание – в секции реализации программы – near: 2) описание – в интерфейсной части модуля – far б) стандартный вход: push BP mov BP,SP sub SP,<память локальных переменных> <сохранение регистров: SP, SS, DS> в) стандартный выход: mov SP,BP pop BP ret <размер области параметров> г) управление компоновкой: В Pascal: В Assembler: процедуры и функции – external Сегмент кодов – Code Сегмент данных – Data Имена – public, extrn

  6. Pascal – Assembler (2) 2. Совместимость данных: Word, Integer – 2 байта, Byte, Char, Boolean – 1 байт, Pointer – 4 байта массив – располагается в памяти по строкам; строка – байт длины + строка 3. Параметры передаются через стек: а) по значению – в стеке копия значения; б) по ссылке – в стеке указатель на параметр (4 байта) 4. Результаты функций передаются через регистры: байт, слово – в AX; двойное слово, указатель – в DX:AX; строка – через указатель, помещенный в стек перед параметрами

  7. Pascal – Assembler (Ex6_4) Program pa1; {$l Ex6_4a.obj} Var a,b,c:integer; Function fun_near(x,y:integer):integer;external; Procedure proc_near(x:integer;var z:integer);external; Begin Writeln('Введите числа:'); Readln(a,b); proc_near(a,c); Writeln(′Функция - ',fun_near(a,b), ' процедура - ',c); end. Стек функции Стек процедуры BP=SP BP=SP BP BP Aд.возв Aд.возв +4 +4 y @z +6 x +8 x

  8. Pascal – Assembler (Ex6_4)(2) data segment byte public extrn b:word data ends code segment byte public assume CS:code,DS:data public fun_near,proc_near ; функция fun_near proc near push BP mov BP,SP mov AX,word ptr[BP+6] add AX,word ptr[BP+4]; результат в AX mov SP,BP pop BP ret 4 fun_near endp BP=SP BP Aд.возв +4 y +6 x

  9. Pascal – Assembler (Ex6_4)(3) BP=SP BP Aд.возв ; процедура proc_near proc near push BP mov BP,SP mov AX,word ptr[BP+8] add AX,b ; загрузка адреса результата les DI,dword ptr[BP+4] ; запись результата mov ES:[DI],AX mov SP,BP pop BP ret 6 proc_near endp code ends end +4 @z +8 x

More Related