寄存器
2016-09-24 18:51
253 查看
其实那些数据段,代码段,都是人自己定义的,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里面取基地址)
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里面取基地址)
相关文章推荐
- 康诺云推出三款智能硬件产品,为健康管理业务搭建数据池
- IE7降低内存和降低CPU的几个技巧
- 如何高效的使用内存
- DOS下内存的配置
- XP/win2003下发现1G的内存比512M还慢的解决方法
- 我的服务器SQL2000的sqlserver占用了90%的cpu,怎么查是那个库?
- MySQL服务器进程CPU占用100%的解决方法
- PowerShell实现动态获取当前脚本运行时消耗的内存
- C#获取CPU编号的方法
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- SQL语句实现查询SQL Server内存使用状况
- 使用MySQL Slow Log来解决MySQL CPU占用高的问题
- 笔记本下什么是迅驰处理器(cpu)相关资料第1/2页
- C语言内存对齐实例详解
- 深入学习C语言中memset()函数的用法
- 全局变量与局部变量在内存中的区别详细解析
- doscan.exe进程占用了大量的CPU和内存的解决方法
- VB读取线程、句柄及写入内存的API代码实例