📄 bitree.asm
字号:
;***********************************************
;COPYRIGHT 2005 wy ALL RIGHTS RESERVED
;CODED BY VITGRESS
;EMAIL VITGRESS@163.COM
;***********************************************
.MODEL SMALL
.STACK 10
.DATA
PRE DB 33 DUP(' '),'$' ;Define three arrays
INO DB 33 DUP(' '),'$' ;to store the
POST DB 33 DUP(' '),'$' ;three orders
ENT DB 10,13,'$'
INROOT DB 'THE ROOT: ','$'
INLEFT DB "'S LEFT: ",'$'
INRIGHT DB "'S RIGHT: ",'$'
PREORDER DB 'The preorder is : ','$' ;The
INORDER DB 'The inorder is : ','$' ;output
POSTORDER DB 'The postorder is : ','$' ;information
.CODE
;=====================================================================
MAIN PROC FAR ;The main procedure
MOV AX,@DATA
MOV DS,AX
SUB DI,DI ;Initialize the DI
SUB SI,SI ;Initialize the SI
SUB BX,BX ;Initialize the BX
MOV AX,23H ;Push a '#' to the
PUSH AX ;bottom of the stack
MOV AH,09H ;The prompt
MOV DX,OFFSET INROOT ;of input
INT 21H ;the root
JMP INPUT
MAIN ENDP
;======================================================================
INPUT: ;Input Procedure
MOV AH,01H ;Accept the input
INT 21H
CMP AL,13 ;If input an enter
JZ OUTENTER
MOV PRE[DI],AL
MOV AH,0
PUSH AX
CALL ENTER ;Start another row
MOV AH,02H
MOV DL,PRE[DI]
INT 21H
MOV AH,09H
MOV DX,OFFSET INLEFT ;Display the prompt for
INT 21H ;inputting the
INC DI ;left node
JMP INPUT
;=======================================================================
OUTENTER:
CALL ENTER
JMP RIGHTINPUT
;=======================================================================
RIGHTINPUT: ;Input the right node
POP AX
CMP AX,23H ;Reach the bottom
JZ OUTPUT ;Start to output
CMP AH,0
JZ SETINORDER
MOV POST[BX],AL ;Store the postorder
INC BX
JMP RIGHTINPUT
;=======================================================================
SETINORDER: ;Store the inorder
MOV INO[SI],AL
INC SI
MOV AH,1 ;Set the postorder flag
PUSH AX
MOV AH,02H
MOV DL,AL
INT 21H
MOV AH,09H
MOV DX,OFFSET INRIGHT ;Display the prompt for
INT 21H ;inputting right node
JMP INPUT
;=======================================================================
ENTER PROC NEAR ;The Procedure for
MOV AH,09H ;start another row
LEA DX,ENT
INT 21H
RET
ENTER ENDP
;=======================================================================
OUTPUT : ;Output Procedure
CALL ENTER
MOV AH,09H
MOV DX,OFFSET PREORDER ;Preorder
INT 21H
MOV AH,09H
MOV DX,OFFSET PRE
INT 21H
CALL ENTER
MOV AH,09H
MOV DX,OFFSET INORDER ;Inorder
INT 21H
MOV AH,09H
MOV DX,OFFSET INO
INT 21H
CALL ENTER
MOV AH,09H
MOV DX,OFFSET POSTORDER ;Postorder
INT 21H
MOV AH,09H
MOV DX,OFFSET POST
INT 21H
MOV AX,4C00H ;End processing
INT 21H
;=======================================================================
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -