- UID
 - 62930
 
 注册时间2009-7-24
阅读权限20
最后登录1970-1-1
以武会友 
   
 
 
 
TA的每日心情  | 开心 2024-12-6 17:12 | 
|---|
 
  签到天数: 6 天 [LV.2]偶尔看看I  
 | 
 
 
- ; 联系人管理
 
 - ; 作者: 小奇
 
 - ; 日期: 2010-1-31
 
 - ; 备注: 今天写的代码,基本框架,有需要的就拿去吧!
 
 - ; 只写了打开文件,关闭文件,创建文件,还有一个switch
 
  
- .model small
 
 - .stack 200h
 
  
- .data
 
 -   szFileName       db 'data.dat', 0
 
 -   strOpenFileSuc   db 'Open File Success', 13,10, '
 
 -   strOpenFileFail  db 'Open File Failed' , 13, 10, '
 
 -   strCreateFileSuc db 'Create File Success', 13,10, '
 
 -   strCrateFileFail db 'Create File Failed' , 13, 10, '
 
 -   strCloseFileSuc  db 'Close File Success', 13,10, '
 
 -   strCloseFileFail db 'Close File Failed' , 13, 10, '
 
 -   strMenuTips      db 13,'**************************************************************',13,10
 
 -                    db '                        linkman manage',13, 10,13, 10
 
 -                    db 9,'1.Add linkman', 13, 10
 
 -                    db 9,'2.Search linkman', 13, 10
 
 -                    db 9,'3.Modification linkman information', 13, 10
 
 -                    db 9,'4.Delete linkman', 13, 10
 
 -                    db 9,'5.Show all linkman list', 13, 10
 
 -                    db 9,'0.Exit', 13, 10
 
 -                    db 13,10, '**************************************************************'
 
 -                    db 13,10, 'Please input: ', "$"
 
 -   strReenter       db 13, 10, 'input error,Please Reenter: ', '
 
 -   
 
 - .code
 
 - ; 函数名: CreateFile
 
 - ; 参  数: 文件类型
 
 - ; 作  用: 通过文件类型
 
 - ; 返回值: 如果AX为FFFFh的话,说明文件创建失败了
 
 - CreateFile proc
 
 - Argv = 4
 
 -         push bp
 
 -         mov  bp, sp
 
 -         push dx
 
 -         mov dx, offset szFileName
 
 -         push cx
 
 -         mov cx, [bp+Argv]
 
 -         jb  CREATEFAIL          ; 如果创建失败,将ax置为全FFFF
 
 -         mov dx, offset strCreateFileSuc
 
 -         jmp CREATEDISPLAY
 
 - CREATEFAIL:
 
 -         mov ax, 0ffffh
 
 -         mov dx, offset strCrateFileFail
 
 - CREATEDISPLAY:
 
 -         mov cx, ax
 
 -         mov ah, 9h
 
 -         int 21h
 
 -         mov ax, cx
 
 -         pop cx
 
 -         pop dx
 
 -         pop bp
 
 -         ret 2
 
 - CreateFile endp 
 
  
- ; 函数名: OpenFile
 
 - ; 参  数: 打开方式
 
 - ; 作  用: 通过打开方式,打开联系人数据文件
 
 - OpenFile proc
 
 - Argv = 4
 
 -         push bp
 
 -         mov  bp, sp
 
 -         ;保存原来的寄存器
 
 -         mov  dx, offset szFileName
 
 -         mov  ax, [bp+argv]
 
 -         ; 将ah清零,因为打开方式只用到了al
 
 -         mov  ah, 3dh
 
 -         int  21h
 
 -         push ax                         ; 将文件句柄保存起来
 
 -         jb   OPENFAIL
 
 - OPENSUC:
 
 -         ; 如果打开成功,不提示
 
 -         ; mov dx, offset strOpenFileSuc
 
 -         jmp OPENDISPLAY
 
 - OPENFAIL:
 
 -         mov  dx, offset strOpenFileFail
 
 - OPENDISPLAY:
 
 -         mov  ah, 9
 
 -         int 21h
 
 - OPENEXIT:
 
 -         pop  ax
 
 -         pop  bp
 
 -         ret  2
 
 - OpenFile endp
 
  
- ; 函数名: CloseFile
 
 - ; 参  数: 文件句柄
 
 - ; 作  用: 通过文件句柄,关闭已经打开的文件
 
 - CloseFile proc
 
 - Argv = 4
 
 -         push bp
 
 -         mov  bp, sp
 
 -         push ax
 
 -         push bx
 
 -         push dx
 
  
-         mov  ah, 3eh
 
 -         mov  bx, [bp + Argv]
 
 -         int  21h
 
 -         jb   CLOSEFAIL
 
 - CLOSESUC:
 
 -         mov  dx, offset strCloseFileSuc
 
 -         jmp  CLOSEDISPLAY
 
 - CLOSEFAIL:
 
 -         mov dx, offset strCloseFileFail
 
 - CLOSEDISPLAY:
 
 -         mov  ah, 9
 
 -         int  21h
 
 - CLOSEEXIT:
 
 -         ; 恢复寄存器
 
 -         pop  dx
 
 -         pop  bx
 
 -         pop  ax
 
 -         pop  bp
 
 -         ret  2
 
 - CloseFile endp
 
  
