摘要:
知识点: l 标志位 置位相关指令 l 标志寄存器PSW 标志寄存器PSW(程序状态字寄存器PSW) 标志寄存器PSW是一个16为的寄存器。它反映了CPU运算的状态特征并且存放某些控制标志。8086使用了16位中的9位,包括6个状态标志位和3个控制标志位。 15 14 13 12 11 10 9 8 阅读全文
摘要:
一、SETG SETZ(SETE) //取ZF标志位值 放到寄存器里 SETNZ(SETNE) == > SETG //setg cl//ZF==0 并 SF==0 并 OF==0 时 cl=1; //> =时设定操作数值1 ,否则为0 //一般与cmp指令组合使用 标志位: JGE对标志位的需求 SF=OF 时 操作的值=1 二、SETLE指令 SE... 阅读全文
摘要:
知识点: 汇编指令 lodsb,lodsw,lodsd 一、汇编指令LODSB //scasb scasw scasd //stosb stosw stosd 1、 __asm lodsb //作用 mov al,byte ptr [esi] ; esi=esi+sizeof( byte); 2、 __asm rep lodsb // //取字符串元素到... 阅读全文
摘要:
知识点: 汇编指令 STOSB STOSW STOSD 一、汇编指令STOSB 004113AC 8DBD B4FEFFFF LEA EDI,DWORD PTR SS:[EBP-14C] 004113B2 B9 53000000 MOV ECX,53 004113B7 B8 CCCCCCCC MOV EAX,CCCCCCCC 004113... 阅读全文
摘要:
一、LOOP指令 循环控制指令LOOP 格式: LOOP 标号 loopd 功能: 1、ECX=ECX-1 2、(ECX)0,则转移至标号处循环执行 3、直至(ECX)=0,继续执行后继指令. int iecx=900; __asm mov ecx,iecx start: __asm mov iecx,ecx printf("%d,",iecx); ... 阅读全文
摘要:
一、用纯汇编封装函数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 ... 阅读全文
摘要:
知识点: REPE/REPZ 指令 CMPSB 指令 一、CMPSB //cmp //sub //SCASB//scasw//scasd cmp byte ptr [edi],al //对标志位的影响相当于sub指令 word,dword //同时还会修改寄存器EDI的值:如果标志DF为0,则 inc EDI;如果DF... 阅读全文
摘要:
知识点: REPNE/REPNZ 指令 SCASW 指令 SCASD 指令 SCAS 指令 一、SCASW 指令 //SCASB cmp word ptr [edi],al //对标志位的影响相当于sub指令 //同时还会修改寄存器EDI的值:如果标志DF为0,则 inc EDI;如果DF为1,则 dec EDI。 二、SCA... 阅读全文
摘要:
知识点: REPNE/REPNZ 指令 SCASB 指令 一、SCASB 指令 cmp byte ptr [edi],al //对标志位的影响相当于sub指令 //同时还会修改寄存器EDI的值:如果标志DF为0,则 inc EDI;如果DF为1,则 dec EDI。 二、REPNE 指令 REPNE SCAS BYTE PTR ES:[EDI]... 阅读全文
摘要:
XOR运算 按位异或^ 一、按位异或^ 运算符^ 1^1=0;0^0=0; //相同则为0 0^1=1;1^0=1; //不相同为1 1101^0110=1011; // asm_XOR.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { uns... 阅读全文
摘要:
知识点: (NOT)按位取反指令 逻辑取反(!) 按位取反(~) SETZ(SETE) 取ZF位值保存 SETNZ(SETNE)将ZF位值取反后保存 一、逻辑取反(!) !111 =0; !0=1; SETZ(SETE) //取ZF标志位值 放到寄存器里 SETNZ(SETNE) 二、按位取反NOT指令 VC中提供运算符为(~) 1... 阅读全文
摘要:
AND运算 逻辑与&& 按位与& 一、AND运算 1&&12=1; 12&&0=0; 0&&1=0; 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV EBP,ESP 00401003 |. 83EC 10 SUB ESP,10 00401006 |. C7... 阅读全文