debug
- довольно старый отладчик. Как таковой он не позволяет вам работать, и когда вы пишете в нем код, он непосредственно записывается в память (напоминает мне о моих первых днях :)).
Поэтому, когда вы хотите написать что-то, что связано с адресами, вы должны указать адреса непосредственно.
В вашем случае вам нужно будет запомнить адрес 073f:0106
, и если вы хотите прыгать или разветвляться там, вы используете его, точно так же, как вы бы использовали метку.
-a
15E7:0100 mov si,0
15E7:0103 mov cx, 3
15E7:0106 mov al, [si]
15E7:0108 dec cx
15E7:0109 jne 15e7:0106
15E7:010B ret
15E7:010C
-
Это очень громоздкий способ написания программ, потому что если вы вставите instrutions позже, вы можете иметь проблемы с перемещением остальной частью коды и настройкой АДРЕСА.
Если вы хотите изучить сборку, тогда было бы лучше использовать какой-то ассемблер вместо этого, для тестирования небольших образцов кода это хорошо и просто.
'DEBUG' довольно ограничен и поэтому не является особенно хорошим инструментом для написания кода langauge. Вы не можете использовать в нем метки AFAIK; все адреса должны быть указаны как простой гекс (а в случае относительных прыжков вам придется самостоятельно вычислять смещение). – Michael
Есть ли способ писать петлю, даже записывая адреса как простой гекс? Когда я попытался удалить ярлык и в конце цикла кода цикла я добавил: loop addressOfStartingLoopBlock Я получил неправильные результаты. – user2192774
DEBUG действительно ОЧЕНЬ хороший инструмент обучения, но он не поддерживает метки, поэтому вы должны добавить их вручную. – valplo