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