wxr1224 发表于 4 天前

通过游戏学指针系列5:实战理解内存与cpu

通过游戏学指针系列5:实战理解内存与cpu一。什么是汇编1语言分类:机器语言:00011111低级语言:汇编语言高级语言:c,c++,java,net,php,python,都是高级语言 2什么是机器语言一串01,编写程序就是靠一串,例如:00000001 3什么是汇编语言将此串1000100111011000翻译为一句英文Mov eax,ebx 二.认识一下cpu实战通过打开某个软件,查看内存和cpu,具体情况:1将学习软件拖到od中2查看cpu窗口(1)cpu中存放数据的东东Eax:Ecx:Edx:Ebx:(2)运算逻辑部件(3)控制部件 三.认识一下内存1cpu要工作,那么数据来源于哪里呢,来源于内存 2 指令和数据,没有区别,就是一串0和1构成的 四.cpu和内存的关系目标:获取内存地址中某个内容,cpu与内存如何交互1cpu通过控制线向内存发送命令,说我要读:2cpu将地址3发送给内存,3是从地址线传过去的3内存把数据取出来的08,通过数据线,传给cpu4cpu用一个寄存器eax=08 五.实战:改变内存中某个地址中的内容 1打开od,od界面说明:右上角:cpu窗口 左下角:内存地址窗口 左上角:机器码左中:汇编指令 2在command中输入查看内存的命令db 内存地址:表示以字节方式查看内存 3修改内存地址中对应的内容双击   修改内存地址中对应的内容 4总结:内存中全部以字节为最小单位以11为例,这就是一个字节1   100010001最大值是:FF 六.实战二:s=768+12288-1280(实战cpu,内存如何使用)1. 将三个数转换为16进制,分别为0x300,0x3000,0x5002. 将第一个数放到一个寄存器中、代码规则:moveax,0x3000mov:固定的,相当于c中的=eax:从cpu中的寄存器名称中随便取的(但是必须是cpu窗口左上角那一块有8个的,尽量取前4个或者后三个)0x300:具体的数据相当于:inteax=0x300; 2将另一个数放到另一个寄存器中movebx,0x3000 3将两个数相加语法:Add第一个数,第二个数addeax,ebx 4将上面的eax的结果减去0x500语法:subeax,ebx:结果同样放到eax中 5测试(1)查看当前灰色背景图,表示程序刚好执行到这儿(2)按F8往下执行一句,此时观察寄存器eax的值(3)不断按F8看结果

toneger 发表于 4 天前

蹲个沙发~!
好深奥~!
谢谢大佬~!
PYG因为有你更精彩~!
页: [1]
查看完整版本: 通过游戏学指针系列5:实战理解内存与cpu