知识点:  浮点数的存放方式  st0至st7  FLD,FST,FADD指令 一.浮点数的存放方式 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV EBP,ESP 00401003 |. 51 PUSH ECX ; float f; 00401004 |. D905 F0204000 FLD DWORD PTR DS:[4020F0] ; 8.765 0040100A |. D95D FC FSTP DWORD PTR SS:[EBP-4] 00…
RAM汇编常用指令有MOV B BL LDR  STR…
Cortex-A7 常用汇编指令 一.处理器内部数据传输指令 1.mov 将数据从一个寄存器拷贝到另外一个寄存器,或者将一个立即数传递到寄存器里面 MOV R0,R1 @将寄存器 R1 中的数据传递给 R0,即 R0=R1 MOV R0, #0X12 @将立即数 0X12 传递给 R0 寄存器,即 R0=0X12 2.MRS 将特殊寄存器(如 CPSR 和 SPSR)中的数据传递给通用寄存器,要读取特殊寄存器的数据只能使用 MRS 指令 MRS R0, CPSR @将特殊寄存器 CPSR 里面的…
一. 如何把数据放到寄存器中 1. 数据搬移指令 mov  , mvn 1)  指令格式:<opcode><cond>{s}   Rd,  operand     <操作码><条件码>{是否影响状态位}  目标寄存器,第一操作数 2)  operand 第一操作数范围:(有效数和立即数前加 ‘#’)立即数 / 有效数 , 一个寄存器 , 移位指令 3) 关于立即数两个条件约束 举例说明: 一个数据  X (一个32bit数据) 把这个数据转化为 二进制 ,(…
知识点:  LEA指令  &与LEA  OD里修改汇编代码 一.LEA指令格式 有效地址传送指令 LEA 格式: LEA 操作数A, 操作数B 功能: 将操作数B的有效地址传送到指定的的某个寄存器,操作数A必须是寄存器.(32位系统上就是32位寄存器) 二.C++代码测试 int i; int *p=&i; 三.OD里修改汇编代码 按下空格后 直接输入汇编代码 四.汇编代码测试 : ]={}; __asm { lea ebx,i // ebx=&i mov dword ptr…
知识点: 加法汇编指令ADD 一.加法指令 ADD(Addition) 格式 格式: ADD A,B //A=A+B; 功能: 两数相加 . OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数. OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数B. . A和B均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数. //也就是说A与B不能同时是指针 如: add [eax],[eb…
知识点:  MOV指令  基址  内联汇编  把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x889977 //dword 双字 就是四个字节 ptr pointer缩写 即指针 []里的数据是一个地址值 二.内联汇编 _asm aaa=0x889977;// __asm MOV DWORD PTR DS:[0x403018],0x889977 //不安全的写法 __asm mov aaa,0x88…
IRET(interrupt return)中断返回,中断服务程序的最后一条指令.   汇编指令IRET [指令格式]IRET   [指令功能]IRET(interrupt return)中断返回,中断服务程序的最后一条指令.IRET指令将推入堆栈的段地址和偏移地址弹出,使程序返回到原来发生中断的地方.其作用是从中断中恢复中断前的状态,具体作用有如下三点:   1.恢复IP(instruction pointer):(IP)←((SP)+1:(SP)),(SP)←(SP)+2   2.恢复CS(…
罗云彬 典藏版Page192,mark下. 这段代码看不懂,手册上根本没有fdivr不带操作数的指令. .data dqTickCounter1 dq ? dqTickCounter2 dq ? dqFreq dq ? dqTime dq ? dwlm dd 1000000 .code invoke QueryPerformanceCounter,addr dqTickCounter1 invoke QueryPerformanceCounter,addr dqTickCounter2 invo…
工作过程中,有的时候需要打桩cycle,想在C语言中插入nop指令,可以采取的方法是 头文件中加入#inlude <stdio.h> 定义一个内联函数,然后调用这个函数,不过得测一下平台调用内联函数的开销,而不仅仅是nop指令的个数,在自己的测试中,调用大概是9个cycle,而nop指令是1个cycle,所以我假设为9倍的线性关系进行打桩,每个平台会不一样,包括用到的器件的主频等等,这里只是提供一种参考方法 #inluce <stdio.h> assembly inline voi…
知识点:  循环位移指令 ROL  循环位移指令 ROR 一.循环位移指令 ROL ROR int i=0x77886611;//01110111100010000110011000010001 _asm { //01110111100010000110011000010001 ->1 //10111011110001000011001100001000 //BBC43308 ROR i,1 //BBC43308 //11011110001000011001100001000101 ROL…
先说说MOVSB(MOVe String Byte):即字符串传送指令,这条指令按字节传送数据.通过SI和DI这两个寄存器控制字符串的源地址和目标地址,比如DS:SI这段地址的N个字节复制到ES:DI指向的地址,复制后DS:SI的内容保持不变. 而REP(REPeat)指令就是“重复”的意思,术语叫做“重复前缀指令”,因为既然是传递字符串,则不可能一个字(节)一个字(节)地传送,所以需要有一个寄存器来控制串长度.这个寄存器就是CX,指令每次执行前都会判断CX的值是否为0(为0结束重复,不为0,C…
JMP指令 JMP是汇编语言中的无条件跳转指令.无条件跳转指令可转到内存中任何程序段.转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出. 中文名:无条件跳转指令 外文名:JMP 和调用指令类似,无条件转移指令也可有四种形式.下面是四种无条件转移指令的实例. JMP 1000H 段内直接转移,转移地址的偏移量由指令给出 JMP CX 段内间接转移,转移地址的偏移量由CX指出 JMP 1000H:2000H 段间直接转移,段码和偏移量由指令给出 JMP DWORD PTR [SI] 段…
交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同,可以是一个字节,也可以是一个字,也可以是双字 .其指令格式如下: XCHG Reg/Mem, Mem/Reg,Reg/Reg   [例] XCHG CH,AL 寄存器之间相互交换,字节操作 XCHG BX,SI   寄存器之间相互交换,字操作. XCHG [SI],CX 存储器与寄存器之间交换,字操作.   该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变.寄存…
加1指令 INC指令功能:目标操作数+1 INC指令只有1个操作数,它将指定的操作数的内容加1,再将结果送回到该操作数.INC指令将影响SF,AF,ZF,PF,OF标志位,但是不影响CF标志位. INC指令的操作数的类型可以是通用寄存器或存储单元,但不可以是段寄存器.字或字节操作均可. 对于存储单元,需要用BYTE PTR或者WORD PTR说明是字节还是字操作.…
就是目标地址传送指令: 将一个近地址指针写入到指定的寄存器.格式: LEA reg16,mem16 其中reg16必须是一个16位通用寄存器,mem16必须是一个存储器,执行这个指令后,就将mem16所指的16位偏移地址传送reg16中. 比如: LEA AX,BUF 就是将存储器中BUF所指的地址传送给AX. 又如:LEA DX,[2000H] 将[2000H]这个地址传给DX 区别MOV传送指令: 比如:MOV AL 48H 将48H这个立即数传给AL寄存器 MOV传送的是地址所指的内容,而…
cs是值cpu执行的当前指令的段地址,ds是数据开始的段地址. CS是告诉CPU,去哪个位置找内容当成指令去执行:DS是告诉CPU,去哪个位置找内容当成数据被使用. datastring =ds codestring=cs 用到DS的例子: MOV AX,[100H] 这句指令的意思就是把地址[100H](属于数据)放入到寄存器AX里(直接寻址), 此时物理地址计算:DS*10H+100H…
标志名                                       标志 1           标志 0 OF   (溢出标志)                     OV                NV DF   (方向标志)                     UP                 DN IF    (中断标志)                      EI                  DI SF   (符号标志位)            …
;SHL(Shift Left):      逻辑左移 ;SHR(Shift Right):      逻辑右移 ;SAL(Shift Arithmetic Left): 算术左移 ;SAR(Shift Arithmetic Right): 算术右移 ;其中的 SHL 和 SAL 相同, 但 SHR 和 SAR 不同. ;SHL.SAL: 每位左移, 低位补 0, 高位进 CF ;SHR  : 每位右移, 低位进 CF, 高位补 0 ;SAR  : 每位右移, 低位进 CF, 高位不变 ;它们的…
SUB是减法运算. 比如mov ax,2mov bx,1sub ax,bx 其中sub ax,bx就是ax中的值减bx中的值,等于1,然后把结果,也就是1,放入ax中.…
http://blog.csdn.net/q_l_s/article/details/54909328…
在8086存储器系统中,20位地址总线的地址是物理地址.但是由于8086内部寄存器都是16位的, 用16位寄存器直接访问20位存储器空间显然不可能,所以8086CPU使用了存储器分段的办法.这 样内存一个20位的物理地址就由段地址(16位)和段内偏移地址(16位)组成,合成物理地址的 方法是:将段地址的16位值左移4位(相当于乘十进制数16),得到一个20位的值,再加上16位的 偏移量即为物理地址.即: 物理地址=段地址×16+偏移地址16是十进制数,转换成16进制数就是10h,上式也写成:物理…
1. CP15 协处理器 16组寄存器 mcr 写 mrc (rgeister CP15)  读 CP15 到 Register mrc  p15,0,c0,c0,0…
TOP-- TOP++ 顶部 ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7) 底部 指令后的注释通常是执行后的结果 push section .data f dd 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 section .text main: fld dword [f+4*0] ; st(0)1.0 fld dword [f+4*1] ; st(0)2.0 st(1)1.0 fld1 ;…
百篇博客系列篇.本篇为: v14.xx 鸿蒙内核源码分析(内存汇编篇) | 谁是虚拟内存实现的基础 | 51.c.h .o 内存管理相关篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式 | 51.c.h .o v12.xx 鸿蒙内核源码分析(内存管理篇) | 虚拟内存全景图是怎样的 | 51.c.h .o v14.xx 鸿蒙内核源码分析(内存汇编篇) | 谁是虚拟内存实现的基础 | 51.c.h .o v15.xx 鸿蒙内核源码分析(内存映射篇) | 虚拟内存虚在哪里…
课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage) CE5.4工具的使用方法 中级篇内容:调试工具的使用技巧,功能CALL的概念 调试工具OD1.1的使用技巧(如硬件断点,条件断点,内存断点. 常用汇编指令与对应高级语言的转换. 游戏功能CALL概念…
x86保护模式-七中断和异常 386相比较之前的cpu   增强了中断处理能力   并且引入了 异常概念 一 80386的中断和异常 为了支持多任务和虚拟存储器等功能,386把外部中断称为中断    把内部中断称为异常 最多支持256中断或异常 1.中断 中断是由异步的外部事件引起的.外部事件及中断响应与正执行的指令没有关系. 通常中断对应i/o操作的完成,cpu中intr引脚接受外部的可屏蔽的中断请求,NMI引脚接受外部不可屏蔽的中断请求. EFLAGS标志寄存器中的IF标志决定是否屏蔽可屏蔽…
协处理器指令系统 协处理器共有68条不同的指令,汇编程序在遇到协处理器指令助记符时,都会将其转换成机器语言的ESC指令,ESC指令代表了协处理器的操作码. 协处理器指令在执行过程中,需要访问内存单元时,CPU会为其形成内存地址.协处理器在指令执行期间内利用数据总线来传递数据.80287协处理器利用I/O地址00FAH-00FFH来实现其与CPU之间的数据交换,而80387~Pentium系列芯片,则是利用I/O地址800000FAH-800000FFH来实现这两者之间的数据交换. 一.指令操作符…
知识点:  浮点指令 fsub 一.浮点指令fsub 格式 fsub memvar // st0=st0-memvar 知识点:  浮点指令 fmul 一.浮点指令fmul 格式 fmul memvar // st0=st0*memvar int _tmain(int argc, _TCHAR* argv[]) { double f1,f2;//float; f1=3.333f; f2=6.366f; f1=f1*f2; //00401003 |. 83EC 10 SUB ESP,10 ;…
MIPS汇编语言基础 MIPS的系统结构及设计理念比较先进,其指令系统经过通用处理器指令体系MIPS I.MIPS II.MIPS III.MIPS IV.MIPS V,以及嵌入式指令体系MIPS16.MIPS32到MIPS64的发展. MIPS32的架构是一种基于固定长度的定期编码指令集,并采用导入/存储(load/store)数据模型.经改进,这种架构可支持高级语言的优化执行.在路由器中,经常使用的一种MIPS架构就是MIPS32. MIPS寄存器 RISC的一个显著特点就是大量使用寄存器.…