Сложить два массива: найти ошибку - Assembler

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

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

text segment
;назначение сегментных регистров
 
assume CS:text, DS:data, SS:stk
stk segment stack
db 256 dup(0)
stk ends
data segment  ;начало сегмента  данных
    m1  db  11h,3h,4h,5h,6h ;исходный массив
    m2  db  9h,4h,3h,5h,4h ;исходный массив
    m3  db  5 dup(0) ;массив сумм
data ends
 
;начало сегмента программного кода
begin:
;Установка сегментных регистров DS, ES, SS
    mov AX,data   ;Обращение к массивам 
    mov DS,AX
    mov ES,AX
    lea si, m1
    lea bx, m2
    lea di, m3
    mov cx, 5
 
M5:
    lodsb           ;загрузить первый байт из массива m1 в al   
    ADD al,[bx]     ;сложить с элементом из массива m2
    DAA
    stosb           ; приемник,отправлять сумму в массив m3
    inc     bx      ;увеличить значение в bx на 1
    loop    M5 
    mov ax, 4c00h
    int     21h ; Вывести на экран массив m3
text ends
 
end begin

Решение задачи: «Сложить два массива: найти ошибку»

textual
Листинг программы
    mov AX,data ;помещаем адрес начала сегмента данных в регистр ax, чтобы далее переслать этот адрес в 
;сегментные регистры ds и es. регистр ax выступает здесь посредником, т.к. напрямую нельзя записывать в 
;сегментные регистры непосредственное значение.
    mov DS,AX  ;помещаем адрес начала сегмента данных в сегментный регистр ds
    mov ES,AX  ;помещаем адрес начала сегмента данных в сегментный регистр es
    lea si, m1    ;загружаем эффективный адрес начала первого массива в регистр si
    lea bx, m2   ;загружаем эффективный адрес начала второго массива в регистр bx
    lea di, m3    ;загружаем эффективный адрес начала результирующего массива в регистр di
    mov cx,5     ;в регистр cx помещается количество проходов цикла, каждый проход складывает элементы 
;двух массивов с ;одинаковыми индексами и кладет результат в результирующий массив по тому же индексу.

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

  1. mov AX,data — в регистр AX помещается адрес начала сегмента данных.
  2. mov DS,AX — в сегментный регистр DS помещается адрес начала сегмента данных.
  3. mov ES,AX — в сегментный регистр ES помещается адрес начала сегмента данных.
  4. lea si, m1 — в регистр SI загружается эффективный адрес начала первого массива.
  5. lea bx, m2 — в регистр BX загружается эффективный адрес начала второго массива.
  6. lea di, m3 — в регистр DI загружается эффективный адрес начала результирующего массива.
  7. mov cx,5 — в регистр CX помещается количество проходов цикла, равное 5.
  8. Далее, в зависимости от значения CX, происходит пять проходов цикла, в ходе которых элементы двух массивов суммируются и записываются в результирующий массив.

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


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

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

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