陈彼得一条路

随着时光的流逝我们会不断回忆过去,这大抵是一种遗忘的旅程。偶然听到这首陈彼得的《一条路》突然涌起许多感伤的故事,我们最终会发现所有的技巧都不值一提,那些淡淡的旋律,轻灵的和声让你仿佛站在一条四季变幻的路口短暂回首,继续上路。网上没找到这首歌的音频,只能自己转换一个mp3放在自己的博客上,偶尔听一听,驻留在时光的某些片段。

一条路
作词、作曲、演唱者:陈彼得
一条路落叶无迹
走过我走过你
我想问你的足迹
山无言水无语
走过春天走过四季
走过春天走过我自己

悄悄地我从过去
走到了这里
我双肩驮着风雨
想知道我的目的
走过春天走过四季
走过春天走过我自已

继续阅读

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 本文来自于理解王爽的《汇编语言》总结