Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
1

Транспонирование матрицы с подпрограммами: преобразовать программу в модульную

22.10.2012, 08:36. Показов 1617. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В программе должна быть основная функция из которой идёт вызов всех подпрограмм, подпрограмма транспонирования и подпрограмма вывода транспонированной матрицы. Подпрограмма вывода должна быть в модуле описана как PUBLIC, а в другом сегменте как EXTRN. В качестве параметров использовать регистры. Я написала код транспонирования матрицы без подпрограмм, помогите пожалуйста преобразовать мою программу в модульную.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
SSTACK     SEGMENT  STACK  'STACK'
                DB   64 DUP('?')
     SSTACK     ENDS
 
     DSEG          SEGMENT   'DATA'
   N            DW    5
   NMAX  DW    6
     X           DB      '400000'
    DB      '150000'
    DB      '118000'
    DB      '111400'
    DB      '111120'
    DB      '111119$'
    
   
     DSEG          ENDS
 
     CSEG      SEGMENT  'CODE'
               ASSUME CS:CSEG,DS:DSEG,SS:SSTACK
 
     START     PROC 
               MOV  AX,DSEG
               MOV  DS,AX
 
               MOV   BX, OFFSET X
               MOV SI, 1
               MOV DI, NMAX
               MOV CX, N               
               
     M1:      
               PUSH CX 
     M2:                                 
               MOV AL, [BX][SI]
    MOV AH, [BX][DI]
               MOV [BX][SI], AH
               MOV [BX][DI], AL               
           INC SI 
               ADD DI, NMAX
               LOOP M2
               
               ADD BX, NMAX
               INC BX
               MOV SI, 1
               MOV DI, NMAX
               POP CX
               LOOP M1
               
    MOV AH,9    ;вывод матрицы
    MOV DX,OFFSET X
    INT 21H
               MOV  AH,4CH
               MOV  AL,0
               INT 21H
     START     ENDP
 
     CSEG      ENDS
               END  START
Добавлено через 19 часов 48 минут
Призываю о помощи ещё раз)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2012, 08:36
Ответы с готовыми решениями:

Разработать программу, осуществляющую транспонирование матрицы
Разработать программу, осуществляющую транспонирование матрицы, обращение матрицы. Исходные данные...

Напишите параллельную программу, реализующую транспонирование матрицы n×n.
Задание 3. Напишите параллельную программу, реализующую транспонирование матрицы n×n. ...

Составить программу, производящую умножение матрицы на матрицу и транспонирование
Составить программу производящую следующие операции над матрицами (умножение матрицы на матрицу)...

Не могу собрать модульную программу
скомпилировал несколько маленьких программ(для сортировки основной программы) плюс есть основная...

3
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
22.10.2012, 11:07 2
Основной модуль
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
SSTACK   SEGMENT  STACK  'STACK'
 DB   64 DUP('?')
SSTACK   ENDS
 
DSEG  SEGMENT Word Public  'DATA'
 public N  
 public NMax
 public X  
 N     DW    5
 NMAX  DW    6
 X   DB      '400000'
     DB      '150000'
     DB      '118000'
     DB      '111400'
     DB      '111120'
     DB      '111119$'
NewStr  db   0Ah,0Dh,'$'
DSEG  ENDS
 
     CSEG      SEGMENT  'CODE'
               ASSUME CS:CSEG,DS:DSEG,SS:SSTACK
 
Extrn Transpo : Proc ;процедура из модуля MODUL2
START     PROC 
               MOV  AX,DSEG
               MOV  DS,AX
    MOV AH,9    ;вывод матрицы
    MOV DX,OFFSET X
    INT 21H
    MOV AH,9    ;вывод матрицы
    MOV DX,OFFSET NewStr
    INT 21H
    xor ax,ax
    int 16h
    call Transpo
 
               
    MOV AH,9    ;вывод матрицы
    MOV DX,OFFSET X
    INT 21H
    xor ax,ax
    int 16h
    MOV  AH,4CH
    MOV  AL,0
    INT 21H
START     ENDP
 
CSEG      ENDS
      END  START
Модуль с процедурой транспонирования
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
DSEG   SEGMENT Word Public  'DATA'
Extrn   N     :Word
Extrn   NMAX  :Word
Extrn   X     :Byte
DSEG   ENDS
 
CSEG     SEGMENT  Public 'CODE'
      ASSUME CS:CSEG,DS:DSEG
Public TRanspo ; доступность процедуры
 
TRanspo   PROC near
 
               MOV  BX, OFFSET X
               MOV  SI, 1
               MOV  DI, NMAX
               MOV  CX, N               
               
     M1:      
               PUSH CX 
     M2:                                 
               MOV AL, [BX][SI]
    MOV AH, [BX][DI]
               MOV [BX][SI], AH
               MOV [BX][DI], AL               
           INC SI 
               ADD DI, NMAX
               LOOP M2
               
               ADD BX, NMAX
               INC BX
               MOV SI, 1
               MOV DI, NMAX
               POP CX
               LOOP M1
               ret
TRanspo   ENDP
 
CSEG      ENDS
          END  TRanspo
Каждый модуль транслируется отдельно. Получается два объектных файла: module1.obj и module2.obj
Собирается командой
TLink module1.obj + module2.obj
Получается в итоге module1.exe
1
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
22.10.2012, 19:34  [ТС] 3
Большое спасибо! Вы меня очень выручили
Только объясните пожалуйста зачем мы делаем вот это
Assembler
1
xor ax,ax
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
22.10.2012, 20:06 4
Эквивалентом этой команды является MOV AX,0. Т.е. это просто обнуление регистра, считается признаком "хорошего тона"
1
22.10.2012, 20:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2012, 20:06
Помогаю со студенческими работами здесь

Написать модульную программу расчета и печати оплаты за парковку
Здравствуйте! Изучаю функции...написал такой код на задачу, как его можно упростить за счет...

Разработать алгоритм и тесты, написать и отладить модульную программу с использованием подпрограммы для организации!
Вычислить суммы элементов векторов У(k) и X(L), находящиеся в интервале от а до b.

Программу с модулям и подпрограммами в Pascal
Дан текстовый файл, представляющий собой запись арифметического выражения, операндами которого...

Реализовать приведенную программу с подпрограммами
помогите кто знает, пожалуйста program a; uses crt; const n = 5; m = 7; tek_god...

Как составить программу с подпрограммами
Если в векторе есть хотя бы один элемент меньше чем число K, то все отрицательные элементы заменить...

Реализовать умножение матрицы, транспонирование матрицы, обращение матрицы
Реализовать умножение матрицы, транспонирование матрицы, (функция должна быть универсальной)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru