汇编语言基础知识篇章一,预备知识

汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。

随着现代软件系统越来越庞大复杂,大量经过了封装的高级语言如C/C++,Pascal/Object Pascal也应运而生。这些新的语言使得程序员在开发过程中能够更简单,更有效率,使软件开发人员得以应付快速的软件开发的要求。而汇编语言由于其复杂性使得其适用领域逐步减小。但这并不意味着汇编已无用武之地。由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应用。

此外,虽然有众多编程语言可供选择,但汇编依然是计算机科学类专业的领域,以让我们深入了解计算机的运行原理。

汇编语言基础知识篇章一,预备知识

编程工程概念

1.机器码,又称机械码。当你用16进制编辑器打开、编辑exe等可执行文件时你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码。修改程序时,必须通过修改机器码来修改exe等可执行文件。所以,能够修改16进制机器码的软件就是我们的必备工具,拿进随身药箱中。机器码究竟有什么用处呢?我们来举个例子,在汇编语言中:NOP这条指令很简单也很常用。在编译的时候,编译器会扫描整个源代码。由于计算机只能识别二进制的0和1,所以,源代码"NOP"是无法直接运行的。当编译器遇到"NOP"的时候,为了生成让计算机能运行和识别的"东西",就会以十六进制数"90"来代替它。在这里,"90"就是"机器码",而"NOP"则是"助记符(mnemonic)"。我们平时用高级语言编写的源代码编译成exe文件时,都会被翻译成机器可识别的二进制数0和1,从而操控程序的执行。所以,修改程序时必须通过修改机器码来实现exe等可执行文件的修改.也就是说,十六进制编辑器是修改程序必不可少的工具软件。字符在机器里必须用二进制数来表示,它是通过ASCII码来实现的。ASCII码是美国信息交换标准码(American Standard Code for Information Interchange)。这个编码标准的主要作用是使计算机能通过一个八位的存储单元--"字节(byte)"来进行信息交换。

下面的ASCII码和对应的字母数字是比较常用的,一定要牢记在心。

a,b,c,d,e-61,62,63,64,65(十六进制)->97,98,99,100,101(十进制)

A,B,C,D,E-41,42,43,44,45(十六进制)->65,66,67,68,69(十进制)

1,2,3,4,5-31,32,33,34,35(十六进制)->49,50,51,52,53(十进制)

汇编语言基础知识篇章一,预备知识

公钥加密

2. 16进制编辑器。16进制编辑器是编辑、修改exe等可执行文件的软件。常用的有UltraEdit、WinHex等。由于这两款软件非常有名,网上有很多介绍它们使用的文章,作为作业,自己去搜索,学学它们的用法。

汇编语言基础知识篇章一,预备知识

工作的商务人士

3. 修改指令时常用汇编指令如下:

cmp a,b 比较a与bmov a,b 把b的值送给a,使a=bret 返回主程序nop 无作用,英文"no operation"的简写,意思是"do nothing"(机器码90) (解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)call 调用子程序,子程序以ret结尾,返回值保存在EAX中je 或jz 若相等则跳(机器码74 或0F84)jne或jnz 若不相等则跳(机器码75或0F85)jmp 无条件跳(机器码EB)jb 若小于则跳ja 若大于则跳jg 若大于则跳jge 若大于等于则跳jl 若小于则跳jle 若小于等于则跳pop xx xx出栈push xx xx压栈,详细的指令请继续关注萃乎。

汇编语言基础知识篇章一,预备知识

编程和编码概念

4. 机器码常见修改指令,参看表1

汇编语言基础知识篇章一,预备知识


分享到:


相關文章: