【汇编】寄存器——内存访问内存中字的存储方式、DS和[address]、DS[]和CS:IP的区别、MOV,ADD,SUB、数据段与代码段的区别

本文详细介绍了8086CPU中寄存器的作用,特别是CS和DS的区别。DS用于数据段,存放数据的段地址,而CS存放代码段地址。内存中字的存储要注意字节和字的区别。MOV指令的三种寻址方式包括寄存器、立即数和直接寻址。数据传递和运算中,ADD和SUB指令不能直接操作段寄存器。同时,强调了数据段和代码段在内存管理中的角色,并通过实例展示了数据的存储和计算过程。
摘要由CSDN通过智能技术生成

第三章 寄存器(内存访问)

3.1 内存中字的存储

在内存中要看清取出的是字节型还是字型数据,一个是8位另一个是16位,如果从0位置按字取就是从0向上取值取到1,即为4E20H。

问题

在这里插入图片描述
在这里插入图片描述
1)20H
2)4E20H
3)12H
4)0012H
5)124EH
在这里插入图片描述

3.2 DS和[address]

与之前CS代码段寄存器类似,DS是数据段寄存器。
DS存储要访问的数据段地址,[]中存储的是相对于DS的数据偏移地址空间

MOV al,[0]意味着将0作为偏移地址,将DS:0内存单元中的数据直接送入寄存器。

MOV有三种用法:
mov ax,bx是寄存器寻址
mov ax,1000H是立即寻址
mov ax,[0]是直接寻址

问题

不是已经有cs放段地址嘛?那DS是什么?
cs是代码段,放输入的代码。
ds段是数据段,放输入的数据的
CS代码段寄存器类似,DS是数据段寄存器。重要的话说两遍,一定要记住这两个点的区别。
在这里插入图片描述
在这里插入图片描述
CS:IP读取到的东西会被CPU认为是指令,而DS读取到的东西会直接被CPU认为是数据
重要的话说三遍!
在这里插入图片描述

在8086CPU中是不支持将数据直接保存到通用寄存器中的。
那我们应该如何把1000H放入DS?
要先使用通用寄存器保存1000H,再把通用寄存器中的数值传入段寄存器。
mov ax,1000H mov ds,ax
在这里插入图片描述

3.3 字的传递

在这里插入图片描述

问题

请先思考后在看解答哦
在这里插入图片描述
解答:
我们通过在DOSBOX虚拟机中来debug实现一下。
通过e参数修改10000H-10003H四个连续地址的数值。
通过r参数查看下CS:IP的位置,再用a参数在CS:IP位置添加指令数据。
t参数执行,结果可以看出数值为:
Ax 1123H
Bx 6622H+2211H=8833H
Cx 2211H+6622H=8833H
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.4 MOV ADD SUB指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题

ADD和SUB能对段及促其直接进行操纵吗?
不可以。段寄存器进行操作只可以MOV。
在这里插入图片描述

3.5 数据段

与代码段相对的这里数据段展现了作用。
1B=1字节=1内存单元=0.5字
在这里插入图片描述
在这里插入图片描述

问题

在这里插入图片描述
在这里插入图片描述

练习

写完后再对答案哦。
在这里插入图片描述

AX=2662
BX=E626
AX=E626
AX=2662
BX=D6E6
AX=FD48
AX=12C14
AX=0
AL=00E6
BX=0
BX=0026
AX=000C
在这里插入图片描述
通过-r参数修改CS:IP的数值。
在这里插入图片描述
-a指令对相应位置写入执行的指令。
在这里插入图片描述
-e参数在相应位置修改数据。
在这里插入图片描述
-r看看下一条开始的指令是否在正确位置:CS:IP=2000:0000
在这里插入图片描述
-t执行命令循环图如下:
在这里插入图片描述

在这里插入图片描述

总结

在这里有一个很重要的概念,那就是分清楚CS和DS的区别,这两个都是段寄存器,那他们两个有什么不同呢?
是里面存放的内容不相同,CS中存放的是下一个要执行指令的段地址而DS存放的是下一个要使用数据的段地址也就是说CS是代码段寄存器,DS是数据段寄存器。一旦分清这一点,再回头看上面练习题可以发现指令和要操纵的数据是紧紧联系的,指令既控制着要跳转位置也控制着增加减少的寄存器数值,随之指令的变换,操纵的数值也在变换,这就是最为重要的数据和指令的区别。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webfker from 0 to 1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值