
汇编语言基础
一只自动编码机
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
程序机器级表示 1.mov指令
mov指令的目的是将数据从源操作数复制到目的位置。一般格式为 mov 源操作数 目的操作数。 最简单的mov指令如下: movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 当将较小的源值复制到较大的目的时,有两类指令可以使用。 MOVZ类将目的剩余字节填充为0,MOVS类通过符号位扩展从而填充,即将源操作数的最高位进行复制。具体如下 movzbw 零扩展...原创 2019-01-19 10:10:46 · 2187 阅读 · 0 评论 -
程序机器级表示 2.寄存器等相关知识
最初的8086有八个16位寄存器,即从%ax到%bp,扩展到IA32架构后寄存器也扩展成32位,即%eax到%ebp。到目前的x86-64,原先的8个寄存器就扩展成64位,即%rax到%rbp。除这些寄存器之外,还增加了8个新的寄存器,标号为%r8到%r15。 在各个程序中,不同的寄存器扮演不同的角色。其一般使用惯例如下: ... 一般指令都有对应的操作数,即该操作需要的员数据值和放置结果的...原创 2019-01-19 10:52:56 · 169 阅读 · 0 评论 -
程序机器级表示 3.压栈出栈与算术逻辑操作
栈是一个典型的数据结构类型,在此对栈的思想不再赘述,这里讲一下栈的汇编实现。 栈遵循后进先出的原则,通过push将数据压栈,通过pop删除数据。栈底的地址为最大的。 对应命令就是 pushq S,将四字压入栈中 popq D,将四字弹出栈 push等价于: sub $8,%rsp movq %rbp,(%rsp) pop等价于: movq (%rsp), %rax add $...原创 2019-01-19 21:40:21 · 464 阅读 · 0 评论 -
程序机器级表示 4.条件控制
CPU通过条件码的检测来执行条件分支指令,最常用的条件码有 CF:进位。最近的操作使最高位产生了进位 ZF:零标志。最近的操作得出结果为0 SF:最近操作得出结果为负数 OF:溢出,最近操作导致补码溢出-正溢出或负溢出 除leaq指令,一般都会设置条件码 值得注意的时CMP和TEST两类指令,它们只设置条件码不改变其他寄存器。CMP指令和SUB指令一样。TEST指令行为和AND指令行为...原创 2019-01-21 21:23:22 · 405 阅读 · 0 评论