汇编 inc 和 dec 指令】的更多相关文章

知识点: inc 加1指令 dec 减1指令 一.加一指令inc inc a 相当于 add a, //i++ 优点 速度比sub指令快,占用空间小 这条指令执行结果影响AF.OF.PF.SF.ZF标志位,但不影响CF进位标志位. 二.减一指令dec dec a 相当于 sub a, 004012D7 > 83E8 SUB EAX, 004012DA 836D FC SUB DWORD PTR SS:[EBP-], 004012DE INC ECX 004012DE FF41 FC INC…
指令标注 Operand Notation 指令instruction即运算operation, 操作的对象为一个或多个运算数operand, 使用不同的标记表示不同的约束 <reg>  寄存器,  运算数必须是一个寄存器. Register operand. The operand must be a register.<reg8>, <reg16>, <reg32>, <reg64> 指定大小的寄存器运算数 Register operand…
在X86汇编中,MOV [0012H], [0016H]这种指令是不允许的,至少得有一个操作数是寄存器.当然,这种问题在用高级语言的时候看不到,感觉好像基本上都是从内存到内存啊,为毛到了汇编就不行了???这个问题在stack overflow有个解释不错: The answer involves a fuller understanding of RAM. Simply stated, RAM can only be in two states, read mode or write mode.…
一.字符串处理指令 (1) lodsb.lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI (2) stosb.stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI (3) movsb.movsw:把DS:SI指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF标志分别增减SI和DI (4) scasb.scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减S…
一.用纯汇编封装函数strcmpW 1.用repnz scasw计算字串长度 2.用repz cmpsw比较字串内容 3.把比较的结果存放在EAX里边返回 __declspec(naked) int strcmpw(WCHAR* s1,WCHAR *s2)// scasw strcmpW { __asm { push ebp mov ebp,esp // esp+4+4 s1 //esp+4+8 s2 xor ax,ax//在edi所在地址查找字节的 mov edi,[ebp+4+4]// mo…
http://www.cnblogs.com/del/archive/2010/04/16/1713886.html 跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转).JECXZ(ECX 为 0 则跳转);三.根据 EFLAGS 寄存器的标志位跳转, 这个太多了. 根据标志位跳转的指令: JE ;等于则跳转 JNE ;不等于则跳转 JZ ;为 0 则跳转 JNZ ;不为 0 则跳转 JS ;为负则跳转 JNS ;不为负则跳转 J…
1. bic BIC指令的格式为: BIC{条件}{S}  目的寄存器,操作数1,操作数2 BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中. 操作数1应是一个寄存器, 操作数2可以是一个寄存器.被移位的寄存器.或一个立即数. 操作数2为32位的掩码,如果在 掩码中置了某一位1,则清除这一位.未设置的掩码位保持不变. bic r0,r0,#0x1f 0x1f=11111b 其含义:清除r0的bit[4:0]位. 2. orr ORR指令的格式为: ORR{条件}{S}  目的寄存器…
我们在Debug和源程序中写入同样形式的指令 : "mov al,[0]","mov bl,[1]","mov cl,[2]","mov dl,[3]",但Debug和编译器对这些指令中的"[idata]"却有不同的解释.Debug将它解释为"[idata]"是一个内存单元,"idata"是内存单元的偏移地址:而编译器将"[idata]"解释为&q…
知识点:  (NOT)按位取反指令  逻辑取反(!)  按位取反(~)  SETZ(SETE) 取ZF位值保存  SETNZ(SETNE)将ZF位值取反后保存 一.逻辑取反(!) !111 =0; !0=1; SETZ(SETE) //取ZF标志位值 放到寄存器里 SETNZ(SETNE) 二.按位取反NOT指令 VC中提供运算符为(~) 11111111111111111111111111011110 //取反运算后 00000000000000000000000000100001…
知识点: shr 逻辑右移指令 shl 逻辑左移指令 一.SHL 逻辑左移指令测试 shr 逻辑右移指令 右移一位相当于整除2 shl 逻辑左移指令 左移一位相当于乘2 //很多时候会溢出 //>> 右移 //<< 左移 unsigned int i=0x66332211; unsigned int j=0; j=i<<1; j=i<<2; j=i<<8;//左移一个字节 0x33221100 知识点: SAL 算术左移指令 SAR 算术…