Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180541
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 601
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-03 18:51
个人简介

大数据算法,分布式技术,spark技术爱好者

文章分类

全部博文(29)

文章存档

2015年(4)

2014年(3)

2013年(22)

分类: 嵌入式

2013-07-09 21:17:56

1.reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di.
sreg:ss,cs,ds,es
2.可用来内存单元寻址的寄存器:bx,bp,di,si
bp和bx出现的位置一样,但是不可以一起出现。就像di,si不能一起出现一样。
如果么有段前缀,则默认bp是指向ss段的偏移。
如此看来一般的数据操作,偏移寄存器是够用的,但是段寄存器只有ds,ss,es,略显的不够用。其实cs也可以用,只不过需要技巧性安排。所以我们最多可以同时操作四个放置在内存中不同位置的段。
3.寄存器完整总结:
 
4.经过补充后的数据流图:
 
数据直接到内存:必须指出 byte ptr或者word ptr,否则cpu无法识别数据长度。这样就大大减少了寄存器的使用负担。而寄存器主要是在循环中配合loop使用,或者作为临时变量使用。其他变量用栈或者内存其他结构保存。但是pop,push是不可以直接操作idata的。因为这两个指令是对偶的,而idata显然不能是pop的操作数,所以系统规定idata也不能是push的操作数。
内存没有自环,自己无法传送数据给自己。
5.div指令:
一般只处理小于16位的除法。被除数可以大于16位,高位用dx存储。结果也是保存在ax、dx中,ax保存上,dx保存余数。
6.一个段一般看做一个结构体。输入内存一个段(ds),输出内存一个段(es)。

阅读(1369) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~