close

Вход

Забыли?

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

?

СПРГ 1 моя

код для вставкиСкачать
Обнинский Государственный Технический
Университет Атомной Энергетики
Кафедра КССТ
Лабораторная работа №1
"Раздельная трансляция"
Выполнил: Кузнецов А.
группа ВТ1-08
Проверил: Калинин Д.А.
г. Обнинск
2010
Цель работы: Осуществить раздельную трансляцию программы, написанной в лабораторной работе №4 предыдущего семестра, изучить директивы PUBLIC и EXTRN, изучить таблицы перекрестных ссылок и карту памяти (.map)
Краткая теория:
Для того, чтобы выполнить раздельную трансляцию нужно разделить программу (л.р. №3 пятого семестра обучения) на 2 модуля: первый модуль содержит процедуру, которая вызывается из второго - главного модуля. В первом модуле необходимо с использованием директивы PUBLIC указать на то, что процедура будет вызываться из другого модуля, соответственно в основном модуле необходимо с помощью директивы EXTRN указать, что вызываемая в данном модуле процедура описывается в другом - внешнем по отношению к нему модуле. Раздельная трансляция осуществляется следующим образом:
TASM main .asm /c /l
TASM second.asm /c /l
/c - указание на включение в файл листинга с информацией о перекрестных ссылках;
/l - указывает на необходимость создания файла листинга;
TLINK main.obj second.obj /m /s
/m - создать файл карты;
/s - в файл карты включается информация о сегментах (адрес, длина в байтах, класс, имя сегмента).
Основной модуль:
Turbo Assembler Version 3.1 14/03/11 23:53:29 Page 1
lab4.ASM
10000 .model small
20000 .stack 100h
30000 .data
40000 56 76 65 64 69 7465+ msg0 db "Vvedite predlogenie,v kotorom kolichestvo cifr men'she 10: $"
5 20 70 72 65 64 6C6F+
6 67 65 6E 69 65 2C20+
7 76 20 6B 6F 74 6F72+
8 6F 6D 20 6B 6F 6C69+
9 63 68 65 73 74 766F+
10 20 63 69 66 72 206D+
11 65 6E 27 73 68 6520+
12 31 30 3A 20 24
13003D 4B 6F 6C 2D 76 6F20+ msg1 db "Kol-vo cifr:$"
14 63 69 66 72 3A 2024
15004B 0D 0A 24 entr db 13,10,"$"
16004E FF*(??) buf db 255 dup(?)
17014D .code
180000 start:
19
20 extrn dopfile:near
210000 E8 0000e call dopfile
22
23 ; mov ax, @data
24 ; mov ds, ax
25
26 ; mov ah, 09h
27 ; lea dx, msg0
28 ; int 21h
29 ; xor dx,dx
30
31
32
330003 MYLOOP:
340003 B4 01 mov ah, 01h
350005 CD 21 int 21h
360007 3C 0D cmp al,0Dh ;Enter - закончить ввод
370009 74 0B je ex
38000B 3C 30 cmp al,'0'
39000D 7C F4 jl MYLOOP
40000F 3C 39 cmp al,'9'
410011 7F F0 jg MYLOOP
420013 42 inc dx ;то увеличиваем dx на 1
430014 EB ED jmp MYLOOP
440016 ex:
450016 83 C2 30 add dx, '0'
460019 89 94 004Er mov word ptr buf[si],dx
47001D C6 84 004Fr 24 mov byte ptr buf[si+1], 24h
48
490022 B4 09 mov ah, 09h
500024 BA 004Br lea dx, entr
510027 CD 21 int 21h
520029 BA 003Dr lea dx, msg1
53002C CD 21 int 21h
54002E BA 004Er lea dx, buf
550031 CD 21 int 21h
56
570033 B8 4C00 mov ax, 4c00h
Turbo Assembler Version 3.1 14/03/11 23:53:29 Page 2
lab4.ASM
580036 CD 21 int 21h
59 end start
Turbo Assembler Version 3.1 14/03/11 23:53:29 Page 3
Symbol Table
Symbol NameType Value Cref(defined at #)
??DATEText "14/03/11"
??FILENAMEText "lab4"
??TIMEText "23:53:29"
??VERSIONNumber 030A
@32BITText 0 #1
@CODEText _TEXT #1 #1 #17
@CODESIZEText 0 #1
@CPUText 0101H
@CURSEGText _TEXT #3 #17
@DATAText DGROUP #1
@DATASIZEText 0 #1
@FILENAMEText LAB4
@INTERFACEText 00H #1
@MODELText 2 #1
@STACKText DGROUP #1
@WORDSIZEText 2 #3 #17
BUFByte DGROUP:004E #1646 4754
DOPFILENear _TEXT:---- Extern #2021
ENTRByte DGROUP:004B #1550
EXNear _TEXT:0016 37 #44
MSG0Byte DGROUP:0000 #4
MSG1Byte DGROUP:003D #1352
MYLOOPNear _TEXT:0003 #3339 4143
STARTNear _TEXT:0000 #1859
Groups & SegmentsBit Size AlignCombineClass Cref(defined at #)
DGROUPGroup #1 1
STACK16 0100 ParaStackSTACK #2
_DATA16 014D WordPublicDATA #1 #3
_TEXT16 0038 WordPublicCODE #1 1 #17 17
Дополнительный модуль:
Turbo Assembler Version 3.1 14/03/11 23:53:29 Page 1
4-1.ASM
10000 .model small
20000 .stack 100h
30000 .data
40000 56 76 65 64 69 7465+ msg0 db "Vvedite predlogenie,v kotorom kolichestvo cifr men'she 10: $"
5 20 70 72 65 64 6C6F+
6 67 65 6E 69 65 2C20+
7 76 20 6B 6F 74 6F72+
8 6F 6D 20 6B 6F 6C69+
9 63 68 65 73 74 766F+
10 20 63 69 66 72 206D+
11 65 6E 27 73 68 6520+
12 31 30 3A 20 24
13003D .code
14 public dopfile
150000 dopfile proc near
160000 B8 0000s mov ax, @data
170003 8E D8 mov ds, ax
18
190005 B4 09 mov ah, 09h
200007 BA 0000r lea dx, msg0
21000A CD 21 int 21h
22000C 33 D2 xor dx,dx
23000E C3 ret
24000F dopfile endp
25 end dopfile
Turbo Assembler Version 3.1 14/03/11 23:53:29 Page 2
Symbol Table
Symbol NameType Value Cref(defined at #)
??DATEText "14/03/11"
??FILENAMEText "4-1"
??TIMEText "23:53:29"
??VERSIONNumber 030A
@32BITText 0 #1
@CODEText _TEXT #1 #1 #13
@CODESIZEText 0 #1
@CPUText 0101H
@CURSEGText _TEXT #3 #13
@DATAText DGROUP #1 16
@DATASIZEText 0 #1
@FILENAMEText 4-1
@INTERFACEText 00H #1
@MODELText 2 #1
@STACKText DGROUP #1
@WORDSIZEText 2 #3 #13
DOPFILENear _TEXT:0000 14 #15 25
MSG0Byte DGROUP:0000 #4 20
Groups & SegmentsBit Size AlignCombineClass Cref(defined at #)
DGROUPGroup #1 1 16
STACK16 0100 ParaStackSTACK #2
_DATA16 003D WordPublicDATA #1 #3
_TEXT16 000F WordPublicCODE #1 1 #13 13
Карта памяти:
Start Stop Length Name Class
00000H 00046H 00047H _TEXT CODE
00050H 001DAH 0018BH _DATA DATA
001E0H 003DFH 00200H STACK STACK
Detailed map of segments
0000:0000 0038 C=CODE S=_TEXT G=(none) M=LAB4.ASM ACBP=48
0000:0038 000F C=CODE S=_TEXT G=(none) M=4-1.ASM ACBP=48
0005:0000 014D C=DATA S=_DATA G=DGROUP M=LAB4.ASM ACBP=48
0005:014E 003D C=DATA S=_DATA G=DGROUP M=4-1.ASM ACBP=48
0005:0190 0100 C=STACK S=STACK G=DGROUP M=LAB4.ASM ACBP=74
0005:0290 0100 C=STACK S=STACK G=DGROUP M=4-1.ASM ACBP=74
Address Publics by Name
0000:0038 DOPFILE
Address Publics by Value
0000:0038 DOPFILE
Program entry point at 0000:0000
Вывод: Используя раздельную трансляцию при помощи директив PUBLIC и EXTRN можно минимизировать объем памяти, занимаемый программой. При помощи же листингов .lst модулей программы можно считать наиболее полную информацию о работе команд, сегментов и пр. Карта памяти, в свою очередь, используется для считывания информации о сегментах в каждом модуле. Эти выводы были показаны в ходе лабораторной работы.
Документ
Категория
Рефераты
Просмотров
8
Размер файла
52 Кб
Теги
спрг
1/--страниц
Пожаловаться на содержимое документа