Замена отрицательных чисел нулями. Ассемблер - 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

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

  1. org 100h — инициализация сегмента для памяти
  2. xor bx, bx — инициализация регистра bx в 0
  3. mov si, A — инициализация регистра si значением переменной A
  4. mov di, si — инициализация регистра di значением переменной si
  5. mov cx, szA — инициализация регистра cx значением переменной szA
  6. lodsb — загрузка байта из памяти в al
  7. or al, al — логическое ИЛИ al с al, результат в al
  8. cmovl ax, bx — если al не равен 0, то обмен значений ax и bx
  9. stosb — запись байта из памяти в память
  10. loop @l — переход к следующей итерации цикла, пока al не станет равным 0
  11. 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 в байтах

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

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