为什么这么小的装配程序如此之慢?

tak*_*eek 2 x86 assembly

我有以下汇编程序,显示字母'z'然后退出:

mov dl, 'z'
mov ah, 2h
int 21h
mov ah, 4Ch
int 21h
Run Code Online (Sandbox Code Playgroud)

我用NASM组装它,结果文件只包含那些指令.(10个字节)我在批处理文件中对此程序进行了1000次调用,然后进行了1000次调用

echo z
Run Code Online (Sandbox Code Playgroud)

并且回声的速度提高了约10倍.有谁知道导致这个程序运行得如此缓慢的原因是什么?提前致谢.

Mar*_*som 14

"echo"是一个内置在命令解释器中的命令; 不需要加载代码来执行命令.您的程序虽然很小,但需要在每次调用时读入内存并进行初始化.在它到达那一点之前,命令解释器将搜索PATH以找到该程序,这需要花费大量时间.


Ran*_*pho 8

可能这与您的代码关系不大,而与底层操作系统有关.

Echo是命令解释器立即识别的命令.因此,调用echo不会启动新进程; 回声发生在命令解释器的范围内.

另一方面,启动小型程序集程序涉及创建一个新进程以及所暗示的所有开销.


小智 6

我认为echo命令可能构建在shell中,因此在每次调用时都没有加载新程序的开销