cpu的栈机制

8086CPU提供入栈和出栈的操作,push【入栈】 pop【出栈】,push ax,即将ax的数据送入栈顶中,pop ax,从栈顶取出数据送入ax中,这两种操作,入栈和出栈都是以字为单位进行的。8086CPU中有两个寄存器,段寄存器SS和寄存器SP,任意时刻,SS:SP指向栈顶元素。

push ax的执行分以下两步

1.SP=SP-2 SS:SP指向当前新的栈顶

2.将ax中的内容送入SS:SP指向的内存单元中

pop ax 执行的过程

1.将SS:SP指向的内容送入到ax中去

2.SP=SP+2,指向新的栈顶

[问题]如何将10000H-1000F这段空间当做栈空间

mov ax,1000H

mov ss,ax

mov sp,0010

这里的注意点是,将一段空间当做栈空间,只能设置栈顶的初始位置,然而将某段空间当做栈空间来使用具体到到什么位置需要自己在编程时候注意。 继续阅读

8086CPU如何生成物理地址

  8086的CPU是16位的,而8086的地址总线是20位的,如果CPU将地址从内部简单发出,所能达到的寻址范围是216=65535[这里有个理解的错误,65535的单位究竟是B还是b,我一开始的认为是一根数据线每次只能传送一个高电平或者低电平就是一个位b,所以是65535b,转换成KB是8KB,但是书中给出的答案是64KB,这里涉及到的问题是地址总线表示的数字是能够寻址的内存单元,详细解释来自这里]而地址总线220=1MB的内存单元,所以8086采取了一种在CPU内部的一种称为“地址加法器”的方法,用两位16位的数据合成20位的地址达到1MB的寻址能力。它的方法如下


  地址加法器采用的方法是物理地址=段地址*16+偏移地址,其中的段地址*16通常的说法是左移4位,有这样的一个规律,一个数据的二进制形式左移N位,相当于这个数据乘以2的N次方,所以段地址*16也就是相当于段地址左移2的4次方,即左移4位。

  虽然说是段地址,但是内存并没有分段,段只是人为的一种逻辑划分,这种逻辑划分有这样的规律,因为是段地址乘以16定位段的起始地址,所以段的起始地址必然是16的倍数,同时因为偏移地址216所能表示的最大寻址范围是64KB,所以这种逻辑意义上的段地址*16+偏移地址在逻辑划分的段最大也就是64KB。


                                                                            20131207 本文来自于理解王爽的《汇编语言》总结

为什么写《岛屿》

这个月最开心的事情就是我的小说《岛屿》快要完工了,前前后后写了大概有一年的时间,这篇小说从构思到现在快三年了,三年来始终有一个念头不时的从我脑海中涌起,那就是要把这篇小说写完,不管最后写成什么样子,最后一定是以一个完本的形式出现,这个念头始终折磨着我,现在我终于可以在写这篇总结。

1.为什么写岛屿

首先这是一场告别,和青春的告别,年轻的时候总是以为自己有某些方面的才能,一直在心里不去做的话总会有点遗憾,所以就开始写。在写的过程中渐渐发现,其实你个人的能力是非常有限的,写作的确不是一时冲动就可以完成的工作,尤其是长篇小说创作,这篇小说中只有一个有名没姓的阿飞,其他人物都是你,我,他,特别是第二人称你贯穿始终,小说分四条线索,三条明线和一条暗线,手法上倾向于意识流,整片小说中甚至没有出现一处直接引语的对话,所以写的特别痛苦,最痛苦的事情还是这是一篇不能在比较正式的平台发表,出版从来是不指望了,因为涉及到性的描写,在写作伊始我就告诫自己,只为自己而写,算是一场告别,写完这个小说之后除非为了利益否则再不折磨自己。

2.岛屿写些什么

岛屿最早的念头是青春期的性幻想,很早之前,姑娘美好,草长莺飞,我幻想到山上去挖一个洞,建成一个地下宫殿形式的建筑,没有任何约束的和姑娘敦伦,在现实生活中受挫的人大抵幻想比较丰富,科学点的用弗洛伊德的理论解释就是本我压抑,超我为了保护本我蓬勃发展。后来在社会上闯荡,听到一些关于中年老男人年轻时候的爱情故事,虽然谈不上轰轰烈烈,但也足以玩味一番,还看过一篇韩松的科幻小说深受影响,我将这三条明线铺上路,一条暗线祭奠下自己屌丝的爱情,算是挥一挥手,不带走一片云彩。升华一下主题象征一下主旨是精神的迷茫。

3.写岛屿有什么收获

收获了在孤独时光的一份沉淀,知道了自己在写作方面的欠缺以及完成了一种仪式感的庄重和满足。

4.计划

因为无法在公共平台发表,索性在自己的博客发表,下个月的这个时候连载这部小说的前半部分,后半部分就让它虽我一起衰老。老来的时候回忆一下年轻的时候文艺屌丝过,如果我那时不文艺不屌丝的话。