Загрузка...

Help solve the problem please

Thread in Reversing / Assembler created by Porev123 Jun 13, 2023. 269 views

  1. Porev123
    Porev123 Topic starter Jun 13, 2023 Banned 2 Jun 8, 2023
    Напишите программу, которая принимает на вход матрицу M с целыми положительными числами (другими словами, просто двумерный массив целых положительных чисел) размера rows x cols (где rows – число строк, cols –число столбцов), и возвращает транспонированную матрицу Mт(тоже двумерный массив целых положительных чисел) размера cols x rows. Если в M на пересечении i-ой строки j-ого столбца стояло число x, то на пересечении j-ой строки i-ого столбца матрице MTтоже будет стоять число x, другими словами MT[j] = M[j]
     
  2. свиньюпомыли
    свиньюпомыли Jun 13, 2023 свинью помыли 6101 Feb 29, 2020
    в чат жпт впиши а вообще ебать ты монстр на ассемблере писать
     
    1. Porev123 Topic starter
      свиньюпомыли, преподаватель такой да ты списываешь нахуй и выдумал вот эту хуйню только мне
    2. свиньюпомыли
      Porev123, ты можешь ему задавать вопросы по хуйне которой он высрал и если хоть немного тему знаешь то не обосрешься
  3. chaqee
    chaqee Jun 13, 2023 Banned 24 Jul 28, 2022
    чат джпт в помощь брат
     
  4. Хлев
    Хлев Jun 13, 2023 2134 Aug 18, 2017
    Ниже приведу пример программы на ассемблере NASM для хранения матрицы построчно и для процессора Intel x86. Пусть матрица M хранится в памяти начиная с адреса M_ADDR. Тогда программа будет выглядеть так:

    Code
    section .data
    rows dw 3 ; число строк матрицы
    cols dw 4 ; число столбцов матрицы
    M_ADDR dd 0x1000 ; адрес начала матрицы M
    MT_ADDR dd 0x2000 ; адрес начала матрицы MT
    section .text
    global _start
    _start:
    mov bx, [rows] ; bx = число строк
    mov cx, [cols] ; cx = число столбцов
    mov esi, [M_ADDR] ; esi = адрес начала матрицы M
    mov edi, [MT_ADDR] ; edi = адрес начала матрицы MT
    xor eax, eax ; eax = 0
    outer_loop:
    mov edx, eax ; edx = текущая строка
    mov ebx, cx ; ebx = число столбцов
    inner_loop:
    movzx ecx, word [esi + eax*2] ; ecx = M[edx][eax]
    mov word [edi + eax*2], cx ; MT[a][d] = M[d][a]
    add esi, 2 ; переходим к следующему элементу в строке M
    add edi, 2 ; переходим к следующему элементу в столбце MT
    dec ebx ; уменьшаем число столбцов
    jnz inner_loop ; если не все столбцы обработаны, то переходим к следующему
    add eax, 1 ; увеличиваем текущую строку
    cmp eax, bx ; сравниваем текущую строку с общим числом строк
    jl outer_loop ; если не все строки обработаны, то переходим к следующей
    mov eax, 1 ; код возврата 1 (успех)
    mov ebx, 0 ; код возврата 0 (ошибка)
    int 0x80 ; завершаем программу
    Приведенная программа копирует матрицу M в транспонированную матрицу MT. Для этого она проходится по строкам матрицы M и по столбцам матрицы MT, копируя каждый элемент M[d][a] в MT[a][d]. После завершения работы программа возвращает код возврата 1 (успех) и завершается. Если произошла ошибка, то программа возвращает код возврата 0 (ошибка) и завершается.
     
  5. piton27
    piton27 Jun 13, 2023 тут раздаю steam ключи https://t.me/razdachakluchey 18,620 Aug 2, 2018
    1. Porev123 Topic starter
Loading...
Top