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

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

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

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

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

textual
Листинг программы
.model small
.stack 256
.data
    array   BYTE    256 dup(?)
    CrLf    db  0dh, 0ah, '$'
    N   equ 13      ; номер студента по журналу
.code
main:
    mov ax, @data
    mov ds, ax
 
;***************************
    lea si, array
    mov cx, 256
    mov ax, 0
@@FillArray:
    mov [si], al
    inc si
    inc al
    loop    @@FillArray
 
    call    ShowResult
;***************************
    lea si, array
    mov bx, 5
    mov ax, N
    mul bl
    mov bx, ax
 
    mov ax, 1234h
    mov [si+bx], ax
 
    call    ShowResult
;***************************
    lea si, array+3*N
    lea di, array+4*N
 
    mov al, [si]
    xchg    al, [di]
    xchg    al, [si]
 
    call    ShowResult
;***************************
 
@@exit: ;выход
    mov ax, 4c00h ;стандартное завершение программы
    int 21h
 
ShowResult proc
    push    ax
    push    cx
    push    dx
    push    di
 
    pop di
    pop dx
    pop cx
    pop ax
 
    ret
ShowResult endp
 
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
Похожие ответы