Загрузка...

Хелпаните пж

Тема в разделе Реверсинг / Assembler создана пользователем cairs 12 апр 2023. 218 просмотров

Загрузка...
  1. cairs
    cairs Автор темы 12 апр 2023 224 14 ноя 2018
    Написать программу перезаписи массива данных (значения элементов массива задаются студентом произвольно) начинающегося с адреса ADR1 и заканчивающегося адресом ADR2 (длина массива указана в задании) в ячейки памяти, начинающиеся с адреса ADR3 и заканчивающиеся адресом ADR4. При перезаписи элементов массива над ними необходимо выполнить операцию, указанную в задании. Результат операций записать в регистр В.

    Длина массива = 5.
    ADR1 = 1000.
    ADR2 = 1004.
    ADR3 = 1010.
    ADR4 = 1014.
    Операция ИСКЛ-ИЛИ-НЕ.

    Плачу три символических рубля на лолз.
     
  2. ChatGPT
    ChatGPT 12 апр 2023 2254 14 мар 2023
    cairs, вот пример программы на языке ассемблера, которая перезаписывает массив данных с использованием операции ИСКЛ-ИЛИ-НЕ и записывает результат в регистр В:

    Код

    ORG 1000h ; начальный адрес массива данных

    DSEG ; сегмент данных
    ARRAY DB 1, 2, 3, 4, 5 ; массив данных
    RESULT DB ? ; результат операции

    CSEG ; сегмент кода
    START:
    MOV SI, ADR1 ; загрузка адреса начала массива данных
    MOV DI, ADR3 ; загрузка адреса начала ячеек памяти для записи результата
    MOV CX, LENGTH ; загрузка длины массива данных

    LOOP_START:
    MOV AL, [SI] ; загрузка значения элемента массива
    NOT AL ; инвертирование битов
    XOR AL, 0Fh ; применение операции ИСКЛ-ИЛИ-НЕ
    MOV [DI], AL ; запись результата в ячейку памяти
    INC SI ; переход к следующему элементу массива
    INC DI ; переход к следующей ячейке памяти для записи результата
    LOOP LOOP_START ; повторение цикла до конца массива

    MOV BX, RESULT ; загрузка адреса регистра В
    MOV AL, [BX] ; загрузка результата операции
    HLT ; завершение программы

    ADR1 DW 1000h ; адрес начала массива данных
    ADR2 DW 1004h ; адрес конца массива данных
    ADR3 DW 1010h ; адрес начала ячеек памяти для записи результата
    ADR4 DW 1014h ; адрес конца ячеек памяти для записи результата
    LENGTH DW 5 ; длина массива данных
    Программа загружает адрес начала массива данных в регистр SI, адрес начала ячеек памяти для записи результата в регистр DI и длину массива данных в регистр CX. Затем она перебирает все элементы массива, инвертирует их биты, применяет операцию ИСКЛ-ИЛИ-НЕ и записывает результат в ячейки памяти. Наконец, программа загружает результат операции в регистр В и завершается.
     
    1. Посмотреть предыдущие комментарии (1)
    2. ChatGPT
      cairs, вот код программы без комментариев:

      Код

      ORG 1000h

      DSEG
      ARRAY DB 1, 2, 3, 4, 5
      RESULT DB ?

      CSEG
      START:
      MOV SI, ADR1
      MOV DI, ADR3
      MOV CX, LENGTH

      LOOP_START:
      MOV AL, [SI]
      NOT AL
      XOR AL, 0Fh
      MOV [DI], AL
      INC SI
      INC DI
      LOOP LOOP_START

      MOV BX, RESULT
      MOV AL, [BX]
      HLT

      ADR1 DW 1000h
      ADR2 DW 1004h
      ADR3 DW 1010h
      ADR4 DW 1014h
      LENGTH DW 5
    3. attoru
      ChatGPT, ты такой умный нихуя себе
    4. cairs Автор темы
      attoru, нихуя не воркает
Top