www.pudn.com > Demo_asm_80x86.rar > ExecDemo.asm
;****************************************************** ;* 文件名:ExecDemo.asm ;* 创建日期:2001.7.17 ;* 作者:陈文尧 ;* 功能:测试未来汇编库函数Exec和GetEnv ;* 备注:本程序是由Turbo Pascal的一个例子改编而来 ;****************************************************** include system.inc ;****************************************************** ;* 以下代码由汇编专家产生,不要随便修改 ;****************************************************** .CODE ifdef __COM__ org 100h endif @@Start: ;------------------------------------------------------ ; 初始化数据段 ;------------------------------------------------------ InitDS cs ;------------------------------------------------------ ; 释放多余内存 ;------------------------------------------------------ ModifyMemory ;xxx ;------------------------------------------------------ ; 调用主函数 ;------------------------------------------------------ call main ;------------------------------------------------------ ; 正常返回DOS ;------------------------------------------------------ @@Exit: ReturnDos ;++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;+ 主函数,加入实现程序功能的代码 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++ main proc ; ;GetEnv函数返回字符串字符数在ax(不包括结尾的0),但这儿不用 ; LibCall GetEnv,, @Next: DisplayMessage Prompt ; ;Gets函数返回字符串字符数在ax(不包括结尾的0) ; LibCall Gets, or ax,ax jz @End add ax,03h mov ds:Count,al ; ;Exec有两个参数:第一个是程序名,是以0结束的字符串地址偏移(其段地址为ds); ; 第二个是参数名,是前面冠以其长度的字符串的地址偏移 ;如果调用成功cf=0,否则cf=1错误代码在ax ; LibCall Exec, , jnc @Skip DisplayMessage ErrMsg @Skip: jmp @Next @End: ; ret main endp Prompt db 'Enter Dos Command:$' ErrMsg db 'Could not execute COMMAND.COM$' EnvName db 'COMSPEC',00h Comspec db 80h dup(?) CmdLine label byte Count db ? db '/C ' ;/C 选项为:执行命令并返回 @CmdLine db 80h dup(?) ;****************************************************** ;* 标志程序结束并指定程序入口 ;****************************************************** end @@Start