Замена отрицательных чисел нулями. Ассемблер - Assembler
Формулировка задачи:
В обычном ассемблере CMD создать программу. Задан массив А.
A DB 1,1,-2,-4,6
DB 2,-5,2,-2,5
DB 3,-3,-3,4,4
DB 5,-5,6,-7,7
В данной области памяти требуется заменить все отрицательные элементы массива на нулевые байты.
Решение задачи: «Замена отрицательных чисел нулями. Ассемблер»
textual
Листинг программы
; FASM org 100h xor bx, bx mov si, A mov di, si mov cx, szA @l: lodsb or al, al cmovl ax, bx stosb loop @l ret A DB 1,1,-2,-4,6 DB 2,-5,2,-2,5 DB 3,-3,-3,4,4 DB 5,-5,6,-7,7 szA = $-A
Объяснение кода листинга программы
- org 100h — инициализация сегмента для памяти
- xor bx, bx — инициализация регистра bx в 0
- mov si, A — инициализация регистра si значением переменной A
- mov di, si — инициализация регистра di значением переменной si
- mov cx, szA — инициализация регистра cx значением переменной szA
- lodsb — загрузка байта из памяти в al
- or al, al — логическое ИЛИ al с al, результат в al
- cmovl ax, bx — если al не равен 0, то обмен значений ax и bx
- stosb — запись байта из памяти в память
- loop @l — переход к следующей итерации цикла, пока al не станет равным 0
- ret — возврат управления в вызывающую программу DB 1,1,-2,-4,6 - описание переменных DB (Direct Byte) для двубайтовых операций со смещением DB 2,-5,2,-2,5 - описание переменных DB (Direct Byte) для двубайтовых операций со смещением DB 3,-3,-3,4,4 - описание переменных DB (Direct Byte) для двубайтовых операций со смещением DB 5,-5,6,-7,7 - описание переменных DB (Direct Byte) для двубайтовых операций со смещением szA = $-A — переменная szA содержит размер строки A в байтах, а $-A — это отрицательное значение размера строки A в байтах
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д