Дали задачу в колледже: найти количество чисел в массиве, кратных k. У меня программа выдаёт 10, а это число элементов массива, хотя там всего 5 кратных. В качестве количества выступает переменная a. А ищу числа кратные 2м. По программе это видно. Азы Асма, помогите, пожалуйста!
code_1077.txt
Этот топик читают: Гость
Ответов: 574
Рейтинг: 1
|
|||
карма: 0 |
| ||
файлы: 1 | code_1077.txt [630B] [738] |
Ответов: 9906
Рейтинг: 351
|
|||
Там легче правильные строки искать, чем неправильные
![]()
|
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
|||
карма: 27 |
|
Разработчик
Ответов: 26300
Рейтинг: 2146
|
|||
Dilma, я дико извиняюсь, что влез, но хочу ответить на заданный тобой вопрос. С точки зрения архитектуры процессора, команда inc -- регистровая команда, а add -- арифметическая, и у процессора задействуется АЛУ, а это дополнительное количество циклов, даже при конвеерном методе обработки. Следовательно, команда add медленнее команды inc, и даже, двух команд inc.
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): inc -- регистровая командасмотри внимательней nesco писал(а): Следовательнопроблемы с логикой |
|||
карма: 9 |
|
Разработчик
Ответов: 26300
Рейтинг: 2146
|
|||
Galkov, вот
Ассемблер. Урок 17 писал(а): Команда inc
Команда inc (от английского increment) увеливает значение своего параметра на 1. В качестве параметра может выступать как регистр (кроме сегментного), так и ячейка памяти. Вот пример: ;Увеличение значения регистра al на 1. inc al Эта команда работает быстрее, чем просто прибавление единицы к значению соответствующего регистра или ячейки памяти (например, с помощью команды add). Именно команду inc и надо использовать для увеличения содержимого параметра на 1. |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
1)
Galkov писал(а): смотри внимательнейinc a это не тоже самое, что inc al 2) мало ли что пишут на заборах - читать надо нормативную документацию. На конкретный проц Конечно там черт ногу сломает, с их конвейеризацией. Но масштаб и тенденции уловимы из любого Есть к меня древний NG, который сообщает для 486 - и add и inc одинаково по скорости выполняются: один тик для регистровых и 3 для памяти. Плюс накладные расходы работы с памятью, которые нормальный человек посчитать не в состоянии. Но они одинаковы в обоих случаях (add и inc) - одно чтение + одна запись |
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco писал(а): а add -- арифметическая, и у процессора задействуется АЛУ, а это дополнительное количество циклов, даже при конвеерном методе обработкидополнительное это сколько? ![]() Вот потому люди и изобрели ЯВУ, чтобы не заморачиваться по этому поводу. И HiAsm, чтобы этот ЯВУ не слвсем ![]() |
|||
карма: 27 |
|
Разработчик
Ответов: 26300
Рейтинг: 2146
|
|||
Galkov, видишь, что получается. Кто-то читат вот такие описания и дает народу заведомо ложные знания. Туфта получается...
![]() |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
А мне показалось, что ты просто не въехал, что a - это память а не регистр
Ideal в Tasm, и Fasm - понятнее, имхо: inc [a] |
|||
карма: 9 |
|
Разработчик
Ответов: 26300
Рейтинг: 2146
|
|||
Galkov, да все правильно тебе показалось. Если операции c регистрами inc и add выполняютяся за один тик, то с памятью за большее количество тиков (зависит от платформы). И, в любо случае, при равном количестве тиков на одну команду два inc'a будут медленнее одного add.
|
|||
карма: 22 |
|
Ответов: 574
Рейтинг: 1
|
|||
Galkov писал(а): Там легче правильные строки искать, чем неправильныеСПАСИБО! |
|||
карма: 0 |
|
12