Что делает команда loop $ ? - Assembler

Узнай цену своей работы

Формулировка задачи:

Имеется некоторая процедура подскажите что делает команда loop $. как работает команда Loop понятно ( Количество повторений тела цикла указывается в регистре CX. По достижению команды LOOP содержимое этого регистра автоматически уменьшается на 1. Пока содержимое регистра CX не равно нулю, управление передается на метку, указанную в операнде) НО что такое $
push ax bx cx dx si di
 
      mov si,0
      loopdel:
            mov cx,2000
            loop $
            inc si
            mov dx,delaytime
            cmp si,dx
            jle loopdel
      pop di si dx cx bx ax

Решение задачи: «Что делает команда loop $ ?»

textual
Листинг программы
push ax bx cx dx si di
 
      mov si,0 ; обнулить счётчик количества накрученных циклов
 
      loopdel:
 
      mov cx,2000 ; 
      loop $ ; фиксированный по времени цикл в две тысячи единиц времени 
               ; знак $ будет заменён адресом текущей строки т.е. команда loop
               ; выполнит сама себя 2000 раз
 
            inc si       ; счётчик того сколько раз было сделано loop 2000 раз
            mov dx,delaytime ; занести в DX  число сколько их сделать надо
            cmp si,dx,           ; сравнить сделаное с тем сколько нужно сделать
            jle loopdel ; крутить  ещё один цикл из 2000 ед.времени пока SI не превысит DX
                          ; т.е. равное числу занесённому в переменную delaytime
      pop di si dx cx bx ax

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

Список не превышает 20 элементов:

  1. Команда pushaxbxcxdxsi обнуляет счётчик количества накрученных циклов.
  2. Значение переменной si устанавливается равным 0.
  3. Далее, в переменную cx записывается значение 2000.
  4. Далее, выполняется цикл, который будет выполняться 2000 раз, это фиксированное по времени действие.
  5. Увеличивается значение переменной si на единицу.
  6. В переменную dx записывается значение задержки (delaytime).
  7. Сравниваются значения переменных si и dx.
  8. Если si меньше или равно dx, то выполняется цикл из 2000 единиц времени (jle loopdel).
  9. Делается рекурсивный вызов функции loop.
  10. Находятся значения переменных di, si, dx, cx, bx, ax.
  11. Команда popdi Si Dx Cx Bx Ax завершает работу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

13   голосов , оценка 4.385 из 5