Создания массива в Ассемблере - 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.