Сложить два массива: найти ошибку - 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 помещается количество проходов цикла, каждый проход складывает элементы ;двух массивов с ;одинаковыми индексами и кладет результат в результирующий массив по тому же индексу.
Объяснение кода листинга программы
- mov AX,data — в регистр 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 помещается количество проходов цикла, равное 5.
- Далее, в зависимости от значения CX, происходит пять проходов цикла, в ходе которых элементы двух массивов суммируются и записываются в результирующий массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д