Загрузка...

Помогите решить задачу, пожалуйста

Тема в разделе Реверсинг / Assembler создана пользователем Porev123 13 июн 2023. 235 просмотров

Загрузка...
  1. Porev123
    Porev123 Автор темы 13 июн 2023 Заблокирован(а) 2 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. somecomedy
    somecomedy 13 июн 2023 кря 6112 29 фев 2020
    в чат жпт впиши а вообще ебать ты монстр на ассемблере писать
     
    1. Porev123 Автор темы
      somecomedy, преподаватель такой да ты списываешь нахуй и выдумал вот эту хуйню только мне
    2. somecomedy
      Porev123, ты можешь ему задавать вопросы по хуйне которой он высрал и если хоть немного тему знаешь то не обосрешься
  3. chaqee
    chaqee 13 июн 2023 Заблокирован(а) 24 28 июл 2022
    чат джпт в помощь брат
     
  4. Хлев
    Хлев 13 июн 2023 568 18 авг 2017
    Ниже приведу пример программы на ассемблере NASM для хранения матрицы построчно и для процессора Intel x86. Пусть матрица M хранится в памяти начиная с адреса M_ADDR. Тогда программа будет выглядеть так:

    Код
    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 13 июн 2023 ЛУЧШИЕ ****** — lzt.lol/vproxy3 17 647 2 авг 2018
    1. Porev123 Автор темы
Top