Создания массива в Ассемблере - Assembler
Формулировка задачи:
Здравствуйте!
Не могу понять как возвести в квадрат только вторую строку, используя числа из первой. Помогите понять, что нужно написать в show2. Массив 10 на 2, используются числа кратные 5.
.model small .stack 100h .386 ;Разрешение трансляции команд процессора 386 .data mas db 20 dup (0) ;исходный массив .code start: mov ax, @data mov ds, ax mov ax, 0 ;обнуление ax mov cx, 20 ;значение счетчика цикла mov al, 5 ; счётчик для значений массива mov si, 0 ;индекс начального элемента в cx go: ;цикл инициализации mov mas[si], al ;запись в массив add al,5 ;увеличение значения следуещего элемента массива на 5 inc si ; переход к следующему элементу loop go ;повторить цикл mov si, 0 ;переход к 1-му элементу mov cx, 2 show1: ;цикл вывода элементов массива на экран push cx mov cx, 10 show2: mov al, mas[si] ;значение элемента массива помещается в AL mov ah, 0 ;AH = 0 mul ax ;возведение числа в квадрат call print ; вызов функции вывода числа в AX на экран inc si ;переход к следующему элементу loop show1 pop cx mov dl, 0DDh ;переход на следующую строку call pr mov dl, 0DAh call pr loop show1 mov ax,4C00h ;завершение программы int 21h print proc ;процедура для вывода элеманта массива на экран pusha ;вывод пробелов перед каждым числом pusha mov bx, 0 label0: inc bx mov dx, 0 mov cx, 10 div cx cmp ax, 1 jnc label0 neg bx add bx, 6 mov cx, bx lab: mov dl, 0D0h call pr loop lab popa ;вывод символа на экран mov cx, 0 label1: mov dx, 0 mov bx, 10 ;Заносим основание системы счисления, равное 10, в регистр BX div bx ;деление AX на BX mov bx, 0 push dx inc cx cmp ax, 0 ;сравнение AX с нулём jnz label1 ;если условие выполняется, то переход на метку label1 label2: pop dx call pr ;вывод на экран символа inc bx loop label2 ;повторение с метки label2, пока значение CX не станет равно нулю popa ret print endp pr proc ;процедура, выводящая символ на экран mov ah, 02h add dl, 30h int 21h ret pr endp end start
Решение задачи: «Создания массива в Ассемблере»
textual
Листинг программы
mas1 db 5,10,15,20,25,30,35,40,45,50 mas2 db 55,60,65,70,75,80,85,90,95,100
Объяснение кода листинга программы
mas1
- это переменная, которая содержит список чисел: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50.mas2
- это переменная, которая содержит список чисел: 55, 60, 65, 70, 75, 80, 85, 90, 95, 100.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д