Задача такая: На ассемблере под Intel8086 написать кусок кода, выполняющий заполнение массива целыми числами натурального ряда, то есть 0,1,2,3 и т.д. Начальное число ряда указывается в регистре SI, число заполняемых ячеек массива в регистре CX. Вроде бы просто, но бьюсь 4 часа и не могу понять как это делать. Ассемблер преподавался хреново, так что я практически вот 4 часа по урокам Chingachguk'а пытался понять, что такое ассемблер и как он вообще работает, и это весь мой опыт его изучения. Вот всё что смог набросать:
| Код | mov si,00005h - пишем в si стартовое число, например 5 (не уверен что правильно понял как тут указывать числа) mov bx,0 - смещаем базовый регистр на ноль mov cx,00064h - кладем в регистр число повторений, например 100 mov bx,si - кладем в bx содержимое si
тут както делаем массив размера cx и кладем в первую ячейку содержимое bx, после чего переходим к циклу
@repeat ADD bx,1 - смещаем bx на один ADD si,1 - увеличиваем число в si на единицу mov bx,si - кладем в bx содержимое si
тут по идее bx уже смещен на одну позицию и может выгрузить число в следущую ячейку
CMP bx,cx - сравниваем содержимое bx с содержимым cx (тут хранится число повторений, если второе меньше первого то программа останавливается - массив закончился) JBE @repeat - если меньше или равно, перескакиваем на repeat
|
Всё, больше у меня мозгов не хватает, организацию массива и запись в него я никак не могу понять, и сильно сомневаюсь что то что я нацарапал вообще имеет смысл, а сдать это надо завтра, один день дали на решение. Напишите живую программу, пожалуйста... Я сам попытаюсь доделать, но времени очень мало, знаний ещё меньше, и инет работает так, что скорость гугления опечалила бы даже будду. Помогите студенту сохранить статус... |