С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 22.04.2018
Сообщений: 1
TASM

Рекурсия Ханойские башни

11.05.2018, 06:48. Показов 1897. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста разобрать ошибки в коде
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
.model tiny, pascal
N_RINGS   = 4   ; число колец (до 9, иначе нужно менять вывод сообщения)
.data
szInfo   db 'Задача о "Ханойской башне" для '
   db N_RINGS+'0',' колец.',13,10,'$'
szMove   db "0 -> 0",13,10,'$'
szExit   db "Press any key to exit...$"
.code
.startup
.286
   ; вывод информационного сообщения
   mov   ah,9      ; AH=9 - вывод строки на экран 
   mov   dx,offset szInfo ; DS:DX = адрес выводимой строки
   int   21h
   mov   al,N_RINGS   ; начальное кол-во колец
   call   hanoi_towers, 1, 3, 2
   mov   ah,9      ; AH=9 - вывод строки на экран
   mov   dx,offset szExit ; DS:DX = адрес выводимой строки
   int   21h
   xor   ax,ax      ; ждем нажатия клавиши
   int   16h
   int   20h      ; завершение программы (только .COM)
;---------------------------------------------------
; AL   = число колец
; from   - начальное положение колец (1-3),
; to   - конечное положение колец (1-3)
; temp   - промежуточный колышек (1-3)
;---------------------------------------------------
hanoi_towers   proc from: word, to: word, temp: word
   test   al,al   ; число колец = 0?
   jz   @@ ret
   dec   ax   ; вызываем для числа колец на 1 меньше
   push   ax   ; сохраняем для второго вызова
   call   hanoi_towers, from, temp, to ; формируем сообщение
   mov   al,byte ptr [from]
   add   al,'0'      ; номер колышка - в символ
   mov   [szMove],al
   mov   al,byte ptr [to]
   add   al,'0'      ; номер колышка - в символ
   mov   [szMove+5],al
   mov   ah,9      ; вывод строки на экран
   mov   dx,offset szMove ; DS:DX = адрес выводимой строки
   int   21h
   pop   ax   ; восстанавливаем число колец
   call   hanoi_towers, temp, to, from
@@ret:
   ret   
hanoi_towers   endp
end
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2018, 06:48
Ответы с готовыми решениями:

Ханойские башни
Ребят срочно помогите пожалуйста, как написать код игры на assemblere Ханойские башни или может у кого нибудь есть?

Ханойские башни. Рекурсия
Пояснения к программе Самое простое и известное решение строится в виде рекурсивной процедуры переноса заданного количества п дисков с...

Ханойские башни. Рекурсия
Привет. Мне нужно чтобы программа моя показывала сколько дисков на каждой башне после каждого хода class HanoyTowers{ char spire1; ...

2
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
11.05.2018, 14:43
Цитата Сообщение от Shocki Посмотреть сообщение
call hanoi_towers, 1, 3, 2
Цитата Сообщение от Shocki Посмотреть сообщение
hanoi_towers proc from: word, to: word, temp: word
вроде аргументы так не передаются (и параметры так не принимаются) в процедуру.. передавай лучше через регистры, стек или память..
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
11.05.2018, 16:24
proc3nt,
это tasm, сделает, что нужно:
Assembler
1
2
3
4
5
call   hanoi_towers, 1,3,2
PUSH    1
PUSH    3
PUSH    2
CALL    HANOI_TOWERS
и нужным образом все раставит сам:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub_1011F       proc near
arg_0           = word ptr  4
arg_2           = word ptr  6
arg_4           = word ptr  8
    enter   0, 0
    test    al, al
    jz      locret_10159
    dec     ax
    push    ax
    push    [bp+arg_4]
    push    [bp+arg_0]
    push    [bp+arg_2]
    call    sub_1011F
    mov     al, byte ptr [bp+arg_4]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2018, 16:24
Помогаю со студенческими работами здесь

Рекурсия, одна из задач на ханойские башни
На дорогах Ханоя было введено одностороннее круговое движение, поэтому теперь диск со стержня 1 можно перекладывать только на стержень 2,...

Ханойские башни
Это задача про 3 стержни, на которых есть диски разного диаметра, меньшие лежат на больших, пирамидкой. Надо их перенести на другой...

Ханойские башни
Пожалуйста помогите решить задачи, не уходите посмотрев, что задача легкая, и не дав ответа, я очень прошу. Вот они... 1) Вывести...

Ханойские башни
Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков...

Ханойские башни
Задача В центре мира в вершинах равностороннего треугольника в землю вбиты три алмазных шпиля. На одном из них надето 64 золотых диска...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru