论坛: 编程破解 标题: 小鸟飞行的程序 复制本贴地址    
作者: morrel [morrel]    论坛用户   登录
小鸟飞
功能简述:该程序为小鸟飞行的程序,最主要用到数字键盘,用它们来控制8个方向,对应的键为7――左上 ,8――上,9――右上,4――左,6――右,1――左下,2――下,3――右下,0――退出,其他键――同6(向右)。
以下为源程序:程序名――FEINIAO.ASM
DATA    SEGMENT
E      DB 'R-6  D-2  RD-3 QUIT-0 LEFT-4 UP-8 LUP-7 LD-1 RUP-9 OTHER-RIGHT $'
STACK  SEGMENT STACK                    ;上面为控制键的提示信息
        DB 200 DUP(0)
STACK  ENDS
CODE    SEGMENT
        ASSUME CS:CODE,SS:STACK ,DS:DATA
START:  MOV  AX,DATA
        MOV  DS,AX
        MOV  AH,0         
        MOV  AL,2                        ;设置显示方式为80*25黑白文本方式
        INT  10H
        MOV  CX,1                    ;为功能0AH调用作准备,即为重复次数1次
        MOV  DX,0F09H                   
        MOV  AH,2                        ;设置当前光标位置为0FH行9H列
        INT  10H
        LEA  DX,E
        MOV  AH,9                        ;输出控制键的提示信息
        INT  21H
        MOV  SI,1                        ;设置SI初值为1
    MOV  DX,0A20H                    ;重置当前光标位置为0AH行20H列
K:      INC  SI                          ;SI值增加1             
        TEST SI,1                        ;测试SI最低位值
        JNZ  J                          ;为1,转J
        MOV  AL,' '                      ;空格给AL
        JMP  L                     
J:      MOV  AL,'V'                      ;'V'给AL
L:      MOV  AH,10                      ;在当前光标位置写字符(属性不改变)
        INT  10H
        MOV  AH,8                        ;从键盘上输入字符,但不送显示器显示
        INT  21H            
        CMP  AL,'2'                      ;以下为判断按的键,从而转相应位置
        JZ  L2
        CMP  AL,'6'
        JZ  L6
    CMP  AL,'7'
        JZ  L7
        CMP  AL,'3'
        JZ  L3
    CMP  AL,'9'
        JZ  L9
    CMP  AL,'1'
        JZ  L1
        CMP  AL,'4'
        JZ  L4
        CMP  AL,'8'
        JZ  L8
        CMP  AL,'0'                      ;按0键退出程序
        JZ  EXIT
    CALL A
        JMP  L6                          ;按其余键转L6,即左移
L6:    CALL A
        MOV  AH,2
        INC  DL                          ;左移
        INT  10H
        JMP  K
L7:    CALL A
        MOV  AH,2
        DEC  DL                          ;左上移
    DEC  DH
        INT  10H
    JMP  K
L9:    CALL A
        MOV  AH,2
        DEC  DH                          ;右上移
    INC  DL
        INT  10H
    JMP  K
L1:    CALL A
        MOV  AH,2
        DEC  DL                          ;左下移
    INC  DH
        INT  10H
    JMP  K
L2:    CALL A
        MOV  AH,2
        INC  DH                          ;下移
        INT  10H
    JMP  K
L3:    CALL A
        MOV  AH,2
        INC  DH
        INC  DL                          ;右下移
        INT  10H
    JMP  K
L4:    CALL A
        MOV  AH,2
        DEC  DL                          ;左移
        INT  10H
    JMP  K
L8:    CALL A
        MOV  AH,2
        DEC  DH                          ;上移
        INT  10H
    JMP  K
EXIT:  MOV  AH,4CH                      ;退出程序
        INT  21H
A      PROC                            ;子程序-清除刚才显示的字符
    PUSH AX                          ;现场保护
    MOV  AH,10
    MOV  AL,0                     
    INT  10H
        POP  AX                          ;现场恢复
        RET
A      ENDP

CODE  ENDS
        END  START














(流程图见下一页)



[此贴被 286(unique) 在 05月31日09时36分 编辑过]

地主 发表时间: 04-05-28 17:59

回复: lovejiang [lovejiang]   论坛用户   登录
不错呀

B1层 发表时间: 04-05-28 19:12

回复: yuanrulai [yuanrulai]   论坛用户   登录
这不是汇编书上的用业吗?


B2层 发表时间: 04-05-28 19:35

回复: morrel [morrel]   论坛用户   登录
希望大家多提意见!

B3层 发表时间: 04-06-02 22:03

回复: bellamy [bellamy]   论坛用户   登录
是汇编的作业啊!

B4层 发表时间: 04-07-01 18:19

回复: buszker [buszker]   论坛用户   登录
汇编偶看不懂

哪位好心人教一下怎么运行

B5层 发表时间: 04-07-02 15:26

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号