Ваша программа почти в порядке.В настоящее время выводом является «122212221222».
Этот символ «1», который повторяется, происходит из-за того, что вы повторно используете непосредственное значение 49 в цикле, в котором вы должны были хранитьэто число за пределами цикла!
Я предлагаю вам сохранить его в регистре DH
, извлечь его оттуда и увеличивать DH
на каждой итерации:
mov dh, "1" ; ASCII=49
mov cx, 3
outerLoop:
mov ah, 02h
mov dl, dh ; Successively "1", "2", "3"
inc dh
int 21h
mov bx, 3
innerLoop:
mov ah, 02h
mov dl, "2" ; ASCII=50
int 21h
dec bx
jnz innerLoop
dec cx
jnz outerLoop
Пожалуйстаобратите внимание, что вместо использования BX
для сохранения счетчика внешнего цикла вы можете так же легко использовать BX
в качестве счетчика для внутреннего цикла.
Для удобства чтения вы можете:
- использовать больше описательных меток
- вставлять пустые строки, чтобы выделить внутренний цикл
- писать функциональные комментарии