Вопрос № 30174: Здравствуйте, эксперты. Условие задачи такое "В однобайтовом массиве заменить все числа, являющиеся простыми их порядковыми номерами" Задачу я нашел в нэте, но не разобрался что е чему, знаю только то, что 5550 - это вводимые числа, и ААА0 ...
Вопрос № 30.174
Здравствуйте, эксперты. Условие задачи такое "В однобайтовом массиве заменить все числа, являющиеся простыми их порядковыми номерами" Задачу я нашел в нэте, но не разобрался что е чему, знаю только то, что 5550 - это вводимые числа, и ААА0 - это таблица простых чисел от 2 до D (13h). Обьясните пожалуйста алгоритм этой проги. и нет ли там ошибок? (Выполинть в debug.exe) Вот текст :
Приложение:
Отправлен: 24.11.2005, 23:24
Вопрос задал: S1lveR (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ayl
Здравствуйте, S1lveR!
Есть. Ты либо не правильно метки проставил, но конструкция:
1. mov ...
call 1
приводит к бесконечному циклу.
Далее, в команде с меткой 1 в AL загружается значение по адресу SI+BX, но значение регистра BX не задано. В принципе, может произойти обращение по неопределенному адресу.
Команда loop подразумевает уменьшение регистра CX при своем выполнении. Но значение этого регистра также не устанавливается.
Вообще непонятно назначение этой команды. Смотри:
loop 2
2: ...
loop выполняется в случае, если CX != 0. Если CX = 0, то выполняется следующая команда. То есть, по-любому, следующей будет команда под меткой 2. Тогда зачем loop?
Последовательность команд
mov ah,[DI+bx]
mov ah,al
противоречит друг другу. В первой ты загружаешь в регистр AH значение из памяти, а в следующей тут же его затираешь значением из регистра AL. Либо перепутаны регистры во второй команде, либо первая команда - лишняя.
[DI+dl] - такой адресации не существует!
В общем, это не код, а набор команд. Про алгоритм тут вообще говорить не приходится.
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Академик)
Отправлен: 25.11.2005, 11:18