Задать переменную по конкретному адресу памяти - Assembler
Формулировка задачи:
В emu8086 надо написать программу для суммирования элементов двух массивов и записать результат во второй массив.
Я программу написала и она прекрасно работает с одним но.
Сейчас код работает так, что исходные массивы помещаются прямо за кодом программы.
Мне надо поместить исходные массивы например в адрес 300h.
Такая запись не работает:
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
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 и М2) и инициализирует их значения.
- Заполняет массив М1 числами от 219 до 119 (с шагом -2).
- Заполняет массив М2 числами от 1 до 10 (с шагом +1).
- Выполняет побитовое сложение значений двух массивов и сохраняет результат в массив М2.
- Выводит результат суммирования на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д