Написать программу на языке ассемблера - Assembler

Узнай цену своей работы

Формулировка задачи:

1. Написать программу на языке ассемблера, в которой: – объявить массив типа BYTE на 256 элементов и заполнить массив кодами символов из таблицы ASCII; – занести в (5*n)-ый элемент массива (n – номер студента по журналу) значение из регистра AX; – поменять местами (3*n)-ый и (4*n)-ый элементы массива, используя команду XCHG; – скопировать 5 элементов массива, начиная с (2*n)-го элемента, в позиции элементов того же массива, начиная с (2*n+10)-го элемента, используя команду MOVSx и команды загрузки полного указателя; – заменить первые 10 элементов массива произвольными значениями, указанными в таблице перекодировки. 2. Исходные данные и результаты всех операций вывести на экран.

Решение задачи: «Написать программу на языке ассемблера»

textual
Листинг программы
  1. .model small
  2. .stack 256
  3. .data
  4.     array   BYTE    256 dup(?)
  5.     CrLf    db  0dh, 0ah, '$'
  6.     N   equ 13      ; номер студента по журналу
  7. .code
  8. main:
  9.     mov ax, @data
  10.     mov ds, ax
  11.  
  12. ;***************************
  13.     lea si, array
  14.     mov cx, 256
  15.     mov ax, 0
  16. @@FillArray:
  17.     mov [si], al
  18.     inc si
  19.     inc al
  20.     loop    @@FillArray
  21.  
  22.     call    ShowResult
  23. ;***************************
  24.     lea si, array
  25.     mov bx, 5
  26.     mov ax, N
  27.     mul bl
  28.     mov bx, ax
  29.  
  30.     mov ax, 1234h
  31.     mov [si+bx], ax
  32.  
  33.     call    ShowResult
  34. ;***************************
  35.     lea si, array+3*N
  36.     lea di, array+4*N
  37.  
  38.     mov al, [si]
  39.     xchg    al, [di]
  40.     xchg    al, [si]
  41.  
  42.     call    ShowResult
  43. ;***************************
  44.  
  45. @@exit: ;выход
  46.     mov ax, 4c00h ;стандартное завершение программы
  47.     int 21h
  48.  
  49. ShowResult proc
  50.     push    ax
  51.     push    cx
  52.     push    dx
  53.     push    di
  54.  
  55.     pop di
  56.     pop dx
  57.     pop cx
  58.     pop ax
  59.  
  60.     ret
  61. ShowResult endp
  62.  
  63. end main

Объяснение кода листинга программы

  1. Объявлены переменные:
    • array (массив) типа BYTE, размером 256 байт, заполненный пустыми значениями (?)
    • CrLf (символы новой строки) типа DB, содержащие байты 0dh и 0ah, за которыми следует символ доллара ($)
    • N (номер студента по журналу) типа WORD, равный 13
  2. Код начинается с установки сегмента данных на сегмент стека (256 байт)
  3. Далее, сегмент данных устанавливается на сегмент переменных (DS), используя адрес стека
  4. Заполняется массив пустыми значениями (алфавитные символы от A до Z)
  5. Вызывается процедура ShowResult для отображения результата заполнения массива
  6. Массив используется для хранения суммы номера студента и 5 (вероятно, для создания уникального идентификатора)
  7. Вычисляется сумма номера студента и 5, результат сохраняется в массиве
  8. Вызывается процедура ShowResult для отображения результата вычисления
  9. Код перемещает байты из одного места массива в другое, вероятно, для создания уникального идентификатора
  10. Вызывается процедура ShowResult для отображения результата обмена байтами
  11. Программа завершается стандартным способом с кодом 4c00h
  12. Процедура ShowResult используется для отображения результата выполнения программы
  13. Вызывается функция ret, чтобы вернуть управление в основную программу
  14. Код завершается

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы