Это прекрасно, но если Val
I := 1;
while (I <= Count) and (List[I] <> Val) do
Inc(I);
if I <= Count then
FindVal := I
end; { FindVal }
Это прекрасно, но если Val не содержится в List и вы исполь-
зуете обычное вычисление булевских выражений, здесь может возник-
нуть ошибка этапа выполнения. Почему? Потому что когда последний
раз проверка выполняется в начале цикла while I будет равно Count
+ 1. Если Count = NLMax, вы выйдете за пределы List.
Ошибки, специфические для Ассемблера
-----------------------------------------------------------------
В каждом языке имеется свое множество ошибок, которые обычно
очень легко сделать, но не всегда просто обнаружить. Не является
исключением и язык Ассемблера. Мы рассмотрим некоторые типичные
ошибки, которые допускаются при программировании на Ассемблере, и
дадим рекомендации, как можно их избежать.
Программист забывает о возврате в DOS
-----------------------------------------------------------------
В Паскале, Си и других языках программа завершается и возв-
ращается в операционную систему DOS автоматически, когда нет
больше выполняемого кода, даже если в программе отсутствует явная
команда ее завершения. В языке Ассемблера это не так. Ассемблер
выполняет только те действия, которые вы явно указываете. Когда
вы запускаете программу, в которой отсутствует команда возврата в
DOS, она просто продолжает работать до конца выполняемого кода
программы и переходит в код, который находится в примыкающей па-
мяти.
TDeb 3.0 #2-3 = 139 =
Программист забывает об инструкции RET
-----------------------------------------------------------------