Написать программу на языке ассемблера - 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
Объяснение кода листинга программы
- Объявлены переменные:
- array (массив) типа BYTE, размером 256 байт, заполненный пустыми значениями (?)
- CrLf (символы новой строки) типа DB, содержащие байты 0dh и 0ah, за которыми следует символ доллара ($)
- N (номер студента по журналу) типа WORD, равный 13
- Код начинается с установки сегмента данных на сегмент стека (256 байт)
- Далее, сегмент данных устанавливается на сегмент переменных (DS), используя адрес стека
- Заполняется массив пустыми значениями (алфавитные символы от A до Z)
- Вызывается процедура ShowResult для отображения результата заполнения массива
- Массив используется для хранения суммы номера студента и 5 (вероятно, для создания уникального идентификатора)
- Вычисляется сумма номера студента и 5, результат сохраняется в массиве
- Вызывается процедура ShowResult для отображения результата вычисления
- Код перемещает байты из одного места массива в другое, вероятно, для создания уникального идентификатора
- Вызывается процедура ShowResult для отображения результата обмена байтами
- Программа завершается стандартным способом с кодом 4c00h
- Процедура ShowResult используется для отображения результата выполнения программы
- Вызывается функция ret, чтобы вернуть управление в основную программу
- Код завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д