| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1441 人关注过本帖
标题:汇编实现HAnio汉诺塔问题
只看楼主 加入收藏
harry747747
Rank: 1
来 自:哈工大
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-3
收藏
 问题点数:0 回复次数:5 
汇编实现HAnio汉诺塔问题

datarea segment
bin dw 0
chnum db 10 dup('0'),'$'
one dw 'A'
two dw 'B'
three dw 'C'
strshow db '-->$'
chline db 0dh,0ah,'$'
prompt db 'Please input the plate number(1-99):$'
chtimes1 db 0dh,0ah,'You have moved $'
chtimes2 db 'times',0dh,0ah,'$'
inputlist label byte
maxlen db 3
actlen db 0
chinput db 3 dup ('0'),'$'
multfact dw 1
datarea ends
code segment
main proc far
assume cs:code,ds:datarea
start:
mov ax,datarea
mov ds,ax
loopagain:
lea dx,prompt
mov ah,09h
int 21h
lea dx,inputlist
mov ah,0ah
int 21h
call asctobin
mov ax,1
cmp ax,bin
ja loopagain
mov ax,99
cmp bin,ax
ja loopagain
push bin
push one
push two
push three
lea dx,chline
mov ah,09h
int 21h
call hanoi
lea dx,chtimes1
mov ah,09h
int 21h
mov cx,0010
lea si,chnum
shownum:
cmp byte ptr [si],'0'
je notadd
add byte ptr [si],48
notadd:
inc si
loop shownum
lea dx,chnum
mov ah,09h
int 21h
lea dx,chtimes2
mov ah,09h
int 21h
mov bin,0
mov actlen,0
mov [chinput],'0'
mov [chinput+1],'0'
mov cx,0010
lea si,chnum
put0:
mov byte ptr [si],'0'
inc si
loop put0
jmp loopagain
loopend:
mov ah,4ch
int 21h
main endp
asctobin proc near
push ax
push cx
cmp actlen,0
je loopend
cmp actlen,1
je l2
jmp l3
l2:
xor ah,ah
mov al,[chinput]
sub al,48
add bin,ax
jmp out1
l3:
xor ah,ah
mov al,[chinput+1]
sub al,48
add bin,ax
mov al,[chinput]
sub al,48
mov cl,10
mul cl
add bin,ax
out1:
pop cx
pop ax
ret
asctobin endp
hanoi proc near
push ax
push dx
push bp
mov bp,sp
mov ax,1
cmp ax,word ptr [bp+14]
je equal
jmp unequal
equal:
lea si,chnum+10
loopnum0:
xor ah,ah
dec si
mov al,[si]
add al,1
aaa
mov [si],al
cmp ah,1
je loopnum0
mov dx,word ptr[bp+12]
mov ah,2
int 21h
lea dx,strshow
mov ah,09h
int 21h
mov dx,word ptr [bp+8]
mov ah,02h
int 21h
lea dx,chline
mov ah,09h
int 21h
jmp exit
unequal:
mov ax,[bp+14]
sub ax,1
push ax
push [bp+12]
push [bp+8]
push [bp+10]
call hanoi
lea si,chnum+10
loopnum1:
xor ah,ah
dec si
mov al,[si]
add al,1
aaa
mov [si],al
cmp ah,1
je loopnum1
mov dx,word ptr [bp+12]
mov ah,2
int 21h
lea dx,strshow
mov ah,09h
int 21h
mov dx,word ptr [bp+8]
mov ah,02h
int 21h
lea dx,chline
mov ah,09h
int 21h
mov ax,[bp+14]
sub ax,1
push ax
push [bp+10]
push [bp+12]
push [bp+8]
call hanoi
exit:
pop bp
pop dx
pop ax
ret 8
hanoi endp
code ends
end start

搜索更多相关主题的帖子: 汉诺塔 HAnio segment datarea 汇编 
2007-06-22 19:32
fyi1106
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-14
收藏
得分:0 
好长,是楼主自己写的吗?好佩服楼主!

JavaScript forever!
2007-06-22 20:12
harry747747
Rank: 1
来 自:哈工大
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-3
收藏
得分:0 

也有好多是我在图书馆查很多资料找到的。能利用图书资源是很好的。


~~~sham
2007-07-04 18:52
justholdon
Rank: 1
等 级:新手上路
威 望:2
帖 子:69
专家分:0
注 册:2007-4-23
收藏
得分:0 
这么厉害,下载下来,我也研究一下!谢谢了!哈哈!

just hold on !
2007-07-06 10:14
zez2626
Rank: 1
等 级:新手上路
威 望:1
帖 子:40
专家分:0
注 册:2007-6-16
收藏
得分:0 
楼主好厉害!!!
2007-07-07 22:21
fanjinxiang
Rank: 1
等 级:新手上路
帖 子:13
专家分:7
注 册:2012-10-15
收藏
得分:0 
能不能把盘子编上号码,从上到下1-->n编号?
2012-11-12 11:22
快速回复:汇编实现HAnio汉诺塔问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037948 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved