Задать переменную по конкретному адресу памяти - Assembler

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

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

В emu8086 надо написать программу для суммирования элементов двух массивов и записать результат во второй массив. Я программу написала и она прекрасно работает с одним но. Сейчас код работает так, что исходные массивы помещаются прямо за кодом программы.
name "text"
org 100h
 
MOV si, 0
Mov CX, 10   
 
Sum:    
xor dx,dx       
Mov DL,[M2+si]
Add DL,[M1+si]
Mov [M2+si],DL
Inc si
LOOP Sum
 
ret 
M1 DB 10 DUP (1)
M2 DB 10 DUP (219)
end
Мне надо поместить исходные массивы например в адрес 300h. Такая запись не работает:
ret 
ORG 300h
M1 DB 10 DUP (1)
M2 DB 10 DUP (219)
end

Решение задачи: «Задать переменную по конкретному адресу памяти»

textual
Листинг программы
name "TwoArrays"
org 100h
M1 equ 300h
M2 equ 310h
 
;заполнение массива М1
mov bx, offset M1 
mov cx,10
mov al,219
c:
mov [bx],al
inc bx
loop c
 
;заполнение массива М2
mov bx, offset M2
mov cx,10
mov al,1
k:
mov [bx],al
inc bx
loop k
 
;суммирование
MOV si, 0
Mov CX, 10   
Sum:    
xor dx,dx       
Mov DL,[M2+si]
Add DL,[M1+si]
Mov [M2+si],DL
Inc si
LOOP Sum
 
end

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

На языке ассемблера написан код, который выполняет следующие действия:

  1. Задаёт начальный адрес для двух массивов (М1 и М2) и инициализирует их значения.
  2. Заполняет массив М1 числами от 219 до 119 (с шагом -2).
  3. Заполняет массив М2 числами от 1 до 10 (с шагом +1).
  4. Выполняет побитовое сложение значений двух массивов и сохраняет результат в массив М2.
  5. Выводит результат суммирования на экран.

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


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

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

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