码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言:第三章 寄存器(内存访问)

时间:2015-06-26 17:39:07      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

3.1内存中字的存储

CPU中寄存器是16位的,可以用高低字节存储一个字,但是每个内存单元是8位的,只能存储一个字节,

所以内存中用相邻2个内存单元存储一个字的高低字节

如:20000数值(4E20H)在地址0的内存单元数值为20H,在地址1的内存单元数值为4EH

  两个内存单元存储一个字型数据叫做一个字单元,

  字单元的起始地址为N就叫N地址字单元,表示一个字的低字节在地址N的内存单元,高字节在地址N+1的内存单元

  任意连续的2个内存单元都可以组成一个字单元

3.2 DS和 【address】

  CS寄存器用于存放下个指令所在内存单元的段地址。用jmp 1000:0 赋值 CS

  DS寄存器一般用于存放要访问的内存单元的段地址:

  如我们想把内存单元10000H(1000:0)的内容放到AL中:

  mov bx,1000H  将要访问的内存单元段地址放到bx中

  mov ds,bx    将bx放入ds段寄存器中

  mov al,[0]    将[0]代表的内存单元内容放到al中

  [0]: 表示一个内存单元,段地址是DS中的值,偏移地址是0,所以此时【0】表示1000:0内存单元的内容

  注意: mov ds,1000H是不行的,段寄存器是不可以直接赋值的,只能从其他寄存器转义到段寄存器

  相反:将AL写入10000H

  mov bx,1000H

  mov ds,bx

  mov [0],al

3.3字的传送

  mov指令两个参数的位数相同,

  当mov在寄存器与内存进行数据交互时,寄存器的字节数决定了传送单个内存单元还是字单元。

  mov ax,[0] 会将该地址的字单元数据组合成16位传入ax寄存器,即传送了一个字

  问题 :

  技术分享

  mov ax,1000H    ax=1000H

  mov ds,ax      ds=1000H

  mov ax,[0]      ax=1123H

  mov bx,[2]      bx=6622H

  mov cx,[1]      cx=2211H

  add bx,[1]      bx=8833H

  add cx,[2]      cx=8833H

3.4 mov,add,suv指令

  mov 寄存器,数据   数据只能转移到寄存器,不能转移到段寄存器

  寄存器,段寄存器,内存单元在mov指令中的位置都是可以随意换的

  mov 寄存器,数据

  mov 寄存器,寄存器

  mov 寄存器,内存单元

  mov 内存单元,寄存器

  mov 内存单元,段寄存器

  mov 段寄存器,内存单元

  mov 段寄存器,寄存器

  mov 寄存器,段寄存器

  

  add,sub只能对数据,寄存器,内存单元操作,不能用于段寄存器

3.5数据段:存放数据的连续内存单元形成一个数据段

  根据需要可以随意操作数据段中的数据

  如123B0H-123B9H是一个长度为10的数据段.

  1.累加前3个内存单元

  mov bx,123BH

  mov ds,bx

  add al,[0]

  add al,[1]

  add al,[2]

  2.累加前3个字型数据

  add ax,[0]

  add ax,[2]

  add ax,[4]

检测点3.1

  1)在Debug中用 ‘d 0:0 1f‘ 查看内存,结果如下

  0000:0000 70 80 F0 30  EF 60 30  E2-00 80 80 12 66 20 22 60

  0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88

  下面程序执行前AX=0,BX=0 写出下列命令执行后相关寄存器中的值

  mox ax,1     AX=1

  mov ds,ax     DS=1

  mov ax,[0000]  AX=(16+0=10H)= 2662H

  mov bx,[0001]  BX=(16+1=11H)=E626H

  mov ax,bx    AX=E626H

  mov ax,[0000]  AX=2662H

  mov bx,[0002]  BX=(16+2=12H)=D6E6H

  add ax,bx     AX=FD48H

  add ax,[0004]  AX=2C14H  12C14

  mov ax,0     AX=0

  mov al,[0002]   AX=00E6H

  mov bx,0     BX=0

  mov bl,[000C]  BX=0026H

  add al,bl     AX=000CH

汇编语言:第三章 寄存器(内存访问)

标签:

原文地址:http://www.cnblogs.com/superzhao/p/4602758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!