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

📄 邓维维(文件模块).txt

📁 这是用汇编语言编写的推箱子课程设计
💻 TXT
字号:
;运行,选择 1 . 2 . 3 .功能,出错则提示,成功则 o k(本程序在下d:\建立list.dat,可改为a:\下
;而在软驱不放盘演示出错?       
data          SEGMENT
    display   DB        '   1, creat file',0dh,0ah
              DB        '   2. read file',0dh,0ah
              DB        '   3.  write file',0dh,0ah,'$'          
    err1      DB        'creat file error$'          
    err2      DB        'open file error$'
    err3      DB        'read file error$'         
    err4      DB          'write file error$'
    err5      DB          'close file error$' 
    correct   DB           'OK!$'                               
    fhle      DW        ?   ;文件句柄      
    fname     DB        './data.dat',0  ;ASCIIZ串
              ;下段数据存入文件list.dat,(一共39字节)
      relist  LABEL     BYTE       ;将relist为标志的数据段存入指定文件                         
     rank1     DB        1     
     namm1     DB        'Linus' 
               DB        5 DUP('0')
     sc1       DW        '60'
              ;
     rank2     DB        2
     namm2     DB        'Bill' 
               DB        6 DUP('0')
     sc2       DW        '85'
              ;
     rank3     DB        3  
     namm3     DB        'www' 
               DB        7 DUP('0')
     sc3       DW        '30'
              ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
data          ENDS
code          SEGMENT
   main       PROC      FAR
              ASSUME    CS:code,DS:data
       start: 
              PUSH      DS
              XOR       AX,AX
              PUSH      AX
              MOV       AX,data
              MOV       DS,AX
              ;********************
              MOV       AH,9
              MOV       DX,SEG display
              MOV       DS,DX
              MOV       DX,OFFSET display
              INT       21h
             ;************ 
    begin:    MOV       AH,0
              INT       16h  ;比较扫描码
              CMP       AH,1 ;esc
              JE        exit
              CMP       AH,2   ;1  creat
              JNE       nexta
              CALL      creatfile
  nexta:      CMP       AH,3  ;2  read
              JNE       nextb
              CALL      readfile
  nextb:      CMP       AH,4 ;3   write
              JNE       nextc
              CALL      writefile
  nextc:     JMP      begin                                                                

    exit:          RET

    main      ENDP
creatfile     PROC      NEAR

              MOV       AH,3ch
              MOV       CX,0
              LEA       DX,fname
              INT       21h
              JC        cerr
              MOV       fhle,AX           ;creat file
              CALL      ok
              RET
    cerr:     MOV       AH,9
              MOV       DX,SEG err1
              MOV       DS,DX
              MOV       DX,OFFSET err1
              INT       21h   
              RET         
creatfile     ENDP
LoadGame      PROC      NEAR
              MOV       AH,3dh
              MOV       AL,00
              LEA       DX,fname
              INT       21h
              JC        operr
              MOV       fhle,AX           ;open file for read
              JMP       go_on
       operr: MOV       AH,9
              MOV       DX,SEG err2
              MOV       DS,DX
              MOV       DX,OFFSET err2
              INT       21h          
              RET
     go_on:            
              MOV       AH,3fh
              MOV       BX,fhle
              MOV       CX,39
              LEA       DX,relist
              INT       21h                  ;read it
              JC        rerr
              
              MOV       AH,3eh
              MOV       BX,fhle
              INT       21h          ;close the file
              JC        closeerr
              CALL      ok
              RET
   closeerr:  MOV       AH,9
              MOV       DX,SEG err5
              MOV       DS,DX
              MOV       DX,OFFSET err5 
              INT       21h                     
               RET 
    rerr:     MOV       AH,9
              MOV       DX,SEG err3
              MOV       DS,DX
              MOV       DX,OFFSET err3 
              INT       21h

              RET                                                            
LoadGame      ENDP                                                                      
SaveGame     PROC      NEAR

              MOV       AH,3dh
              MOV       AL,01
              LEA       DX,fname
              INT       21h
              JC        oerr
              MOV       fhle,AX           ;open for write
              JMP       goon
       oerr:  MOV       AH,9
              MOV       DX,SEG err2
              MOV       DS,DX
              MOV       DX,OFFSET err2 
              INT       21h                
              RET
              
   goon:      MOV       AH,40h
              MOV       BX,fhle
              MOV       CX,39
              LEA       DX,relist
              INT       21h                ;write file
              JC        werr
              MOV       AH,3eh
              MOV       BX,fhle
              INT       21h                ;close the file
              JC        clserr
              CALL      ok
              RET
     clserr:  MOV       AH,9
              MOV       DX,SEG err5
              MOV       DS,DX
              MOV       DX,OFFSET err5
              INT       21h          
              RET
     werr:    MOV       AH,9
              MOV       DX,SEG err4
              MOV       DS,DX
              MOV       DX,OFFSET err4
              INT       21h          
              RET 

SaveGame     ENDP
ok            PROC      NEAR
              MOV       DL,2
              MOV       AH,02h
              INT       21h
              MOV       AH,9
              MOV       DX,SEG correct
              MOV       DS,DX
              MOV       DX,OFFSET correct
              INT       21h
              MOV       DL,2
              MOV       AH,02h
              INT       21h          
              RET
ok            ENDP                                                        

             
code          ENDS
              END       start                                                                                         

⌨️ 快捷键说明

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