Вычисление количества элементов в массиве. Паскаль + ассемблерная вставка - Assembler
Формулировка задачи:
Необходимо написать программу на языке Pascal, обработку данных (в том числе циклы, если они необходимы) осуществить в ассемблерной вставке.
Написать программу, вычисляющую количество элементов в массиве до первого нулевого элемента, в случае если нулевого элемента нет, должно возвращаться количество элементов в массиве.
Помогите пожалуйста, очень прошу
Решение задачи: «Вычисление количества элементов в массиве. Паскаль + ассемблерная вставка»
textual
Листинг программы
asm cld les di, A {заносим в пару es:di адрес массива} mov dx,N {помещение в dx значение N} mov cx,dx { перемещает данные из dx в регистр cx} xor ax,ax {обнуление ax} repne scasw {?} jne @@nodec {если нет, прыгаем на @@nodec , если да, идем на следующую команду} dec dx {уменьшаем счетчик циклов} @@nodec: sub dx,cx {вычесть dx из cx} mov ax,dx { перемещает данные из dx в регистр ax} end;
Объяснение кода листинга программы
asm
- начало ассемблерного блокаcld
- подготовительные операции для работы с памятьюles di, A
- заносим в пару es:di адрес массиваmov dx,N
- помещаем в dx значение Nmov cx,dx
- перемещает данные из dx в регистр cxxor ax,ax
- обнуление axrepne scasw
- выполняет команду повторения, сравнивая байты в dx и cx, и вычитая счетчик из dxjne @@nodec
- если нет, прыгаем на @@nodec, если да, идем на следующую командуdec dx
- уменьшаем счетчик циклов@@nodec:
- метка для переходаsub dx,cx
- вычитает dx из cxmov ax,dx
- перемещает данные из dx в регистр axend
- конец ассемблерного блока
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д