• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 汇编源码系列之frespace

汇编源码系列之frespace

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了汇编源码,易语言反汇编源码,win7用远程汇编源码,反汇编源码,易语言汇编源码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究.......

; frespace.ASM  10/04/84 gwf
;
;
;
;  CALL FRESPACE(AH,AL,BH,BL,CH,CL). CL SHOULD BE 0 for default
;   drive 1 for A, 2 for B, 3 for C, etc. The value of the
;   other variables does not matter. They will come back
;   with a meaningful value.
;
;      AN EXAMPLE PROGRAM:
;
;   10 defint a-z
;   20 color 7,1:cls
;   30 test1=1:ah=0:al=0:bh=0:ch=0:cl=1:test2=2
;   35 INPUT"DRIVE 0=DEFAULT, 1=A, 2=B, 3=C";CL
;   37 PRINT"JUST BEFORE CALL"
;   40 CALL FRESPACE(AH,AL,BH,BL,CH,CL)
;   45 PRINT"JUST AFTER CALL"
;   50 PRINT" AH=";AH;" AL=";AL;" BH=";BH;" BL=";BL;" CH=";CH;" CL=";CL;
;   60 UFREE!=256*AH+AL
;   70 UBYTES!=256*BH+BL
;   80 USECTOR!=256*CH+CL
;   90 PRINT"UFREE!=";UFREE!;" UBYTES!=";UBYTES!;"  USECTOR!=";USECTOR!
;   100 FRESPACE!=UFREE!*UBYTES!*USECTOR!
;   110 PRINT"FRESPACE!=";FRESPACE!
;   120 PRINT"THIS SHOULD BE 1",TEST1
;   130 PRINT"THIS SHOULD BE 2",TEST2
;
get_spa equ  36h  ;Get disk free space function call
doscall equ  21h  ;DOS interrupt number
dgroup  group  datarea
datarea segment para public 'DATA'
ah_ret  dw  ?    ;ah to be sent back
al_ret  dw  ?    ;al to be sent back
bh_ret  dw  ?    ;bh to be sent back
bl_ret  dw  ?    ;bl to be sent back
ch_ret  dw  ?    ;ch to be sent back
cl_ret  dw  ?    ;cl to be sent back
datarea ENDS
;
cseg    segment 'CODE'
    assume cs:cseg
    public frespace
frespace  proc  far
  push  bp    ;BP from BASIC
  mov  bp,sp    ;set base for parm list
  push  ds    ;DS from basic work area
  push  es    ;ES from basic work area
  mov  ax,datarea  ;establish data addressability
  mov  ds,ax    ;now DS is local data
  assume  ds:datarea
;
;
;
;
  push  bp
  sub  ax,ax
  mov  si,ss:[bp+6]  ;get addr of parameter
  mov  al,es:[si]  ;get value of parm
  mov  dx,ax    ;dl contains the drive number on call
        ;dh will be zero
  mov ah,get_spa   ;get space function number
  int doscall    ;Call DOS
; Move the values into local work area to prepare to send back to basic
  xchg  dx,ax    ;must have a word. Want to zero out DH.
  sub  ax,ax    ; produce the zero
  xchg  dx,ax    ; DX is now zero.
        ; DH is what we really want as zero.
  mov  dl,ah    ;want to send back a byte
  mov  ah_ret,dx  ;  prepare to return ah
  mov  dl,al    ;want to send back a byte
  mov  al_ret,dx  ;  prepare to return al
  mov  dl,bh    ;want to send back a byte
  mov  bh_ret,dx  ;  prepare to return bh
  mov  dl,bl    ;want to send back a byte
  mov  bl_ret,dx  ;  prepare to return bl
  mov  dl,ch    ;want to send back a byte
  mov  ch_ret,dx  ;  prepare to return ch
  mov  dl,cl    ;want to send back a byte
  mov  cl_ret,dx  ;  prepare to return cl
; Go back
  pop  bp    ;get back Basic's workspace
  mov  ax,cl_ret
  mov  si,ss:[bp+6]
  mov  es:[si],ax  ;return cl
  mov  ax,ch_ret
  mov  si,ss:[bp+8]
  mov  es:[si],ax  ;return ch
  mov  ax,bl_ret
  mov  si,ss:[bp+10]
  mov  es:[si],ax  ;return bl
  mov  ax,bh_ret
  mov  si,ss:[bp+12]
  mov  es:[si],ax  ;return bh
  mov  ax,al_ret
  mov  si,ss:[bp+14]
  mov  es:[si],ax  ;return al
  mov  ax,ah_ret
  mov  si,ss:[bp+16]
  mov  es:[si],ax  ;return ah
;
  pop  es
  pop  ds
  pop  bp
  ret  12    ;return to basic 6 parameters were sent
frespace  endp
;-----------------------------------------------------------------------
cseg  ends
  end      ;end for assembler


</div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 汇编源码系列之inthand
  • 汇编源码系列之cdcheck
  • 汇编源码系列之cldoc12
  • 汇编源码系列之basload
  • 汇编源码系列之basmain
  • 汇编源码系列之brk2
  • 汇编源码系列之cleanf
  • 汇编源码系列之charop
  • 汇编源码系列之sertype
  • 汇编源码系列之comint

相关文章

  • 2017-06-28汇编教程:虚拟设备驱动程序结构
  • 2017-06-28GUI编程中以对话框为主要界面的应用程序
  • 2017-06-28汇编内存管理和文件输入输出
  • 2017-06-28汇编教程:启动画面
  • 2017-06-28对“如何在运行时得到某处的实际地址”的补充
  • 2017-06-17减运算指令
  • 2017-06-28hello,world!win32汇编小程序
  • 2017-06-28PE文件结构剖析
  • 2017-06-28动态库的执行时间
  • 2017-06-28汇编源码系列之getsect

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • hello,world!win32汇编小程序
    • Win32汇编的环境和基础
    • 汇编源码系列之showmem
    • LEA指令的妙用
    • 关于汇编div/idiv/mul/imul指令的用法
    • 外部设备
    • 汇编语言及意义
    • 汇编教程:多文档界面(MDI)
    • 汇编教程之绘制文本
    • 汇编教程:获得结果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有