【汇编】内存中字的存储、用DS和[address]实现字的传送、DS与数据段
文章目录
- 前言
- 一、内存中字的存储
- 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、回答
低位字节存在低地址单元,高位字节存在高地址单元
例:20000D(4E20H)存放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+偏移地址
将一组长度为N(N≤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],我们能够精确地定位内存中的数据,并在不同的数据段中操作。这就好比在巨大的书库中,通过标识书架和特定页面的方式找到并使用我们需要的信息。这些概念是理解计算机内存工作原理和编写有效汇编代码的基础。
相关文章:

【汇编】内存中字的存储、用DS和[address]实现字的传送、DS与数据段
文章目录 前言一、内存中字的存储1.1 8086cpu字的概念1.2 16位的字存储在一个16位的寄存器中,如何存储?1.3 字单元 二、用DS和[address]实现字的传送2.1 字的传送是什么意思?2.2 要求原理解决方案:DS和[address]配合8086传送16字节…...

数据分析 - 分散性与变异的量度
全距 - 极差 处理变异性 方差度量 数值与均值的距离,也就是数据的差异性 标准差描述:典型值 和 均值的距离的方法,数据与均值的分散情况...

Neo4j数据库介绍及简单使用
图数据库介绍 图数据库是一种专门设计用于存储和管理图形数据的数据库类型。在图数据库中,数据以图的形式表示,其中节点表示实体,边表示实体之间的关系。这种表示方式非常适合处理具有复杂关系的数据,如社交网络、推荐系统、网络…...

ubuntu 20.04安装 Anaconda教程
在安装Anaconda之前需要先安装ros(防止跟conda冲突,先装ros)。提前安装好cuda 和cudnn。 本博客参考:ubuntu20.04配置ros noetic和cuda,cudnn,anaconda,pytorch深度学习的环境 安装完conda后,输入: pyth…...

iframe渲染后端接口文件和实现下载功能
一:什么是iframe? 1、介绍 iframe 是HTML 中的一种标签,全称为 Inline Frame,即内联框架。它可以在网页中嵌入其他页面或文档,将其他页面的内容以框架的形式展示在当前页面中。iframe的使用方式是通过在HTML文档中插入…...

广西建筑工地模板:支模九层桉木模板
广西作为中国西南地区的重要建筑市场,建设工地的模板需求量一直居高不下。在众多建筑模板中,支模九层桉木模板以其强度高、使用寿命长的特点而备受关注。本文将介绍广西建筑工地常用的支模九层桉木模板,并探讨其在建筑施工中的应用优势。支模…...

java集合,栈
只有栈是类 列表是个接口 栈是个类 队列 接口有双链表,优先队列(堆) add会报错 offer是一个满了不会报错 set集合 有两个类实现了这个接口...

Ubuntu 20.04 LTS ffmpeg gif mp4 互转 许编译安装ffmpeg ;解决gif转mp4转换后无法播放问题
安装ffmpeg apt install ffmpeg -y gif转mp4 ffmpeg -f gif -i ldh.gif ldh.mp4 故障:生成没报错,但mp4无法播放,体积也不正常 尝试编译安装最新版 sudo apt install -y yasm axel -n 100 https://ffmpeg.org/releases/ffmpeg-6.0.1.tar.x…...

【Nginx】使用nginx进行反向代理与负载均衡
使用场景 反向代理:一个网站由许多服务器承载的,网站只暴露一个域名,那么这个域名指向一个代理服务器ip,然后由这台代理服务器转发请求到网站负载的多台服务器中的一台处理。这就需要用到Nginx的反向代理实现了 负载均衡…...

基于IDEA 进行Maven依赖管理
1. 依赖管理概念 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等…...

