寄存器

来源:互联网 发布:卓越之剑全套完整源码 编辑:程序博客网 时间:2024/06/01 11:42

其实那些数据段,代码段,都是人自己定义的,CPU可不会这么想,它执行代码的时候,它只跟着CS:IP走,CS:IP指向哪里,他就认为哪里是代码,并执行它。所以如果想让CPU执行我们放在内存中的代码,那么,请让CS:IP指向他即可。


8086CPU存放是按小端存放的规则来的,即字的高位字节存放在内存的髙地址中,字的低位字节存放在内存的低位地址中。


下面我们来看DS和[address]


DS通常存放的数据的段地址,而[idata]存放一般是偏移量



我们知道若只有偏移量是不会找到数据的,必须还有段地址,在读取数据时,CPU默认会把DS里面的内容当作段地址,所以想要让CPU读取我们给的数据,必须先设置好DS里面的值,(DS里面的值不可以直接传送,所以我们用了一个寄存器间接传送),置于为什么会这样,额这是硬件设计。(段寄存器之间也不允许传送数据)


mov 指令有以下几种形式:



add和sub同mov差不多,都有两个操作数,他们有以下几种形式:



下面说一下数据段,其实就是DS里面的值作为基地址,然后我们给的值作为偏移地址就好了。

比如我们要将32000H里面的数据放到寄存器AX中

我们只要先修改基地址的值。(记住段寄存器不能直接赋值,只能通过中间寄存器咯!)


mov AX,3000H             (指令,寄存器书写大小无所谓)

mov DS,AX                  (先将基地址设置为3000H)

mov AX,[2000H]           (偏移地址2000H,默认从ds里面取基地址)

0 0
原创粉丝点击