北京赛车网站开发公司,泉州市培训建设系统中心网站,北京网站建设公司知乎,wordpress 页面评论 调用文章目录 前言一、内存中字的存储1.1 8086cpu字的概念1.2 16位的字存储在一个16位的寄存器中#xff0c;如何存储#xff1f;1.3 字单元 二、用DS和[address]实现字的传送2.1 字的传送是什么意思#xff1f;2.2 要求原理解决方案#xff1a;DS和[address]配合8086传送16字节… 文章目录 前言一、内存中字的存储1.1 8086cpu字的概念1.2 16位的字存储在一个16位的寄存器中如何存储1.3 字单元 二、用DS和[address]实现字的传送2.1 字的传送是什么意思2.2 要求原理解决方案DS和[address]配合8086传送16字节 2.3 案例案例1案例2 三、DS与数据段3.1 DS与数据段是什么3.2 对内存单元中数据的访问3.3 将123B0H~123BAH的内存单元定义为数据段累加数据段中的前3个单元中的数据累加数据段中的前3个字型数据 总结 前言
在汇编语言中我们处理计算机内存中的数据时需要理解如何存储和传送字数据的一部分。通过使用数据段寄存器 DS 和 [address] 这样的符号我们能够有效地操作内存中的字实现数据的传送和处理。 一、内存中字的存储
1.1 8086cpu字的概念
让我用通俗易懂的话给你介绍一下 8086 CPU 中的字的概念。
在计算机世界中一个字通常表示一组二进制位这个组合的长度是由计算机的架构决定的。在 8086 CPU 中一个字由 16 位组成。每个位可以是 0 或 1就像开关一样有 16 个开关组合在一起构成了一个字。
想象一下你有一串 16 个灯泡每个灯泡可以是亮的1或者暗的0。这串灯泡就代表了一个字。当计算机处理数据时它会以这样的字为单位进行操作。这些操作可以包括加法、减法、移动数据等等。
所以8086 CPU 中的字就像是计算机处理信息的一种方式就像我们平时用字来表达语言一样计算机通过字来表达和处理数据。这个字的长度是 16 位每位都有它的特定含义就像字母构成单词一样这些 16 位的二进制数构成了计算机世界中的“语言”基本单位。
1.2 16位的字存储在一个16位的寄存器中如何存储
1、回答 高8位放高字节低8位放低字节 2、问题 16位的字在内存中需要2个连续字节存储怎么存放 3、回答 低位字节存在低地址单元高位字节存在高地址单元 例20000D4E20H存放0、1两个单元18D 0012H存放在2、3两个单元 1.3 字单元
字单元由两个地址连续的内存单元组成存放一个字型数据16位
想象一下你有一个很长的故事而你希望每次只读取一小段而不是整篇文章。字单元就有点像这个故事中的一个小节是计算机中用来处理数据的一小块单元。
在计算机的世界里字单元是存储器中的一小部分通常是由多个位比如8位、16位、32位等组成的。这些位就像是计算机的开关可以表示不同的信息。
字单元可以存储一个数字、一个字符或者其他数据。它就像一个小盒子可以装一些信息。当计算机需要处理数据时它可以一次性处理一个字单元就像你一次读一个小节的故事一样。
所以字单元是计算机存储和处理信息的一种方式是数据的一个小单元让计算机更方便地管理和操作数据。
原理在一个字单元中低地址单元存放低位字节高地址单元存放高位字节 在起始地址为0的单元中存放的是4E20H 在起始地址为2的单元中存放的是0012H
即是0、1可以组合4E20H 1、2可以组合:124E 依次类推
二、用DS和[address]实现字的传送
2.1 字的传送是什么意思
让我用通俗易懂的语言来解释一下汇编中的 DS 和 [address] 实现字的传送是什么意思。
首先DS 是数据段寄存器的缩写它在汇编语言中用来指示数据存储的位置。就像你有一个大抽屉把不同类型的东西放在不同的抽屉里一样DS 帮助计算机知道从哪里找到存储的数据。
然后[address] 表示一个内存地址。你可以把内存地址看作是抽屉的编号告诉计算机在哪里找到具体的数据。[address] 就像是对抽屉的引用告诉计算机要去哪个抽屉找数据。
现在当你在汇编语言中看到类似 MOV AX, [BX] 这样的指令时它的意思是将 BX 寄存器中存储的地址所指向的数据就像抽屉里的东西传送到 AX 寄存器中。
总体来说使用 DS 寄存器和 [address]汇编语言就像在抽屉中移动数据一样。DS 帮助找到正确的抽屉数据段而 [address] 则告诉计算机在这个抽屉中具体找哪个位置的数据。这样就能够实现数据的传送和处理。
2.2 要求
CPU要读取一个内存单元的时候必须先给出这个内存单元的地址
原理
在8086PC中内存地址由段地址和偏移地址组成段地址:偏移地址、
解决方案DS和[address]配合
用 DS寄存器存放要访问的数据的段地址 偏移地址用[…]形式直接给出 例1
mov bx,1000H
mov ds,bx
mov al, [0]将10000H(1000:0) 中的数据读到al中
例2
mov bx,1000H
mov ds,bx
mov [0],al将al中的数据写到 10000H(1000:0)中
将段地址送入DS的两种方式 (1) mov ds, 1000H
(2)
mov bx, 1000H
mov ds, bx例1
mov bx,1000H
mov ds,bx
mov al, [0]8086CPU不支持将数据直接送入段寄存器 硬件设计的问题 套路数据→一般的寄存器→段寄存器
8086传送16字节
8086CPU可以一次性传送一个字(16位的数据)
例如
mov bx, 1000H
mov ds, bx
mov ax, [0] ;1000:0处的字型数据送入ax
mov [0], cx ;cx中的16位数据送到1000:0处2.3 案例
案例1
mov ax, 1000H
mov ds, ax
mov ax, [0]
mov bx, [2]
mov cx, [1]
add bx, [1]
add cx, [2]案例2
mov ax, 1000H
mov ds, ax
mov ax, 2C31
mov [0], ax
mov bx, [0]
sub bx, [2]
mov [2], bx三、DS与数据段
3.1 DS与数据段是什么
DS寄存器
想象一下你有一个大书柜里面存放了很多不同的书籍。每一本书都有一个特定的位置你需要知道在哪个部分找到它。DS 寄存器就好像是一张告诉你在书柜的哪个部分找书的地图。它指示计算机在内存中的哪个区域找到数据。
数据段
现在把这个书柜比作内存而书柜的每个抽屉就是一个数据段。每个抽屉里存放着一些相关的信息可能是一组数字、字符或其他数据。数据段就像是书柜的一个部分用来组织和存储特定类型的数据。
因此当我们说 DS 寄存器与数据段有关时我们是在告诉计算机在内存中的哪个区域找到数据。就好比你要找一本书首先要知道在哪个书柜的哪个抽屉里找DS 寄存器就提供了这个信息而数据段就是具体的书柜部分其中存放着相关的数据。
在汇编语言中通过设置 DS 寄存器我们可以定位到正确的数据段就像通过地图找到正确的书柜一样。这有助于我们在程序中有效地访问和处理数据。
3.2 对内存单元中数据的访问
对于8086PC机可以根据需要将一组内存单元定义为一个段。 物理地址段地址×16偏移地址 将一组长度为NN≤64K、地址连续、起始地址为16的倍数的内存单元当作专门存储数 据的内存空间从而定义了一个数据段。 例用123B0H~123B9H的空间来存放数据 段地址123BH 起始偏移地址0000H 长度10字节 段地址1230H 起始偏移地址00B0H 长度10字节 … :处理方法(DS)[address]) 用DS存放数据段的段地址 用相关指令访问数据段中的具体单元单元地址由[address]指出
3.3 将123B0H~123BAH的内存单元定义为数据段
累加数据段中的前3个单元中的数据
mov ax, 123BH
mov ds, ax
mov al, 0
add al, [0]
add al, [1]
add al, [2]累加数据段中的前3个字型数据
mov ax, 123BH
mov ds, ax
mov ax, 0
add ax, [0]
add ax, [2]
add ax, [4]总结
在汇编语言中理解如何存储和传送字是关键的。通过使用 DS 寄存器和 [address]我们能够精确地定位内存中的数据并在不同的数据段中操作。这就好比在巨大的书库中通过标识书架和特定页面的方式找到并使用我们需要的信息。这些概念是理解计算机内存工作原理和编写有效汇编代码的基础。