Написать программу на языке ассемблера - 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, чтобы вернуть управление в основную программу
- Код завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д