|
102 HANOI_MOVE proc near
103 MOV BP,SP
104 MOV AX,[BP+8]
105 CMP AX,1
106 JG moreThanOne ;n 不等于1则跳转
107 CALL STEP
108 MOV DX,[BP+2] ;取第一个值
109 CALL DISPLAY
110 LEA DX,to
111 CALL intro
112 MOV DX,[BP+6] ;取第三个值
113 CALL DISPLAY
114 CALL GroupMake
115
116 RET
117
118
119 moreThanOne:
120 MOV AX,[BP+2]
121 MOV BX,[BP+4]
122 MOV CX,[BP+6]
123 MOV DX,[BP+8]
124 DEC DX ;n-1
125 PUSH DX
126 PUSH BX
127 PUSH CX
128 PUSH AX
129 CALL HANOI_MOVE ;递归一次,进行下一循环
130 ADD SP,8
131
132 MOV BP,SP
133 CALL STEP
134 MOV DX,[BP+2] ;取第一个值
135 CALL DISPLAY
136 LEA DX,to
137 CALL intro
138 MOV DX,[BP+6] ;取第三个值
139 CALL DISPLAY
140 CALL GroupMake
141
142 MOV AX,[BP+2]
143 MOV BX,[BP+4]
144 MOV CX,[BP+6]
145 MOV DX,[BP+8]
146 DEC DX ;n-1
147 PUSH DX
148 PUSH CX
149 PUSH AX
150 PUSH BX
151 CALL HANOI_MOVE ;递归一次,进行下一循环
152 ADD SP,8
153
154 RET
155 HANOI_MOVE endp
156
157 EXIT: MOV AH,4CH ;退出
系统
158 INT 21H
159 CODE ENDS
160 END START
复制代码
耐心看看就行了,不是很难,栈的第一个参数是从bp+2开始的,别搞错了。
|