- ; 函数名: ClearScreen
 
 - ; 参  数: 无
 
 - ; 作  用: 清屏
 
 - ClearScreen proc
 
 -         ; 保存寄存器
 
 -         push bp
 
 -         mov bp, sp
 
 -         push ax
 
 -         push bx
 
 -         push cx
 
 -         push dx
 
 -         
 
 -         ; 清屏
 
 -         xor  cx, cx
 
 -         
 
 -         mov  dh, 32h             ; 列数
 
 -         mov  dl, 6eh             ; 行数
 
 -         mov  bh, 07              ; 清屏
 
 -         xor  cx, cx
 
 -         ; 清除整个屏幕
 
 -         mov  ax, 600h
 
 -         int  10h
 
 -         
 
 -         mov  bh, 0
 
 -         mov  dh, 0
 
 -         mov  dl, 0
 
 -         mov  ah, 2
 
 -         int  10h
 
 -         ; 恢复
 
 -         pop dx
 
 -         pop cx
 
 -         pop bx
 
 -         pop ax
 
 -         pop bp
 
 -         ret
 
 - ClearScreen endp
 
  
- ; 函数名: ShowMenu
 
 - ; 参  数: 无
 
 - ; 作  用: 显示操作界面
 
 - ShowMenu proc
 
 -         call ClearScreen
 
 -         mov dx, offset strMenuTips
 
 -         mov ah, 9
 
 -         int 21h
 
 -         ret
 
 - ShowMenu endp
 
  
- ; 函数名: ShowAll
 
 - ; 参  数: 文件句柄
 
 - ; 作  用: 显示操作界面
 
 - ShowAll proc
 
 -         mov dx, offset strReenter
 
 -         mov ax, 09h
 
 -         int 21h
 
 -         ret 2
 
 - ShowAll endp
 
  
- ; 函数名: ParseRequest
 
 - ; 参  数: 无
 
 - ; 作  用: 处理用户选项界面
 
 - ParseRequest proc
 
 -         ; 局部变量
 
 -         ; 这里不能这么申请,要改直接放到栈里去
 
 -         push bp
 
 -         mov  bp, sp
 
 -         push ax         ; 变量 保存文件句柄
 
 -         push bx
 
 -         push cx
 
 -         push dx
 
 -         
 
 -         ; 打开文件
 
 -         mov  ax, 2h     ; 2是打开文件的方式
 
 -         push ax
 
 -         Call OpenFile
 
 -         jb   CREATE       ; 如果打开文件失败,则跳去创建文件       
 
 - PARSE:                   
 
 -         call ShowMenu
 
 - INPUT:                          ; 用户输入
 
 -         xor ax, ax
 
 -         int 16h
 
 -         ; 输入回显
 
 -         mov ah, 6
 
 -         mov dl, al
 
 -         int 21h
 
 -         
 
 -         cmp al, '0'       ; 如果用户输入0的话结束
 
 -         jz  PARSEEXIT
 
 -         sub al, '1'
 
 -         sub al, 4         ; 如果大于5的话
 
 -         jg  REINPUT
 
 -         ;-------------------------- 这里处理用户的请求了
 
 -         mov ax, ss:[bp-2]
 
 -         ; 把参数压进栈
 
 -         push ax
 
 -         mov bx, offset ParseTable
 
 -         shl ax, 1
 
 -         add bx, ax
 
 -         mov ax, cs:[bx]
 
 -         call ax
 
 -         ;; 处理完请求跳回去继续等待用户输入
 
 -         jmp PARSE
 
  
- CREATE:                 ; 创建文件
 
 -         xor ax, ax
 
 -         push ax
 
 -         call CreateFile
 
 -         cmp ax, 0ffffh
 
 -         jnz  PARSE
 
 - PARSEEXIT:     
 
 -         pop dx
 
 -         pop cx
 
 -         pop bx
 
 -         pop bp          ; 变量
 
 -         pop bp
 
 -         ret
 
 - REINPUT:
 
 -         mov dx, offset strReenter
 
 -         mov ah, 09h
 
 -         int 21h
 
 -         jmp INPUT
 
  
-         ; 还没有加函数
 
 - ParseTable      dw offset PARSEEXIT;
 
 -                 dw offset PARSEEXIT;
 
 -                 dw offset PARSEEXIT;
 
 -                 dw offset PARSEEXIT;
 
 -                 dw offset ShowAll;
 
 - ParseRequest endp
 
  
- ; 程序入口函数
 
 - main:
 
 -         mov ax, @data
 
 -         mov ds, ax
 
 -         mov es, ax
 
 -         call ParseRequest
 
 -         mov ah, 4ch
 
 -         int 21h
 
 - end main
 
  复制代码 |   
 
 
 
 |