Язык сборки: контурный цикл

Я написал код сборки, который включает:

    XOR BL,BL
    MOV CX,0 
TOP: 
    INC BL,1
    MOV AH,2 
    MOV DL, BL 
    INT 21H
    LOOP TOP

Cx выполняется действительно много раз (более 10 000). Какая может быть возможная причина выполнения цикла такого высокого времени? Я очень новичок в языке ассемблера и не нашел ничего эффективного для моего кода, связанного с dec cx; <DAREASE THE COUNTER. jnz label; <ЕСЛИ, ЕСЛИ СЧЕТЧИК НЕ НУЖНО, СПУТНИК ДЛЯ ЭТИКЕТКИ ПОВТОРИТЬ. = 0. Заранее спасибо.

assembly,counter,x86-16,

2

Ответов: 2


3 принят

Ваш счетчик cxне был правильно инициализирован. Инструкция loopвыполняет две вещи:

cx - 1

В вашем коде счетчик 0 - 1был инициализирован как ноль, поэтому, когда loopинструкция выполняется, он делает cx, то есть становится 0ffffhтак, и ваш цикл будет повторяться раз.0ffffhcxmov cx, 10

cxНапример, переместите другое значение на свой счетчик , loopчтобы ваш цикл повторялся 10 раз.


1

loopИнструкция Intel сначала уменьшает регистр CX, а затем проверяет нулевое состояние.

Перед TOP:тестированием установите CX в 1 .

монтаж, счетчик, x86-16,
Похожие вопросы