专栏首页乱码三千8086汇编学习之关于数据段的取值和赋值

8086汇编学习之关于数据段的取值和赋值

前言

数据段存在的意义是为了告诉cpu, 该段物理地址存放的是数据而不是指令

那么既然里面存放的是数据, 势必会有取值和赋值

取值

将20001H物理地址中的数据取值然后填入通用寄存器中, 如下:

mov ax ,2000H
mov ds ,ax
mov ax,[1] #[1]等同于 2000H:1H

以上有几个关键的地方需要记忆

  • []内数字表示偏移地址, 默认将DS设为基地址
  • 必须先声明段地址 也就是必须先给ds赋值
  • 通用寄存器相当于临时变量ax,bx,cx,dx….. 任选 ,只要避免冲突即可

赋值

将BH中的数据赋值给数据物理地址20001H中, 如下:

mov bh,30H
mov ax ,2000H
mov ds ,ax
mov [1] ,bh

和取值类似, 反过来即可

注意

  1. 在代码段CS:IP中, cpu读取的内存地址宽度是更具代码所占的字节数据而定, 那么在数据段DS中,如何确定读取多少个字节的数据呢?

以取值代码为例:

mov ax ,2000H
mov ds ,ax
mov ax,[1]

如果物理地址和数据一一对应关系如下:

20001H----->23
20002H----->11
20003H----->53
20004H----->71

那么ax中的值是多少呢?

答案是1123 而不是23, 为什么?

这是根据寄存器容器大小决定的, 容器大装得多, 容器小装的小, 因为ax是16位容器,那么则获取16位也就是两个字节的数据,即1123, 如果是ah或者al接收的话则获取8位也就是一个字节的数据,即23

  1. mov 内存单元:内存单元是不允许的, 比如mov [0],[1]

本文分享自微信公众号 - 乱码三千(infree6)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?

    前两篇文章,我们一起学习了 8086 处理器中关于 CPU、内存的基本使用方式,重点对段寄存器和内存的寻址方式进行了介绍。

    IOT物联网小镇
  • 汇编语言学习

       7、1Byte = 8bit ;    1KB = 1024B ;  1MB = 1024KB ;   1GB = 1024MB

    tandaxia
  • Linux 从头学 01:CPU 是如何执行一条指令的?

    这两年多以来,我的本职工作重心一直是在 x86 Linux 系统这一块,从驱动到中间层,再到应用层的开发。

    IOT物联网小镇
  • 吹弹牛皮之C++ 汇编指令

    本节及接下来的研究内容,着重的是x64的汇编。x64汇编根据编译器的不同,又有两种书写格式。

    用户7698595
  • Linux从头学06:16张结构图,彻底理解【代码重定位】的底层原理

    在上一篇文章中Linux从头学05-系统启动过程中的几个神秘地址,你知道是什么意思吗?,我们以几个重要的内存地址为线索,介绍了 x86 系统在上电开机之后:

    IOT物联网小镇
  • 爱了爱了,这篇寄存器讲的有点意思

    下面我们就来介绍一下关于寄存器的相关内容。我们知道,寄存器是 CPU 内部的构造,它主要用于信息的存储。除此之外,CPU 内部还有运算器,负责处理数据;控制器控...

    C语言与CPP编程
  • 汇编语言之GNU ARM

    GNU最开始其实是一个操作系统,旨为打造一个开源免费自由的操作系统,目前操作系统还在完善中

    乱码三千
  • Linux从头学02:x86中内存【段寻址】方式的来龙去脉

    饭是一口一口的吃,计算机也是一步一步的发展,例如下面这张英特尔公司的 CPU 型号历史:

    IOT物联网小镇
  • Debug究竟是什么意思?

    各位,相信你们都听过Debug这个词,那这个词在我们计算机领域究竟是什么意思呢?今天就在这和大伙简单说道说道,讲的不好不对的地方还请大家批评指正。

    7089bAt@PowerLi
  • 未整理的计组复习笔记?

    计组是我听过的最脑阔疼的课。不过已经考过了orz以及,大家学的计组内容可能不一样,这篇复习包括的内容应该是比较简略的。

    gojam
  • 《深入理解计算机系统》阅读笔记--程序的机器级表示(上)

    编译器基于编程语言的规则,目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。GCC c语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的...

    coders
  • Mac下写8086汇编

    我们课上讲的是8086下的16位汇编,如此远古的操作系统导致我在配置环境时遇到了很多问题。起初打算在win7虚拟机下用masm和汇编ide写汇编,但编译不成功,...

    gojam
  • 16位汇编第第四讲常用的7种寻址方式

    常用的7中寻址方式 昨天稍微讲了一下,立即数寻址,今天继续讲解寻址方式. (注意,这个属于简陋版的,写了4个小时的博客,也就是第一版,保存了一下,但是博客出问题...

    IBinary
  • 16位汇编第一讲简介

                     汇编第一讲 汇编简介 一.什么是汇编   汇编语言他是计算机语言,计算机语言通俗点说就是人类和计算机(也就是CPU)沟通的...

    IBinary
  • 汇编语言第三版答案(王爽)

    汇编语言答案(王爽)  此文只是用来存个档,不喜勿喷 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位。 (2)1KB的存储器...

    Angel_Kitty
  • Centos7 下 InfluxDB 从安装开始到入门

    InfluxDB的开源版本在单个节点上运行。如果您需要高可用性来消除单点故障,请考虑InfluxDB企业版。

    Devops海洋的渔夫
  • 16位汇编第五讲各种指令详解第一讲

    汇编指令详解 8080指令详解 1.8086系统下,Inter指令系统共有117条指令(看似很多,分一下类) 1.数据传送类指令(专门传送数据的) 2.算术运算...

    IBinary
  • 逆向课程第五讲逆向中的优化方式,除法原理,以及除法优化下

            逆向课程第五讲逆向中的优化方式,除法原理,以及除法优化下 一丶除法的优化 1.有符号被除数 / 无符号除数的情况下 高级代码为: ? 汇编中优化...

    IBinary
  • 16位汇编第三讲 分段存储管理思想

          内存分段 一丶分段(汇编指令分段) 1.为什么分段?   因为分段是为了更好的管理数据和代码,就好比C语言为什么会有内存4区一样,否则汇编代码都写...

    IBinary

扫码关注云+社区

领取腾讯云代金券