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

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

  1. mas1 - это переменная, которая содержит список чисел: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50.
  2. mas2 - это переменная, которая содержит список чисел: 55, 60, 65, 70, 75, 80, 85, 90, 95, 100.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

7   голосов , оценка 4 из 5