Assembly 解释一些ASM
我有这个ASM代码,我需要帮助解释它,主要是宏。我尝试了一个ASM-to-C反汇编工具,但无法将其用于多个文件,其他文件远远超出了我的预算。Assembly 解释一些ASM,assembly,x86,reverse-engineering,dos,Assembly,X86,Reverse Engineering,Dos,我有这个ASM代码,我需要帮助解释它,主要是宏。我尝试了一个ASM-to-C反汇编工具,但无法将其用于多个文件,其他文件远远超出了我的预算。 宏公司: pokazvane_cifra_dl macro program.asm: $prompt> exe.exe abcde edcba$prompt> 。型号小 .烟囱100小时 .数据 .代码 开始: mov cx,5 第1点: mov-ah,01h int 21h mov啊,0h 推斧 环povtori1 po
宏公司:
pokazvane_cifra_dl macro
program.asm:
$prompt> exe.exe
abcde
edcba$prompt>
。型号小
.烟囱100小时
.数据
.代码
开始:
mov cx,5
第1点:
mov-ah,01h
int 21h
mov啊,0h
推斧
环povtori1
pokazvane_znak_dl 10d
pokazvane_znak_dl 13d
mov cx,5
第二点:
波普dx
mov啊,02h
int 21h
环povtori2
出口
结束-开始
非常感谢您的帮助。
pokazvane_cifra_dl macro
:将值dl+48
显示为ASCII字符
如果dl
是从0
到9
的值,它将显示相应的ASCII数字'0'
-'9'
,因此宏的名称类似于“display digit”(尽管您也可以使用例如dl=40
来调用它,并且它将显示ASCII字符'X'
)
exit macro
:将控制返回DOS(整个源代码是针对DOS平台的,即16位实模式x86程序集,带有int 21h
,用于系统服务,即需要类似DOS的操作系统才能工作)
pokazvane_znak_dl'X'
宏:与第一个宏略有不同,这次显示任何ASCII字符,如pokazvane_znak_dl'X'
以显示'X'
eho_al宏
:是否显示dl
中的ASCII字符。不知道为什么名称会显示eho_al
,但它根本不会使用al
,相反,如果它不在int 21h
周围推/弹出ax,它会破坏al
中的值
守则本身:
- 将从输入中读取5个字符(ASCII),然后
将它们推送到堆栈上
- 显示两个字符
和10
以创建“新行”(DOS中正确的顺序是13
13
,另一种方式)10
- 然后它将从堆栈中逐个弹出这5个字符,并在屏幕上显示每个字符
- 退出待办事项
编辑:我忘记了输入/输出的push+pop-in循环将有效地反转输入“字符串”,因为堆栈是后进先出(Last-in-First-Out)类型的队列/容器(我仍然没有真正编译并运行它,所以如果您真的需要100%回答代码的功能,请运行它)。宏?有四个。。。哪一个?你查阅过DOS中断参考吗?这是你的母语吗?这些名字看起来很有解释力,有什么你不明白的吗?@Jester尽管我看得很仔细,但我只能看到3个。@tofro考虑到格式错误…)有4种方法。在尝试对任何组件进行逆向工程之前,可能首先要进行组装课程,这样你才能理解说明的作用。事实上,RE通常比编写自己的代码更难,所以如果你连这些琐碎的代码都不懂的话,那么尝试RE就没有什么意义了。非常感谢你,你是一个生命的救世主。
include macro.inc
$prompt> exe.exe
abcde
edcba$prompt>