汇编网首页登录博客注册
byzero的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2010-07-09 23:44] 汇编语言——第四天

1.内存中字的存储
    由于内存单元是字节单元,所以一个字要用两个连续的内存单元来存放,低位字节放在低地址单元中,高位字节放在高地址单元中。
    字单元:即存放一个字型数据(16位)的内存单元,由两个连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。
    任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可堪称一个地址为N的字单元中的高位字节单元(N+1)和低位字节单元(N)。
2.DS和[address]
    CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址,在8086CPU中,内存地址由段地址和偏移地址组成。8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
    如:mov al,[0]中 “[address]”表示一个内存单元,“例中[address]”中的0表示内存单元的偏移地址。在mov指令执行时,8086CPU自动取ds中的数据为内存单元的段地址。  [mov 寄存器名,内存单元]:将内存单元中的内容送入寄存器。  [mov 内存单元,寄存器名]将寄存器中的内容送入内存单元。
    如何把一个数据送入寄存器呢?因为ds是一个段寄存器,而8086CPU不支持将数据直接送入段寄存器的操作,所以,只好用一个寄存器来进行中转,即先将段地址送入一个一般的寄存器,如bx,再将bx中的内容送入ds。
3.字的传送
    因为8086CPU是16位机构,有16根数据线,所以,可以一次性传送16位的数据,也就说一次性传送一个字。只要在mov指令中给出16位的寄存器就可以进行16位数据的传送。(字单元)
4.mov、add、sub指令
mov 指令形式

mov 寄存器,数据          如mov ax,8
mov 寄存器,寄存器        如mov ax,bx
mov 寄存器,内存单元      如mov ax,[0]
mov 内存单元,寄存器      如mov [0],ax
mov 段寄存器,寄存器      如mov ds,ax
mov 寄存器,段寄存器      如mov ax,ds
mov 内存单元,段寄存器    如mov [0],cs

add和sub 指令形式

add 寄存器,数据      sub寄存器,数据
add 寄存器,寄存器    sub寄存器,寄存器
add 寄存器,内存单元  sub寄存器,内存单元
add 内存单元,寄存器  sub寄存器,内存单元

5.数据段
略,详见书本
注:如累加一个字型,因为字型数据占两个单元,所以偏移地址类似(0、2、4)
评论次数(2)  |  浏览次数(1371)  |  类型(汇编笔记) |  收藏此文  | 

[  游客   发表于  2012-07-05 11:06  ]

吗,吗

[  游客   发表于  2012-07-05 11:07  ]

赞一个

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码