Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АССЕМБЛЕР И ПРОГРАММИРОВАНИЕ ДЛЯ IBM PC.doc
Скачиваний:
48
Добавлен:
25.05.2014
Размер:
3.21 Mб
Скачать

13D40 плюс 0000. Обратите внимание, что основная программа начинается по

адресу в регистре CS, содержащему шест.13D2, т.е. адрес 13D20. Из карты

компановки видно, что подпрограмма начинается по относительному адресу

шест.0020. Складывая эти два значения, получим действительный адрес

кодового сегмента для подпрограммы:

Адрес в CS 13D20

Смещение в IP 0020

Действительный адрес 13D40

Компоновщик определяет это значение точно таким же образом, и подставляет

его в операнд команды CALL.

ПРОГРАММА: ИСПОЛЬЗОВАНИЕ ДИРЕКТИВЫ PUBLIC В КОДОВОМ СЕГМЕНТЕ

________________________________________________________________

__________________________________________________________________________

page 60,132

TITLE CALLMUL2 (EXE) Вызов подпрограммы умнож.

EXTERN SUBMUL:FAR

;----------------------------------------------

0000 Stacksg segment para stack 'Stack'

0000 40 [????] DW 64 DUP(?)

0080 STACKSG ENDS

;----------------------------------------------

0000 DATASG SEGMENT PARA 'Data'

0000 0140 QTY DW 0140H

0002 2500 PRICE DW 2500H

0004 DATASG ENDS

;----------------------------------------------

0000 CODESG SEGMENT PARA PUBLIC 'Code'

0000 BEGIN PROC FAR

ASSUME CS:CODESG,DS:DATASG,SS:STACKSG

0000 1E PUSH DS

0001 2B C0 SUB AX,AX

0003 50 PUSH AX

0004 B8 ---- R MOV AX,DATASG

0007 8E D8 MOV DS,AX

0009 A1 0002 R MOV AX,PRICE ;Загрузить стоимость

000C 8B 1E 0000 R MOV BX,QTY ; и количество

0010 9A 0000 ---- E CALL SUBMUL ;Вызвать подпрограмму

0015 CB RET

0016 BEGIN ENDP

0016 CODESG ENDS

END BEGIN

________________________________________________________________________

Segments and Group:

N a m e Size Align Combine Class

CODESG . . . . . . . . . . . . .0016 PARA PUBLIC 'CODE'

DATASG . . . . . . . . . . . . .0004 PARA NONE 'DATA'

STACKSG. . . . . . . . . . . . .0080 PARA STACK 'STACK'

Symbols:

N a m e Type Value Attr

BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Lenght=0016

PRICE. . . . . . . . . . . . . L WORD 0002 DATASG

QTY. . . . . . . . . . . . . . L WORD 0000 DATASG

SUBMUL . . . . . . . . . . . . L FAR 0000 External

page 60,132

TITLE SUBMUL2 Вызываемая подпрограмма умножения

;----------------------------------------------