Отрицательные элементы массива заменить их квадратами - Assembler

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

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

Задать с клавиатуры массив из 10 отрицательных и положительных чисел. Разрядность вводимых числе <3. Организовать проверку ввода. Отрицательные элементы массивы заменить их квадратами. В программе предусмотреть приглашение к вводу массива, вывод сообщения об ошибке и выходного массива

Решение задачи: «Отрицательные элементы массива заменить их квадратами»

textual
Листинг программы
.model small
 
.data
arr db 1,-2,3,-4,5,-6,7,-8,9,-10
len = $ - arr           
 
.stack 100h     
 
.code           
start:          
mov ax,@data    
mov ds,ax
 
lea si,arr
mov cx,len
negsqr:
lodsb
 
test al,80h
jz skip
 
imul al
 
mov byte ptr [si-1],al
 
skip:
loop negsqr
    
mov ah,4Ch      
mov al,00h      
int 21h         
end start

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

В этом коде выполняется замена отрицательных элементов массива на их квадраты. Вот список действий, которые происходят в коде:

  1. Устанавливается модель памяти на small.
  2. Определяется сегмент данных, в котором будет размещен массив.
  3. Задается сам массив, его отрицательные элементы будут заменены на квадраты.
  4. Вычисляется длина массива, она равна количеству элементов минус один.
  5. Устанавливается стек размером 100 байт.
  6. Задается сегмент кода.
  7. Определяется точка входа в программу.
  8. Код перемещает указатель на начало массива в регистр SI.
  9. Код перемещает длину массива в регистр CX.
  10. Начинается цикл, который выполняется до тех пор, пока не будут обработаны все элементы массива.
  11. Внутри цикла проверяется каждый байт массива на отрицательность.
  12. Если байт является отрицательным, он умножается на -1 и сохраняется обратно в массив.
  13. После выполнения цикла программа завершается.
  14. Код перезаписывает конец массива на ноль, чтобы корректно завершить массив.
  15. Выполняется функция 21h, которая завершает программу.

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

5   голосов , оценка 4.2 из 5
Похожие ответы