瑞萨RZ/G2L平台 初起动(SD卡启动)
文章目录 一 准备条件1 工具2 硬件3 镜像 二 烧录SD卡启动盘三 写Bootloader1 烧录文件2 启动烧录3 烧录 四 启动设置 一 准备条件 1 工具 ** BalenaEtcher(俗称“ Etcher”),是一款快速将系统镜像文件( .iso 或 .img 或 .zip或…...

chkconfig及服务脚本
运行级别 linux启动之后处于某个状态 linux运行级别 0:关机 #设置即重启 1:单用户,为root权限,禁止远程登录 2:无网络文本模式 3:多用户文本模式 4:未使用 5:图形化…...

[Android] libcutils - native 获取/设置 property
前言: Android 的property系统类似于linux的环境变量,但是更加精细。可以通过adb 设置和读取 property,同时也可以在代码 (JAVA/C/C) 中设置和获取属性。这有助于我们在运行时控制代码执行逻辑。比如打开 测试开关 或者 dump源数据文件。 工…...

Matlab 方位角计算之二
文章目录 一、简介二、实现代码三、实现效果一、简介 我们总是说降维打击,这种思路尤其在一些问题上显现的尤为突出,就比如方位角这个问题,如果我们局限于二维这个空间,那么很多时候就需要判断方向向量落在了那个象限,之后再一个个情况逐一分析,虽然这样做并不复杂,但总…...

Postman工具简介
介绍 Postman是一个商业的接口测试工具。免费的版本也可以使用不少功能。 官网:https://www.postman.com/ 下载、安装、应用界面 下载 安装、安装成功以后的应用界面 双击下载下来的可执行文件进行安装,出现如下界面: 可以注册一个账…...

2023.11.17 -hivesql调优,数据压缩,数据存储
目录 1.hive命令和参数配置 2.hive数据压缩 3.hive数据存储 0.原文件大小 18.1MB 1.textfile行存储格式, 压缩后size:18MB 2.行存储格式:squencefile ,压缩后大小8.89MB 3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB 4.列存储格式 orc-snappy ,压缩后大小3.75MB 5…...

基于Vue+SpringBoot的大学计算机课程管理平台 开源项目
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…...

2.c++基础语法
文章目录 1.c 程序结构关键字标识符、操作符、标点预处理指令注释main 主函数命名空间 2.c 变量和常量变量 3.c 数组和容器4.c 程序流程5.c字符和字符串 1.c 程序结构 关键字 关键字事程序保留的,程序员不能使用,c的常见关键字如下图: 标识…...

applicationContext.getBean 为null
场景: 使用SpringUtils 添加了统一类的调用。单元测试是正常的。 SpringUtils public class SpringUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;Overridepublic void setApplicationContext(Nonnull Applica…...

无线WiFi安全渗透与攻防(六)之WEP破解-Gerix-wifi-cracker自动化破解WEP加密
WEP破解-Gerix-wifi-cracker自动化破解WEP加密 WEP破解-Gerix-wifi-cracker自动化破解WEP加密1.环境准备1.软件和kali2.下载软件,下载地址3.将软件复制到kali,解压4.进入软件目录2.破解步骤1.启动gerix-wifi-cracker-2-master软件2.设置无线网卡位Monitor Mode模式3.重新扫描…...

华为OD机试 - 环中最长子串(Java JS Python C)
题目描述 给你一个字符串 s,首尾相连成一个环形,请你在环中找出 o 字符出现了偶数次最长子字符串的长度。 输入描述 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 备注 1 ≤ s.length ≤ 500000s 只包含小写英文字母用例 输入alolobo输出6说明最长子字符串之一…...

bug-跨域访问问题
问题场景 自定义 header,导致跨域问题 一个大屏项目,设置请求接口获取数据时,有的接口能够正常返回数据,有的接口提示跨域(接口域名不同),后端也进行支持跨域设置,结果还是提示跨域…...

Babyk勒索病毒数据集恢复,计算机服务器中了babyk勒索病毒怎么办?
计算机网络技术的不断应用,为企业的生产运营提供了极大便利,网络技术的不断发展也带来了许多网络安全隐患,近期,云天数据恢复中心陆续接到许多企业的求助,企业的计算机服务器遭到了babyk勒索病毒的攻击,导致…...

(.htaccess文件特性)[MRCTF2020]你传你呢 1
题目环境: 不难看出是一道文件上传漏洞 上传一句话木马文件burpsuite进行抓包<?php eval($_POST[shell]);?> 命名为PHP文件格式 Repeater进行重放 尝试了其它后缀进行绕过都没有成功 通过 application/x-php内容类型,可以看出被识别出是PHP文件&…...

微软Ignite 2023大盘点:GPT-4 Turbo、DALL-E 3等
11月16日,微软在美国西雅图举办“Microsoft Ignite 2023”全球开发者大会。ChatGPT等生成式AI成为了本次大会的重要主题。 下面「AIGC开放社区」将根据大会发布的内容,盘点重要内容。 GPT-4 Turbo、 DALL E 3等全新模型 16K上下文的新GPT-3.5 Turbo模…...

应用架构的演进 I 使用无服务器保证数据一致性
在微服务架构中,一个业务操作往往需要跨多个服务协作完成,包含了读取数据和更新多个服务的数据同时进行。在数据读取和写入的过程中,有一个服务失败了,势必会造成同进程其他服务数据不一致的问题。 亚马逊云科技开发者社区为开发者…...

jupyter修改默认打开目录
当我们打开jupyter notebook(不管用什么样的方式打开,使用菜单打开或者是命令行打开是一样的)会在默认的浏览器中看到这样的界面、 但是每一台不同的电脑打开之后的界面是不同的,仔细观察就会发现,这里面现实的一些文件…...

HTML5学习系列之标题和正文、描述性信息
HTML5学习系列之标题和正文、描述性信息 标题和正文标题段落 描述性信息强调注解备选上下标术语代码预定义格式缩写词编辑提示引用引述换行显示修饰非文本注解 总结 标题和正文 标题 按语义轻重排列:h1\h2\h3\h4\h5\h6 <h1>诗词介绍</h1> <h2>…...

互联网医院系统:数字化时代中医疗服务的未来
随着数字化时代的发展,互联网医院系统在医疗服务中的作用日益凸显。本文将讨论互联网医院系统的一些关键技术方面,探讨这些技术如何推动医疗服务进入数字化时代。 1. 数据智能与个性化服务 互联网医院系统依赖于大数据分析和人工智能技术,…...

(C语言)输入一个序列,判断是否为奇偶交叉数
#include <stdio.h> #include <string.h> int main() {char str[50];gets(str);int len,tmp 1;len strlen(str); //获取字符串长度 for (int i 0;i < len-1 ;i ){if((str[i] % 2 0 ) && (str[i1] % 2 ! 0)) //判断先偶数后奇数序列 tmp ;else if((s…...