专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »汇编语言 » 汇编寄存器:汇编~寄存器C... »正文

汇编寄存器:汇编~寄存器C...

来源: 发布时间:星期三, 2008年12月10日 浏览:2次 评论:0
个典型CPU是由:运算器控制器寄存器等器件构成这些器件靠内部总线相连
运行器进行信息处理控制器控制各器件进行工作寄存器存储信息内部总线连接各个器件在它们之间进行数据传送

通用寄存器:(虽然现在CPU已经到了64位普遍用32位16已经是古董但教程是16位还是学16位我想知道原理了多少位也没有太大关系了)
8086CPU所有寄存器都是16位可以存放两个字节AXBXCXDX四个寄存器通常用来存放般性数据被称之为通用寄存器
个16位寄存器可以存储个16位数据个16位寄存器能存储最大值是65536个8位寄存器能存储最大值是256.

字在寄存器中存储
字节:个字节由8个比特(二进制)组成可以存在8位寄存器中
字:记为word个字由两个字节组成这两个字节分别称为这个字高位字节和低位字节
1000101010010100
高位字节H 低位字节L

几条汇编指令:
汇编指令 控制CPU完成操作 用高级语言语法描述
mov ax,18 将18送入寄存器ax中 ax=18
mov ah,78 将78送入寄存器ah中 ah=78
add ax,8 将寄存器ax中数值加上8 ax=ax+8
mov ax,bx 将寄存器bx中值传到寄存器ax中 ax=bx
add ax,bx 将寄存器ax中值加上寄存器bx中 ax=ax+bx

今天就到这儿吧累了2007年11月23日 1时
接着开工

先来点题:
mov ax,62627 ax=F4A3H //将十进制转成十六进制压入AX
mov ah,31H ax=31A3H //将31H压入ax高八位覆盖了F4
mov al,23H ax=3123H //将23H压入ax低八位覆盖了A3
add ax,ax ax=6246H //相当于C语言:ax=ax+ax
mov bx,826cH bx=826cH //将十六进制826CH压入BX
mov cx,ax cx=6246H //将AX值压入到CX中
mov ax,bx ax=826cH //将BX值压入到AX中
add ax,bx ax=04d8H //相当于C语言:ax=ax+bx 本来结果应该是104d8H但这里只能存
16位所以最高位被截掉了
mov al,bh ax=0482H //将bx高八位压到ax低八位中去

用目前懂汇编计算24次方
mov ax,2
add ax,ax
add ax,ax
add ax,ax

物理地址
CPU访问内存单元时要给出内存单元址址所有内存单元构成储存空间是线性空间个内存单元在这个空间都有惟地址我们将这个唯地址称为物理地址CPU通过总线送入存储器必须是个物理地址

8086CPU在读写内存时步骤:(8086CPU总线是20位但结构是16位)
1)CPU在相关部件中提取两个16位地址个称为段地址个称为偏移地址
2)段地址和偏移地址通过总线传到个叫做地址加法器部件
3)地址加法器将两个16位址合成个20位物理地址
4)地址加法器通过内部总线将20位物理地址送入输入输出控制电路
5)输入输出控制电路将20位物理地址送入地址总线
6)20位物理地址被地址总线送到存储器

地址加法器采用物理地址=段地址*16+偏移地址方法合成物理地址

不行了明天还有很多事要做得睡了每天进度好慢啊 2007年11月24日 0时50分
开工了

段地址
在编程时根据需要将若干地址连续内存单元看作个段用段地址*16看作段起始地址(基础地址)用偏移地址定位段中内存单元注意:段地址*16必然是16倍数所以个段起始地址也定是16倍数偏移地址为16位16位地址寻址能力为64KB所以个段最大长度为64KB

段寄存器
段地址在8086CPU中段寄存器中存放8086CPU有四个段寄存器:CSDSSSES当8086CPU要访问内存时由这四个段寄存器提供内存单元段地址

CS和IP
CS和IP是8086CPU中最关键寄存器它们指示了CPU当前要读取指令地址CS为代码段寄存器IP为指令指针寄存器设CS中内容为MIP中内容为N8086CPU将从内存M*16+N单元开始读取条指令并执行

8086CPU读取执行条指令步骤
CSIP将内容送入地址加法器---地址加法器将计算出来物理地址送入输入输出控制电路---输入输出控制电路将物理地址送入地址总线---数据总线根据地址总线将指仍

如果本文没有解决您的问题,请进老妖怪开发者社区提问

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: