更新时间: 发布时间: 来源:红尘剑客 144
汇编语言,即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。当计算机的硬件不认识字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数。
一般来说至少要知道如下几点:
*)程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF…THEN…ELSE…),循环结构(FOR…NEXT)三种结构。
*)知道什么是子程序,什么是调用。
*)汇编程序员的视角。不同编程视角编程要求是不一样的。比如删除文件,
用户的视角是找到“删除”按钮或菜单,然后单击一下即可。
高级程序员的视角是知道删除的文件,并发出删除命令。这些通过API实现。
汇编程员的视角是得到要删除的文件名,找到该文件所在位置,通过调用删除“中断命令”进行删除。
操作系统开发人员的视角则是接到删除命令后,先找到系统根目录区,由根目录区的链接依次找到子目录区,直到找到要删除的文件,然后按照操作系统删除文件的规则对该文件名进行修改。比如DOS,只把第一个字符改成”?”。
按程序语句等价的角度看,一行VB的打印语句,用汇编实现大约需要一百二十多行。知道汇编语言的视角后就要知道,前面的道路是坎坷的,没有耐心是不行的。想通过几分钟几行程序就完成很复杂的操作不是件容易的事。
汇编产生于DOS时代或更早,而现在是Windows时代,所以可能遗憾地说:尽管还有批牛人在用汇编开发核心级程序,但我们几乎没什么用,除了必要时间能拿来分析一两个程序的部分代码之外,别的也就没干什么用了。并且并不是所有的汇编命令都能在windows下使用。而泛泛地追求“时髦”而学本语言,最后的结果是损了夫人又折兵。所以学之前你要考虑好。我劝那些为了当“黑客”而学汇编的人就此止步。

初期入门学习的软件要用到:DosBox:提供虚拟的DOS环境。注意Windows10的命令提示符没有debug调试工具,所以要安装DosBox。macOS推荐使用Boxer,mac版的dosbox版本太旧且不支持复制粘贴所以不推荐masm和link:用于汇编、链接源码和可执行文件debug:用于调试程序,能查看寄存器和内存的情况。
数据传送指令集
MOV
功能:把源操作数送给目的操作数
语法:MOV 目的操作数,源操作数
格式:MOV r1,r2
MOV r,m
MOV m,r
MOV r,data
XCHG
功能:交换两个操作数的数据
语法:XCHG
格式:XCHG r1,r2XCHG m,r XCHG r,m
PUSH,POP
功能:把操作数压入或取出堆栈
语法:PUSH 操作数 POP 操作数
格式:PUSH r PUSH M PUSH data POP r POP m
PUSHF,POPF,PUSHA,POPA
功能:堆栈指令群
格式:PUSHF POPF PUSHA POPA
LEA,LDS,LES
功能:取地址至寄存器
语法:LEA r,m LDS r,m LES r,m
XLAT(XLATB)
功能:查表指令
语法:XLAT XLAT m
立即申请报名,提升你的技能