解析CPU中的寄存器.docx

上传人:lao****ou 文档编号:955561 上传时间:2024-08-05 格式:DOCX 页数:15 大小:28.23KB
下载 相关 举报
解析CPU中的寄存器.docx_第1页
第1页 / 共15页
解析CPU中的寄存器.docx_第2页
第2页 / 共15页
解析CPU中的寄存器.docx_第3页
第3页 / 共15页
解析CPU中的寄存器.docx_第4页
第4页 / 共15页
解析CPU中的寄存器.docx_第5页
第5页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《解析CPU中的寄存器.docx》由会员分享,可在线阅读,更多相关《解析CPU中的寄存器.docx(15页珍藏版)》请在第一文库网上搜索。

1、解析CPU中的寄存器寄存器存储CPU中的数据32位通用寄存器32位16位8位EAXAXA1ECXCXC1EDXDXD1EBXBXB1ESPSPAHEBPBPCHESISIDHEDIDIBH8位寄存器在16位寄存器中,而16位寄存器在32位寄存器中。简单来说32位寄存器就是一整个16位寄存器就是32的一半15-0这部分8位寄存器分高位和低位,分别代表1587-0,如下图做个实验就明白了将32位寄存器全部写满数据对16位寄存器调试可以看到更改的数据是后面四个对8位高低寄存器调试,可以看到ah是在eax寄存器的后34位改变的,a1是后两位改变的Od添加两个指令f8执行,eax的值变成了1又把eax的

2、值给了edx内存写立即数到内存movbyteptrds:内存窗口的已申请的16进制,Ibyteworddword字节大小InoVbyteptrds:0019FB90,20写寄存器到内存movbyteptrds:0019FB90,eax读内存到寄存器moveax,byteptrds:0019FB90内存地址的五种表示方式形式1立即数0019FB90形式2reg代表任意寄存器形式3rcg+立即数形式4reg+reg*1,2,4,8形式5reg+reg*1,2,4,8+立即数数据的存储模式大段模式:数据高位在低位,数据地位在高位小段模式:数据低位在低位,数据高位在高位db内存地址查看一个字节dw内存

3、地址查看两个字节dd内存地址查看四个字节大小端的使用场景1、Ini止的80X86系列芯片使用小端存储模式2、ARM芯片默认采用小端,但可以切换为大端3、M1PS芯片采用大端,但可以在大小端之间切换4、在网络上传输的数据普遍采用的都是大端0x1122334411是高位44是低位在内存地址中9093内存地址,所以是小段模式0019FF90440019FF91330019FF92220019FF9311mov移动数据moveax,1将1存储到eax中moveax,edx将edx的值存储到eaxadd数据相加addeax,1eax加1结果给eax也数据相减subeax,1eax减1结果给eaxand作

4、用按位与运算按位与作用:只将某一位变成0,而其他位保持不变使用:谁要变0,谁就和0与and就是与运算,两个数按二进制位相与,全1为1,有。为0,常用于把低位清零or按位或运算或位用用按作使oreax.edx:只将某一位变成1,而其他位保持不变:谁要变1谁就和1或xor异或运算一样为O不一样为1xoreax,ecxnot异或运算一样为1不一样为0noteax,ecxmovs移动数据,内存内存movsbyteptres:EDI,byteptrds:ES1Jmovswordptres:EDI,wordptrds:ESImovsdwordptres:EDI,dwordptrds:ESI简写movsbm

5、ovSwmoVSdEF1标志寄存器DF的值由第十位决定为O时,则EDIESI+1+2+4为1时,则EDIESI-1-2-4stos指令将a1/ax/eax的值存储到edi指定的内存单元Stosbyteprtes:EDIstoswordprtes:EDIstosdwordprtes:EDIj写Stosbstoswstosdrep指令,按计数寄存器ECX中指定的次数重复执行字符串指令moVecx,IOrepmovsdrepstosd堆栈ESP栈指针寄存器push指令向堆栈压入数据,修改斩顶指针ESP寄存器相当于movsub-4push3pusheaxpushdwordprtds:18FF4pop指

6、令将斩顶数据存储到寄存器,修改栈顶ESP寄存器相当于movadd+4popecxpop3修改EIP指令下一次要执行的指令jmp指令跳转jmp004F11jmpIOjmpeaxca11指令修改EIP的值Can指令结束后,下一行地址存到堆栈中同时ESP的值-4ca11004F1Ica11eaxret指令把当前栈顶的值放到EIP,ESP+4ret函数指令的集合函数的调用jmp或ca11小案例两数相加OO1movecx,1002movedx,2003ca11009008addecx,edx009moveax,ecx010ret堆栈平衡如果要返回父程序,则当我们在堆栈中进行堆栈的操作的时候,一定要保证在

7、ret指令之前,ESP指向的是我们压入栈中的地址。如果通过堆栈传递参数了,那么在函数执行完毕后,要平衡参数导致的堆栈变化。ESP寻址001push1002push2003ca11007004addesp,8007moveax,dwordprtss:esp+4008moveax,dwordprtss:esp+8009retEBP寻址开辟新的内存空间espebp整体移动,等函数调用结束在回到原位OO1push1002push2003ca11007004addesp,8007pushebp008movebp,esp009subesp,10010moveax,dwordptrss:ebp+8011mo

8、veax,dwordptrss:esp+C012movesp,ebp013popebp014retjcc指令标志寄存器CF第。位,表示无符号数运算的溢出状态,溢出为1,反之为0溢出了Cf为1mova1,OxFEadda1,2PF如果结果的最低有效字节包含偶数个1位,则为1,反之为0mova1,Oxceadda1,0AF如果算数操作在结果的第三位发生进位或借位则将该标志置1,否则清零ZF若结果为0,则为1,反之为0moveax,IOOmovecx,IOOcmpeax,ecxcmp与sub类似,但想减的结果并不保存到第一个操作数中testeax,ecxSF该标志被设置为有符号整型的最高有效位(0指

9、示结果为正,反之则为负)mova1,0x7Fadda1,2mova1,OxFEadda1,2OF反映有符号数加减运算所得结果是否溢出如果无符号运算,溢出看Cf位如果有符号运算,溢出看Of位mova1,0x7Fadda1,2JCC指令中文含义检查符号位JZ/JE若为O则跳转;ZF=I若相等则跳转ZF=IJNZ/JNE若不为O则跳转;ZF=O若不相等则跳转ZF=OJS若为负则跳转SF=IJNS若为正则跳转SF=OJP/JPE若1出现次数为偶数则跳转PF=IJNP/JPO若1出现次数为奇数则跳转PF=OJO若溢出则跳转OF=IJNO若无溢出则跳转OF=OJC/JB/JNAE若进位则跳转;CF=I若低

10、于则跳转;CF=I若不高于等于则跳转CF=IJNC/JNB/JAE若无进位则跳转;CF=O若不低于则跳转;CF=O若高于等于则跳转;CF=OJBE/JNA若低于等于则跳转;ZF=I或CF=I若不高于则跳转ZF=I或CF=IJNBE/JA若不低于等于则跳转;ZF=O而且CF=O若高于则跳转ZF=O而且CF=OJ1/JNGE若小于则跳转;SF1=OF若不大于等于则跳转SFI=OFJN1/JGE若不小于则跳转;SF=OF若大于等于则跳转;SF=OFJ1E/JNG若小于等于则跳转;ZF!=OF或ZF=I若不大于则跳转ZF!=OF或ZF=IJN1E/JG若不小于等于则跳转;SF=OF且ZF=O若大于则跳转SF=OF且ZF=O审核汤梓红

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服