Project

General

Profile

Ошибки и их устранение (ASM) » History » Version 3

Version 2 (krufter_multiclet, 04/02/2013 03:23 PM) → Version 3/4 (krufter_multiclet, 04/02/2013 03:28 PM)

h1. Ошибки и их устранение (ASM)

1) Ошибка перехода по индексному регистру

h3. Описание:

При переходе на следующий параграф по значению индексного регистра происходит неверный переход в
случае, если параграф имеет адрес, который занимает более 1 байта.
Ошибка появляется при переходе по любому индексному регистру (32-47) при помощи команд перехода,
таких как "jmp", "jne", "je", "js", "jns" и т.п.
Например ошибка может возникнуть в следующей конструкции(при условии адрес параграфа больше 1 байта):
<pre>


.text

pre:
setl #32, paragraph2
jmp paragraph
complete

*paragraph: paragraph:
jmp #32
complete*

paragraph2:
getl 0xABCDEF12
complete

</pre>

h3. Способ устранения ошибки:

Для того, чтобы осуществить переход по индексному регистру необходимо заменить конструкцию перехода,
например "jmp #32" нужно заменить на строки "rdl #32" и "jmp @1":

<pre>
.text

pre:
setl #32, paragraph2
jmp paragraph
complete

*paragraph:
rdl #32
jmp @1
complete*

paragraph2:
getl 0xABCDEF12
complete

</pre>