Обратный порядок - Assembler
Формулировка задачи:
Задача: вывести элементы массива в обратном порядке.
Написал так
Но я думаю, что это не совсем правильно. Подправьте меня, если нужно.
.model tiny .data arr db 1,2,3,4,5 n dw $-arr .code org 100h start: xor si,si xor ax,ax lea si,arr mov cx,n l1: push si inc si loop l1 l2: pop si loop l2 ret end start
Решение задачи: «Обратный порядок»
textual
Листинг программы
.model tiny .code org 100h start: xor si,si xor ax,ax lea si,arr mov cx,n l1: push byte ptr[si] inc si loop l1 l2: pop byte ptr[si] loop l2 ret arr db 1,2,3,4,5 n dw $-arr end start
Объяснение кода листинга программы
- Установка начального значения регистра SI в ноль.
- Установка начального значения регистра AX в ноль.
- Загрузка указателя на массив в регистр SI.
- Переменная N содержит размер массива в байтах, поэтому она вычисляется как разность между адресом последнего элемента массива и адресом первого элемента массива.
- Цикл l1: выполняет перебор элементов массива в обратном порядке.
- Цикл l2: выполняет вывод элементов массива в обратном порядке.
- Рекурсивный вызов функции l1: для продолжения перебора элементов массива.
- Рекурсивный вызов функции l2: для продолжения вывода элементов массива.
- Функция ret: завершает работу программы.
- Массив arr: содержит пять элементов от 1 до 5.
- Переменная n: содержит размер массива в байтах, равный 20.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д