📄 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,<offset EnvName>,<offset Comspec>
@Next:
DisplayMessage Prompt
;
;Gets函数返回字符串字符数在ax(不包括结尾的0)
;
LibCall Gets,<offset @CmdLine>
or ax,ax
jz @End
add ax,03h
mov ds:Count,al
;
;Exec有两个参数:第一个是程序名,是以0结束的字符串地址偏移(其段地址为ds);
; 第二个是参数名,是前面冠以其长度的字符串的地址偏移
;如果调用成功cf=0,否则cf=1错误代码在ax
;
LibCall Exec,<offset Comspec>,<offset CmdLine>
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -