assembly - 在程序集中解析命令行参数
问题描述
它是一个 16 位 x86 代码。我已经存储了每个命令,例如“hi”命令
cmd_hi db 'hi', 0
然后我得到输入字符串使用
mov di, sp ; get input
call get_string
jcxz loop_start ; blank line?
并将其与存储的命令进行比较
mov si, sp
mov di, cmd_hi ; "hi" command
call strcmp
je .greetme
使用 strcmp 循环
strcmp:
.loop_start:
mov al, [si] ; grab a byte from SI
cmp al, [di] ; are SI and DI equal?
jne .done ; no, we're done.
test al, al ; zero?
jz .done ; yes, we're done.
inc di ; increment DI
inc si ; increment SI
jmp .loop_start ; loop!
.done:
ret
但现在我想向我的函数添加独立参数,例如 2 个整数
cmd> hi 1 2
以这种方式解析参数的最佳方法是什么?
解决方案
通常,如果是 .com 文件(我不确定 .exe,但我记得它是一样的),您在加载程序的内存段中有两个命令行参数副本。.com 在 0x100h 处加载,命令行参数应在代码段的 0 到 0x100h 之间找到。
推荐阅读
- python - 从零开始的神经网络:只正确预测训练输入
- python-3.x - 使用glob查询文件的正确方法
- notepad++ - notepad ++中对齐和缩进换行之间的区别?
- c# - 如何在 UML 序列图中表示 c# setter?
- node.js - 如何将模型转换为 Mongoose 中的不同响应
- automated-tests - 如何从 @DataProvider 获取 @Before 中的 @Test 和 TestNG 中的 @AfterMethod 注释的参数值
- python - 如何将导出放在 shell 脚本中以包含 oracle 库
- python - Python Unittest - 模拟与补丁
- c++ - 擦除后C ++设置值突然改变?
- pip - 安装pip时如何处理'/usr/bin/python:没有名为pip的模块'?