摘要: 先看图 园子里找的图,再附上理论,具体操作等以后慢慢讲。 标志寄存器用来保存在一条指令执行完成后,CPU所处状态的信息及运算结果的特征。 16位标志寄存器 FLAGS 32位标志寄存器 EFLAGS SF:若运算结果为负(即结果的最高位为1,因为机器内的数据都是以补码形式表示)则SF=1,否则SF=0 ZF:若运算结果为0,则ZF=1,否则ZF=0 OF:当将操作数作为有符号数看时,用该标志位判断运算结果是否溢出 加法:若同符号数相加,而结果符号与之相反,则OF=1.否则OF=0 减法:被减数与减数异号,而结果的符号与减数相同则OF=1,否则OF=0 (比如5-(-3)的话,结果不应该... 阅读全文
posted @ 2011-11-04 16:22 锅子 阅读(583) 评论(0) 推荐(0) 编辑
摘要: MOV 大家在前面都见识过了。。其实用高级语言来说就是 = 的意思,赋值,不是==哦。 MOV指令是最基本的操作寄存器方式,主要注意4点。 1.目的和源,尺寸必须一致 mov eax,ax mov ax,ah mov al,eax 这些都是错误的!尺寸一致,指的是位数,即,大家都是32位,那就OK。 2.目的和源,不能都是内存操作数, 如果真想来回捣鼓 2个 内存数,那就用数据寄存器做中转站吧。 记得初学编程的时候,喜欢用temp 做临时变量,然后替换2变量,把temp 用数据寄存器就OK了。 3.CS,EIP,IP,不能直接用MOV操作,具体如何改变他们的值,以后再说。 4.立即数不... 阅读全文
posted @ 2011-11-04 15:49 锅子 阅读(696) 评论(0) 推荐(0) 编辑
摘要: “EAX EBX ECX EDX E……”,突然有一天,学汇编了,啊,原来我们那么笨啊,,寄存器 都记不住。。。。。。。 童鞋们莫急啊,锅子教大家个绝招,记不住就别记了。。。。。。(哪个童鞋丢砖头过来。。。) 寄存器 其实就是CPU内部存放数据的空间而已,至于放什么,怎么用,锅子以后娓娓道来吧。 先看图,大致看下有个印象,说不准能寄存到我们潜意识中呢。。。 有几个 寄存器?大家自己数数,前面的帖子,N行代码,都用到了EAX。上图解释了很清楚,EAX就是数据寄存器,所以我们前面操作都用到了EAX来坐数据存储。 再来看一图。 哦,忘说了 AX 代表的是16位,到了32位 就变成EAX了。... 阅读全文
posted @ 2011-11-04 14:34 锅子 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 锅子一直想写WIN32下得汇编博文,后来感觉不妥,还是脱离WIN API,尽量纯点,锅子用的是RadAsm,网上配置文章比较多,大家找找哦。 博文里,肯定有借鉴其他教材或高手的代码,主线想按Intel 汇编语言程序设计 为蓝本,扩展讲起。 锅子水平有限,博文里 若出现代码不妥之处,敬请高手给予 提醒和纠正,谢谢大家,闲话到这,现在开始将第一个汇编程序。 ;test_01INCLUDE irvine32.incINCLUDELIB Irvine32.libINCLUDELIB KERNEL32.LIB.dataval1 DWORD 10000hval2 DWORD 40000hval3 DW.. 阅读全文
posted @ 2011-11-04 12:49 锅子 阅读(698) 评论(2) 推荐(0) 编辑