php 小偷程序 伪原创(汇编语言程序为例的细节和指令的格式)
优采云 发布时间: 2021-10-31 14:11php 小偷程序 伪原创(汇编语言程序为例的细节和指令的格式)
汇编语言以晦涩着称,但本教程从另一个角度看待它——它是一种提供几乎所有信息的语言。程序员可以看到发生的一切,甚至 CPU 中的寄存器和标志!
但是,在拥有这种能力的同时,程序员必须对数据表示的细节和指令的格式负责。程序员在具有大量详细信息的级别上工作。现在以一个简单的汇编语言程序为例来了解它的工作过程。
该程序执行两个数字的加法并将结果保存在寄存器中。程序名称是 AddTwo:
main PROC
mov eax, 5 ;将数字 5 送入 eax 寄存器
add eax, 6 ;eax 寄存器加 6
INVOKE ExitProcess, 0 ;程序结束
main ENDP
现在按照一次一行代码的方法仔细看看这个程序:
您可能已经注意到程序中收录的注释,它总是以分号开头。程序顶部省略了一些声明,后面会解释,但本质上这是一个可用的程序。
它不会在屏幕上显示所有信息,而是借助工具程序调试器,程序员可以一次执行一行代码并查看寄存器的值。
现在添加一个变量使这个程序更有趣,将加法运算的结果存储在变量 sum 中。为此,您需要添加一些标签或声明,以标识程序的代码和数据区:
.data ;此为数据区
sum DWORD 0 ;定义名为sum的变量
.code ;此为代码区
main PROC
mov eax,5 ;将数字5送入而eax寄存器
add eax,6 ;eax寄存器加6
mox sum,eax
INVOKE ExitProcess,0 ;结束程序
main ENDP
变量 sum 在第 2 行中声明,其大小为 32 位,并使用关键字 DWORD。汇编语言中有很多这样的大小关键字,它们的功能或多或少与数据类型相同。
但是它们不像程序员可能熟悉的类型那样具体,例如 int、double、float 等。这些关键字只限制大小,不检查存储在变量中的内容。请记住,程序员拥有完全控制权。
顺便说一下,由 .code 和 .data 伪指令标记的那些代码和数据区域称为段。即程序有代码段和数据段。