Всем известна задача про ханойские башни. Число дисков 10, данные вывести надо в файл. Помогите, пжл, перевести паскалевский код на асм (Tasm 5.0), или подсказать с чего начать основную процедуру, с файлом сам разберусь: Код (Text): Program Hanoy; Const k=10; Var a,b,c : Char; a1,b1,c1,s: Integer; fil:text; Procedure Disk(n : Integer; a, b, c: Char); Begin If n>0 Then Begin Disk(n-1,a,c,b); Writeln(fil,'Диск ',n, ' переложить c ', a, '->', b); If a='3' Then c1:=c1-1; If a='2' Then b1:=b1-1; If a='1' Then a1:=a1-1; If b='3' Then c1:=c1+1; If b='2' Then b1:=b1+1; If b='1' Then a1:=a1+1; Writeln(fil,b1,' ',a1,' ',c1); Disk(n-1,c,b,a); s:=s+1; End; End; Begin Assign (fil,'hanoy.txt'); Rewrite(fil); a1:= 0; b1:= 0; c1:= k; a:= '3'; b:= '2'; c:= '1'; Disk(k,a,b,c); Append(fil); Writeln(fil,'Количество перестановок ', s); Close(fil); Writeln('Данные сохранены в файле Hanoy.txt...Нажмите клавишу Enter...'); ReadLn; End. Вот сегодня пытался решить на асме, но после запуска в дебугере программа зависает, быть может проблемы со стеком? Подскажите, пожалуйста Код (Text): masm .model small .486 .stack 30h .data Str1 DB 'Программа отработала$' a DB ? b DB ? c DB ? .code Hanoy proc Dec DI Push DI AX BX CX Pop BX CX AX DI Inc DI Add SP, 2 Call Hanoy CMP AX, 3 JNE U1 Dec c U1: CMP AX, 2 JNE U2 Dec b U2: CMP AX, 1 JNE U3 Dec a U3: CMP BX, 3 JNE U4 Inc c U4: CMP BX, 2 JNE U5 Inc b U5: CMP BX, 1 JNE U6 Inc a U6: Dec DI Push DI AX BX CX Pop AX BX CX DI Inc DI Add SP, 2 Call Hanoy Inc SI; SI - Число перестановок Ret Hanoy endp start: mov ax, @data mov ds, ax Mov a, 0 Mov b, 0 Mov c, 10 Mov DI, 10 Mov AX, 3 Mov BX, 2 Mov CX, 1 call Hanoy Mov AH, 09h Mov DX, Offset Str1 Int 21h Mov AH, 10h Int 16h mov ah, 4ch int 21h end start