close

Вход

Забыли?

вход по аккаунту

?

СПРГ ЛР-1 Череватенко

код для вставкиСкачать
Обнинский Институт Атомной Энергетики
Национального Исследовательского Ядерного Университета "МИФИ"
Кафедра КССТ
Отчет
по лабораторной работе №1
Тема: Сегментирование и связывание программ
Выполнил:студент группы ВТ2-С08
Череватенко М.Л.
Проверил:Калинин Дмитрий
Александрович
Обнинск, 2011 г.
Цель работы
 Осуществить раздельную трансляцию программы.
 Изучить директивы PUBLIC и EXTRN.
 Изучить таблицы перекрестных ссылок и карту памяти (.map)
Краткая теория
Для того чтобы выполнить раздельную трансляцию нужно разделить исследуемую программу на два файла: в одном файле должна находиться процедура - часть программы, а в другом - остальная часть программы с вызовом этой процедуры. В программе-процедуре необходимо с использованием директивы PUBLIC указать на то, что процедура будет вызываться из другого модуля, соответственно в основной программе необходимо с помощью директивы EXTRN указать, что вызываемая в данном файле процедура описывается в другом файле.
Раздельная трансляция осуществляется следующим образом:
TASM main .asm /c /l
TASM second.asm /c /l
/c - указание на включение в файл листинга с информацией о перекрестных ссылках;
/l - указывает на необходимость создания файла листинга;
TLINK main.obj second.obj /m /s
/m - создать файл карты;
/s - в файл карты включается информация о сегментах (адрес, длина в байтах, класс, имя).
Основной модуль (main.lst)
Turbo Assembler Version 3.1 01/03/11 20:48:41 Page 1
main.asm
10000 d segment
20000 52 65 73 75 6C 74 61+ ms db 'Resultat $:'
3 74 20 24 3A
4000B FF*(??) buffer db 255 dup(?)
5010A d ends
6
70000 c segment
8 assume cs:c,ds:d
9 extrn kursor:near
100000 start:
110000 B8 0000s mov ax,d
120003 8E D8 mov ds,ax
13
14 ;команда помещает адрес psp в bx
150005 B4 62 mov ah,62h
160007 CD 21 int 21h
170009 E8 0000e call kursor
18
19000C 8E C3 mov es,bx
20000E BE 0080 mov si,80h ;адрес данных командной строки
210011 26: 8A 24 mov ah,byte ptr es:[si] ;адрес, содержащий длину командной строки параметров
220014 BF 0000 mov di,0
23
240017 s1:
250017 80 FC 00 cmp ah,0 ;сравнение ah с 0
26001A 74 2D jes2 ;перейти, если равно
27001C FE CC dec ah ;вычитаем единицу из ah
28001E 46 inc si ;добавляетединицу к si
29001F 26: 8A 04 mov al,byte ptr es:[si]
30
310022 3C 41 cmp al,41h ; проверка на если < A (анг)
320024 72 F1 jbs1 ;перейти, если меньше
330026 3C EF cmp al,239 ; код >я
340028 77 ED jas1 ;перейти если больше
35002A 3C 5B cmp al,5bh ; если код <Z+1
36002C 72 14 jbs3 ;перейти, если меньше
37002E 3C 61 cmp al,61h ; если код <a
380030 72 E5 jbs1
390032 3C 7B cmp al,7bh ;код <z+1
400034 72 0C jbs3
410036 3C 80 cmp al,80h ;код <A(rus)
420038 72 DD jbs1
43003A 3C B0 cmp al,176 ;код <п
44003C 72 04 jbs3
45003E 3C E0 cmp al,224 ;код <р
460040 72 D5 jbs1
47
480042 s3:
490042 88 85 000Br mov byte ptr buffer[di],al ;записываем в наш буфер текущий символ
500046 47 inc di
510047 EB CE jmp s1
52
530049 s2:
540049 C6 85 000Br 24mov byte ptr buffer[di],24h ;конец строки "$"
55
56004E E8 0000e call kursor
57
Turbo Assembler Version 3.1 01/03/11 20:48:41 Page 2
main.asm
58 ;вывод "Resultat" на экран
590051 BA 0000r mov dx,offset ms
600054 B4 09 mov ah,9
610056 CD 21 int 21h
62
630058 E8 0000e call kursor
64
65 ;Вывод итоговой строки
66005B BA 000Br mov dx,offset buffer[0]
67005E B4 09 mov ah,9
680060 CD 21 int 21h
69
70 ;завершение программы
710062 B4 4C mov ah,4Ch
720064 CD 21 int 21h
730066 c ends
74 end start
Turbo Assembler Version 3.1 01/03/11 20:48:41 Page 3
Symbol Table
Symbol NameType Value Cref(defined at #)
??DATEText "01/03/11"
??FILENAMEText "main"
??TIMEText "20:48:41"
??VERSIONNumber 030A
@CPUText 0101H
@CURSEGText C #1 #7
@FILENAMEText MAIN
@WORDSIZEText 2 #1 #7
BUFFERByte D:000B #4 49 54 66
KURSORNear C:---- Extern #9 17 56 63
MSByte D:0000 #2 59
S1Near C:0017 #24 32 34 38 42 46 51
S2Near C:0049 26 #53
S3Near C:0042 36 40 44 #48
STARTNear C:0000 #1074
Groups & SegmentsBit Size AlignCombineClass Cref(defined at #)
C16 0066 Paranone #7 8
D16 010A Paranone #1 8 11
Подключаемый модуль (kursor.lst)
Turbo Assembler Version 3.1 01/03/11 20:49:50 Page 1
kursor.asm
10000 c segment
2 public kursor
30000 kursor proc near
40000 B4 02 mov ah,2
50002 B2 0D mov dl,0Dh
60004 CD 21 int 21h
70006 B2 0A mov dl,0Ah
80008 CD 21 int 21h
9000A C3 ret
10000B kursor endp
11000C c ends
12 end kursor
Turbo Assembler Version 3.1 01/03/11 20:49:50 Page 2
Symbol Table
Symbol NameType Value Cref(defined at #)
??DATEText "01/03/11"
??FILENAMEText "kursor"
??TIMEText "20:49:50"
??VERSIONNumber 030A
@32BITText 0 #1
@CODEText _TEXT #1 #1 #2
@CODESIZEText 0 #1
@CPUText 0101H
@CURSEGText _TEXT #2
@DATASIZEText 0 #1
@FILENAMEText KURSOR
@INTERFACEText 00H #1
@MODELText 2 #1
@STACKText DGROUP #1
@WORDSIZEText 2 #2
KURSORNear _TEXT:0000 3 #4 12
Groups & SegmentsBit Size AlignCombineClass Cref(defined at #)
DGROUPGroup #1 1
_DATA16 0000 WordPublicDATA #1
_TEXT16 000B WordPublicCODE #1 1 #2 2
Файл карты памяти (main.map)
Start Stop Length Name Class
00000H 00109H 0010AH D 00110H 00175H 00066H C 00176H 00180H 0000BH _TEXT CODE
00182H 00182H 00000H _DATA DATA
Detailed map of segments
0000:0000 010A C= S=D G=(none) M=MAIN.ASM ACBP=60
0011:0000 0066 C= S=C G=(none) M=MAIN.ASM ACBP=60
0017:0006 000B C=CODE S=_TEXT G=(none) M=KURSOR.ASM ACBP=48
0018:0002 0000 C=DATA S=_DATA G=DGROUP M=KURSOR.ASM ACBP=48
Address Publics by Name
0017:0006 KURSOR
Address Publics by Value
0017:0006 KURSOR
Program entry point at 0011:0000
Warning: No stack
Вывод
Осуществлена раздельная трансляция при помощи директив PUBLIC и EXTRN. Приведены файлы листинга (.lst) и файл карты памяти (.map). Рассмотрена структура .map файла. С объединенным сегментом проще работать, так как он представляет собой единое адресное пространство, для доступа к которому можно использовать один и тот же сегментный регистр.
Разделение программы на сегменты (сегментирование и связывание программ) необходимо, потому что реальные программы намного больше примера, приведенного в моей лабораторной работе. Так же сегментирование и связывание программ ускоряет процесс линковки.
5
Документ
Категория
Рефераты
Просмотров
13
Размер файла
32 Кб
Теги
спрг, череватенко
1/--страниц
Пожаловаться на содержимое документа