机器指令:CPU能直接识别并执行的二进制编码
汇编指令:汇编指令是机器指令的助记符,同机器指令一一对应。
指令:指令通常由操作码和地址码(操作数)两部分组成
指令集:每种CPU都有自己的汇编指令集
参考资料:<<汇编语言>> 王爽
...
原创
2021-06-01 13:35:32
593阅读
ARM汇编语言指令集汇总跳转指令存储器和寄存器交互数据指令(内存访问)数据传送指令数据算术运算指令数据逻辑运算指令比较指令组合和分离指令并行指令测试指令ThumbEE指令协处理器指令伪指令无线 MMX 技术伪指令其他指令寄存器寻址方式跳转指令指令简介B无条件跳转BL带链接的无条件跳转BX带状态跳转
原创
2021-07-09 10:14:04
3264阅读
比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4
转载
2024-05-29 11:32:20
150阅读
call指令经常跟ret指令配合使用,因此CPU执行call指令,进行两步操作: 将当前的 IP 或 CS和IP 压入栈中; 转移(jmp)。 call指令不能实现短转移,除此之外,call指令实现转移的方法和 jmp 指令的原理相同。 call 标号(近转移) CPU执行此种格式的call指令时,相当于进行 push IP jmp near ptr 标号 call far ptr 标号(段间转移)...
原创
2021-06-01 13:35:16
1074阅读
jcxz指令 jcxz指令为有条件转移指令,所有的有条件转移指令都是短转移, 在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为-128~127。 指令格式:jcxz 标号(如果(cx)=0,则转移到标号处执行。) 当(cx) = 0时,(IP) = (IP) + 8位位移 8位位移 = “标号”处的地址 - jcxz指令后的第一个字节的地址; 8位位移的范围为-128~127,用补码表示; 8位...
原创
2021-06-01 13:35:18
1216阅读
8086CPU的转移行为有以下几类。 只修改IP时,称为段内转移,比如:jmp ax。 同时修改CS和IP时,称为段间转移,比如:jmp 1000:0。由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移。 短转移IP的修改范围为-128 ~ 127。 近转移IP的修改范围为-32768 ~ 32767。8086CPU的转移指令分为以下几类。 无条件转移指令(如:jmp) 条件转移指令 ...
原创
2021-06-01 13:35:20
229阅读
mul是乘法指令,使用 mul 做乘法的时候:相乘的两个数:要么都是8位,要么都是16位。 8 位: AL中和 8位寄存器或内存字节单元中; 16 位: AX中和 16 位寄存器或内存字单元中。 结果 8位:AX中; 16位:DX(高位)和 AX(低位)中。 格式:mul 寄存器 或 mul 内存单元参考资料:<<汇编语言>> 王爽...
原创
2021-06-01 13:35:21
2312阅读
CPU随时都可能执行中断处理程序,中断处理程序必须一直存储在内存某段空间之中而中断处理程序的入口地址,即中断向量,必须存储在对应的中断向量表表项中。中断处理程序的常规编写步骤:保存用到的寄存器; 处理中断; 恢复用到的寄存器; 用iret指令返回。iret 指令描述为:pop IP pop CS popfiret指令执行后,CPU回到执行中断处理程序前的执行点继续执行程序...
原创
2021-06-01 13:35:46
1071阅读
cmp是比较指令,cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。cmp指令格式:cmp 操作对象1,操作对象2例如:指令cmp ax, ax,做(ax)-(ax)的运算,结果为0,但并不在ax中保存,仅影响flag的相关各位。指令执行后:zf=1,pf=1,sf=0,cf=0,of=0。CPU在执行cmp指令的时候,也包含两种含义:进行无符号数运算和进行有符号数运算。...
原创
2021-06-01 13:36:00
1506阅读
adc是带进位加法指令,它利用了CF位上记录的进位值。 指令格式:adc 操作对象1, 操作对象2 功能:操作对象1 = 操作对象1 + 操作对象2 + CF
原创
2021-06-01 13:36:01
1428阅读
记得前面提到过这个问题,几句话就给带过了。为什么还要啰里啰嗦的再说一下呢? 呵呵,是这样的,我在看一本汇编的资料时,怀疑上面的一个语句弄错了。想知道是不是他的汇编指令代码里包含“印刷错误”。我想如果是印刷错误的话,很可能他的二进制代码跟看得懂的指令码对不上。那么我如何自己将那个二进制代码转换成汇编指令码呢? 语句如下:00401046 51 push ecx ; make ro...
转载
2009-11-02 08:24:00
226阅读
2评论
CMP(比较)指令执行从目的操作数中减去源操作数的隐含减法操作,并且不修改任何操作数。指令格式:
原创
2022-06-01 17:53:16
3968阅读
简介ARM是Advanced RISC Machine的首字母缩写,它可以称之为一家嵌入式处理器的提供商,也可以理解为一种处理器的架构,还可以将它作为一套完整的处理器指令集。原生程序与ARM汇编语言对于使用ARM处理器的Android手机来说,它最终会生成相应的ARM elf可执行文件,分析软件的核心功能只能从这个elf文件入手。一个ARM原生程序如下:EXPORT main //main函数mainvar_C= -0xc //识别出的栈变量var_8 = -8STMFD SP!,{R11,LR} //指令 压入堆栈ADD R11,SP,#4SUB SP,SP,#8STR R0...
转载
2013-09-05 18:47:00
88阅读
loop指令为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。 对IP的修改范围都为-128~127。 指令格式:loop 标号 ((cx) = (cx) - 1,如果(cx) ≠ 0,转移到标号处执行)。 (cx) = (cx) - 1;如果 (cx) != 0,(IP) = (IP) + 8位位移。 8位位移 = 标号处的地址 - loop指令后的第一个字节的地址; 8位位移的范围为-128~127...
原创
2021-06-01 13:35:17
1257阅读
int指令的格式为:int n ,n为中断类型码,它的功能是引发中断过程。 CPU执行int n指令,相当于引发一个n号中断的中断过程 在程序中使用int指令调用任何一个中断的中断处理程序(中断例程) 编写供应用程序调用的中断例程...
原创
2021-06-01 13:35:47
795阅读
8086CPU逻辑指令and、or、not、xor、test、shl、shr、sal、sar、rol、ror、rcl、rcr等都是逻辑指令。除了not指外,它们的执行结果都影响标志寄存器的相关标志位。
原创
2021-06-01 13:35:54
334阅读
[翻译]二进制漏洞利用(二)ARM32位汇编下的TCP Bind shell:https://bbs.pediy.com/thread-253511.htm ARM汇编语言入门 From:ARM汇编语言入门(一):https://zhuanl...
转载
2022-12-20 21:24:44
89阅读
jmp为无条件转移,转到标号处执行指令可以只修改IP,也可以同时修改CS和IP; jmp指令要给出两种信息: 转移的目的地址 转移的距离(段间转移、段内短转移,段内近转移) jmp short 标号 jmp near ptr 标号 jcxz 标号 loop 标号 等几种汇编指令,它们对 IP的修改是根据转移目的地址和转移起始地址之间的位移来进行的。在它们对应的机器码中不包含转移的目的地址,而包含的是到目的地址的位移距离。...
原创
2021-06-01 13:35:19
1234阅读
div是除法指令 除数:有8位和16位两种,在一个寄存器或内存单元中。 被除数:默认放在AX或DX和AX中, 如果除数为8位,被除数则为16位,默认在AX中存放; 如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。 结果: 如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数; 如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数...
原创
2021-06-01 13:35:22
1358阅读
sbb是带借位减法指令,它利用了CF位上记录的借位值。 指令格式:sbb 操作对象1, 操作对象2 功能:操作对象1 = 操作对象1 - 操作对象2 - CF
原创
2021-06-01 13:35:45
1276阅读