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

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

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

Студворк — интернет-сервис помощи студентам
В программе должна быть основная функция из которой идёт вызов всех подпрограмм, подпрограмма транспонирования и подпрограмма вывода транспонированной матрицы. Подпрограмма вывода должна быть в модуле описана как 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2012, 08:36
Ответы с готовыми решениями:

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

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

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

3
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
22.10.2012, 11:07
Основной модуль
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  [ТС]
Большое спасибо! Вы меня очень выручили
Только объясните пожалуйста зачем мы делаем вот это
Assembler
1
xor ax,ax
0
539 / 399 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
22.10.2012, 20:06
Эквивалентом этой команды является MOV AX,0. Т.е. это просто обнуление регистра, считается признаком "хорошего тона"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.10.2012, 20:06
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru