⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wu.asm

📁 用汇编编写的河内塔程序 将第一柱a上n-1个盘借助第二柱c移到第三柱b 把a上剩下的一个盘移到c 将n-1个盘从b借助a移到第三柱c 这三步是图示河内塔的根本方法 功能一:自己动手移动河内塔 先按左右
💻 ASM
📖 第 1 页 / 共 2 页
字号:
    DEC DI
    CMP DI,1
    JNZ DRAW11
CD1:
    CMP CHOOSE1,1
    JZ COLORC
    MOV COLOR,0AH
    JMP DRAW111
COLORC:
    MOV COLOR,0EH
DRAW111:
    MOV SI,WORD PTR TOP1
    AND SI,00FFH
    MOV AX,10
    SUB AL,STACK1[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    POP DX
    POP BX
    ADD AX,40
    MOV CX,AX
    MOV COUNT,28
L11:
    PUSH CX
LINE11:
    MOV AH,0CH
    MOV AL,COLOR
    INT 10H
    INC CX
    MOV AX,10
    SUB AL,STACK1[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    MOV BX,200
    XCHG AX,BX
    SUB AX,BX
    POP DX
    POP BX
    CMP CX,AX
    JB LINE11
    POP CX
    DEC DX
    DEC COUNT
    CMP COUNT,0
    JNZ L11
    RET
DRAW1 ENDP

DRAW2 PROC NEAR
    MOV DI,WORD PTR TOP2
    AND DI,00FFH
    MOV SI,0
    CMP TOP2,1
    JZ CD2
DRAW22:
    INC SI
    MOV AX,10
    SUB AL,STACK2[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    POP DX
    POP BX
    ADD AX,240
    MOV CX,AX
    MOV COUNT,28
L2:
    PUSH CX
LINE2:
    MOV AX,0C0AH
    INT 10H
    INC CX
    MOV AX,10
    SUB AL,STACK2[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    MOV BX,400
    XCHG AX,BX
    SUB AX,BX
    POP DX
    POP BX
    CMP CX,AX
    JB LINE2
    POP CX
    DEC DX
    DEC COUNT
    CMP COUNT,0
    JNZ L2
    DEC DI
    CMP DI,1
    JNZ DRAW22
CD2:
    CMP CHOOSE1,2
    JZ COLORC2
    MOV COLOR,0AH
    JMP DRAW222
COLORC2:
    MOV COLOR,0EH
DRAW222:
    MOV SI,WORD PTR TOP2
    AND SI,00FFH
    MOV AX,10
    SUB AL,STACK2[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    POP DX
    POP BX
    ADD AX,240
    MOV CX,AX
    MOV COUNT,28
L22:
    PUSH CX
LINE22:
    MOV AH,0CH
    MOV AL,COLOR
    INT 10H
    INC CX
    MOV AX,10
    SUB AL,STACK2[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    MOV BX,400
    XCHG AX,BX
    SUB AX,BX
    POP DX
    POP BX
    CMP CX,AX
    JB LINE22
    POP CX
    DEC DX
    DEC COUNT
    CMP COUNT,0
    JNZ L22
    RET
DRAW2 ENDP

DRAW3 PROC NEAR
    MOV DI,WORD PTR TOP3
    AND DI,00FFH
    MOV SI,0
    CMP TOP3,1
    JZ CD3
DRAW33:
    INC SI
    MOV AX,10
    SUB AL,STACK3[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    POP DX
    POP BX
    ADD AX,440
    MOV CX,AX
    MOV COUNT,28
L3:
    PUSH CX
LINE3:
    MOV AX,0C0AH
    INT 10H
    INC CX
    MOV AX,10
    SUB AL,STACK3[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    MOV BX,600
    XCHG AX,BX
    SUB AX,BX
    POP DX
    POP BX
    CMP CX,AX
    JB LINE3
    POP CX
    DEC DX
    DEC COUNT
    CMP COUNT,0
    JNZ L3
    DEC DI
    CMP DI,1
    JNZ DRAW33
CD3:
    CMP CHOOSE1,3
    JZ COLORC3
    MOV COLOR,0AH
    JMP DRAW333
COLORC3:
    MOV COLOR,0EH
DRAW333:
    MOV SI,WORD PTR TOP3
    AND SI,00FFH
    MOV AX,10
    SUB AL,STACK3[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    POP DX
    POP BX
    ADD AX,440
    MOV CX,AX
    MOV COUNT,28
L33:
    PUSH CX
LINE33:
    MOV AH,0CH
    MOV AL,COLOR
    INT 10H
    INC CX
    MOV AX,10
    SUB AL,STACK3[SI]
    PUSH BX
    PUSH DX
    MOV BX,5
    MUL BX
    MOV BX,600
    XCHG AX,BX
    SUB AX,BX
    POP DX
    POP BX
    CMP CX,AX
    JB LINE33
    POP CX
    DEC DX
    DEC COUNT
    CMP COUNT,0
    JNZ L33
    RET
DRAW3 ENDP

HANIO1 PROC NEAR
     CMP LEVEL,1
     JZ PP13
     MOV AX,WORD PTR ONE
     MOV BX,WORD PTR TWO
     MOV CX,WORD PTR THREE
     MOV DX,WORD PTR LEVEL
     PUSH AX
     PUSH BX
     PUSH CX
     PUSH DX
     DEC LEVEL
     MOV TWO,CL
     MOV THREE,BL
     CALL HANIO1
     POP DX
     POP CX
     POP BX
     POP AX
     MOV LEVEL,DL
     MOV THREE,CL
     MOV TWO,BL
     MOV ONE,AL
PP13:
     ;MOV DL,ONE
     ;MOV AH,02H
     ;INT 21H
     ;MOV DL,THREE
     ;MOV AH,02H
     ;INT 21H
     ;MOV DL,0AH
     ;MOV AH,02H
     ;INT 21H
     ;MOV DL,0DH
     ;MOV AH,02H
     ;INT 21H
     INC STEP2
     CMP LEVEL,1
     JZ END11
     MOV AX,WORD PTR ONE
     MOV BX,WORD PTR TWO
     MOV CX,WORD PTR THREE
     MOV DX,WORD PTR LEVEL
     PUSH AX
     PUSH BX
     PUSH CX
     PUSH DX
     DEC LEVEL
     MOV TWO,AL
     MOV ONE,BL
     CALL HANIO1
     POP DX
     POP CX
     POP BX
     POP AX
     MOV LEVEL,DL
     MOV THREE,CL
     MOV TWO,BL
     MOV ONE,AL
END11:
     RET
HANIO1 ENDP

HANIO PROC NEAR
     CMP LEVEL,1
     JZ P13
     MOV AX,WORD PTR ONE
     MOV BX,WORD PTR TWO
     MOV CX,WORD PTR THREE
     MOV DX,WORD PTR LEVEL
     PUSH AX
     PUSH BX
     PUSH CX
     PUSH DX
     DEC LEVEL
     MOV TWO,CL
     MOV THREE,BL
     CALL HANIO
     POP DX
     POP CX
     POP BX
     POP AX
     MOV LEVEL,DL
     MOV THREE,CL
     MOV TWO,BL
     MOV ONE,AL
P13:
     ;MOV DL,ONE
     ;MOV AH,02H
     ;INT 21H
     ;MOV DL,THREE
     ;MOV AH,02H
     ;INT 21H
     ;MOV DL,0AH
     ;MOV AH,02H
     ;INT 21H
     ;MOV DL,0DH
     ;MOV AH,02H
     ;INT 21H
     CALL DISPL2
     INC STEP2
     CMP LEVEL,1
     JZ END3
     MOV AX,WORD PTR ONE
     MOV BX,WORD PTR TWO
     MOV CX,WORD PTR THREE
     MOV DX,WORD PTR LEVEL
     PUSH AX
     PUSH BX
     PUSH CX
     PUSH DX
     DEC LEVEL
     MOV TWO,AL
     MOV ONE,BL
     CALL HANIO
     POP DX
     POP CX
     POP BX
     POP AX
     MOV LEVEL,DL
     MOV THREE,CL
     MOV TWO,BL
     MOV ONE,AL
END3:
     RET
HANIO ENDP

DISPL2 PROC NEAR
     CMP ONE,'A'
     JZ  FF1
     CMP ONE,'B'
     JZ  FF2
     MOV CHOOSE1,3
     JMP TTO
FF1:
     MOV CHOOSE1,1
     JMP TTO
FF2:
     MOV CHOOSE1,2
TTO:
     CMP THREE,'A'
     JZ  TT1
     CMP THREE,'B'
     JZ  TT2
     MOV CHOOSE2,3
     JMP DISPLAY
TT1:
     MOV CHOOSE2,1
     JMP DISPLAY
TT2:
     MOV CHOOSE2,2
DISPLAY:
     CALL CLEAR
     CALL C10DISPL1
     CMP PRESS,1
     JZ TWO2
     MOV AH,01H
     INT 21H
TWO2:
     CMP ONE,'A'
     JZ  FFF1
     CMP ONE,'B'
     JZ  FFF2
     MOV CHOOSE1,2
     MOV SI,WORD PTR TOP3
     AND SI,00FFH
     MOV DL,STACK3[SI]
     MOV XUAN,DL
     DEC TOP3
     JMP TTTO
FFF1:
     MOV CHOOSE1,2
     MOV SI,WORD PTR TOP1
     AND SI,00FFH
     MOV DL,STACK1[SI]
     MOV XUAN,DL
     DEC TOP1
     JMP TTTO
FFF2:
     MOV CHOOSE1,2
     MOV SI,WORD PTR TOP2
     AND SI,00FFH
     MOV DL,STACK2[SI]
     MOV XUAN,DL
     DEC TOP2
TTTO:
     CMP THREE,'A'
     JZ  TTT1
     CMP THREE,'B'
     JZ  TTT2
     MOV CHOOSE2,3
     INC TOP3
     MOV SI,WORD PTR TOP3
     AND SI,00FFH
     MOV DL,XUAN
     MOV STACK3[SI],DL
     JMP EXIT1
TTT1:
     MOV CHOOSE2,1
     INC TOP1
     MOV SI,WORD PTR TOP1
     AND SI,00FFH
     MOV DL,XUAN
     MOV STACK1[SI],DL
     JMP EXIT1
TTT2:
     MOV CHOOSE2,2
     INC TOP2
     MOV SI,WORD PTR TOP2
     AND SI,00FFH
     MOV DL,XUAN
     MOV STACK2[SI],DL
EXIT1:
     RET
DISPL2 ENDP

KEYGAME PROC NEAR
    PUSH AX
    PUSH BX
    PUSH DX
    PUSH SI
    MOV DX,OFFSET S3
    MOV AH,09H
    INT 21H
    XOR DX,DX
INLV:
    MOV AH,01H
    INT 21H
    CMP AL,0DH
    JZ CLV
    SUB AX,30H
    XCHG AX,DX
    MOV BL,10
    MUL BL
    CMP AX,10
    JA ERROR
    ADD DX,AX
    JMP INLV
ERROR:
    MOV DX,OFFSET  S2
    MOV AH,09H
    INT 21H
    XOR DX,DX
    JMP INLV
CLV:
    CMP DX,0
    JZ ERROR
    MOV LEVEL,DL
    MOV ONE,'A'
    MOV TWO,'B'
    MOV THREE,'C'
KEY:
     MOV SI,1
     MOV AL,LEVEL
     MOV DL,AL
     INC DX
     XOR DH,DH
INIT2:
     MOV STACK1[SI],AL
     DEC AL
     INC SI
     CMP SI,DX
     JNE INIT2
     MOV AL,LEVEL
     MOV TOP1,AL
     MOV TOP2,0
     MOV TOP3,0
     MOV CHOOSE1,1
     MOV CHOOSE2,1
     MOV STEP1,0
     MOV PRESS,0
     MOV AH,0FH
     INT 10H
     PUSH AX
     CALL B10MODE
     CALL HANIO
     CALL CLEAR
     CALL C10DISPL1
     MOV AH,01H
     INT 21H
     POP AX
     MOV AH,00H
     INT 10H
     POP SI
     POP DX
     POP BX
     POP AX
     RET
KEYGAME ENDP

CODE ENDS
      END MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -