В поле с заданным начальным адресом заменить элементы нулями - Assembler
Формулировка задачи:
Нужно написать программу на Assembler по условиям. Хотя бы понять как делать.
2. В поле длиной 17510 с начальным адресом 0210 заменить нулем все элементы, значения которых меньше 2010.
Решение задачи: «В поле с заданным начальным адресом заменить элементы нулями»
textual
Листинг программы
;---- задание #2 .... mov cx,17510 ; длина поля в байтах shr cx,1 ; разделив её на 2, получим в словах mov si,210 ; начальный адрес (источник) mov di,si ; ..он-же приёмник @1: lodsw ; читаем из SI (si=si+2) cmp ax,2010 ; пропускаем, если больше ja next ; xor ax,ax ; иначе: AX = 0 next: stosw ; перезаписываем элемент массива loop @1 ; мотаем цикл СХ-раз..
Объяснение кода листинга программы
В данном коде выполняется следующая задача:
- Изначально в поле с заданным начальным адресом (предположительно в памяти) находятся некоторые данные.
- Длина этого поля в байтах равна 17510.
- Далее, с помощью операции
shr cx,1
длина поля делится на 2, и в результате в слове (слово — это 2 байта) получается значение 8705. - Затем, с помощью операции
mov si,210
начальный адрес (source) этого поля приравнивается к 210. - Далее, с помощью операции
mov di,si
начальный адрес (destination) этого поля приравнивается к значению, равному его начальному адресу. - С помощью операции
lodsw
из регистра SI (который увеличивается на 2 после каждой итерации цикла) считывается пара байтов. - С помощью операции
cmp ax,2010
проверяется, больше ли прочитанное значение, чем 2010. - Если это так, то с помощью операции
ja next
выполнение кода переходит к следующему адресу. - В противном случае с помощью операции
xor ax,ax
устанавливается значение AX равным 0. - С помощью операции
stosw
в память по адресу, равному начальному адресу (destination), записывается значение 0. - И, наконец, с помощью операции
loop @1
начинается цикл, который выполняет шаги с 6 по 10 для каждого байта в поле. Таким образом, в результате выполнения данного кода, все элементы поля, начиная с заданного адреса, заменяются нулями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д