基础

(1) 内存以字节为单位,划分为若干个单元。
(2) 计算机内数据存-取单位:
① 字节 (8bit)
② 字 (16bit)
③ 双字 (32bit)
④ 四字 (64bit)

ds寄存器

DS: 数据段段寄存器,用于存放数据段的「段地址」

将一段内存用作数据段,是编程时的一种安排
在mov, add, sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。

格式:

mov ax, [1]; ax ← ( (ds) × 16 + 1)

附:

注意:

(1) 两个操作数长度要一致。

(2) 关于常数(也叫立即数)

  ① 不能作为第1个操作数(目的操作数)
  ② 作第2个操作数(源操作数)时,如果最高位是十六进制的a~f或A~F,前面要加零!

(2)例:

  mov 4000H, ax × mov ax, 4000H √
  mov ax, A400H × mov ax, 0A400H √

(3) 两个内存单元之间不能直接传送数据。

(4) 不能使用mov指令修改CS和IP的值。

(5)段寄存器

  ① 两个段寄存器之间不能直接传送;
  ② 不能把常数送到段寄存器。

「栈」是一个逻辑上的概念。可以将一段内存空间当作「栈」来使用。

栈顶: 最后入栈的字数据所对应的地址单元
栈底: 固定的一端,栈区最高地址单元的前一个单元

入栈: 把数据存入栈
出栈: 从栈取出数据

SS: 栈段段寄存器,用于存放栈段的「段地址」
SP: 栈指针寄存器,用于存放栈顶的偏移地址。

SS:SP对应的物理地址是栈顶的物理地址。
(SS) × 16 + (SP) → 栈顶的物理地址

「栈」操作指令: push和pop

小结

(1) 「段」是一个逻辑上的概念。
编程时,可根据需要指定一段内存区用作数据段、代码段或是栈段。
(2) 用作数据段时,要把段地址→DS
用作栈段时,要把段地址→SS,栈顶偏移地址 → SP
用作代码段时,段地址→CS,要取的指令偏移地址→IP。但CS和IP的值不能使用mov改变。
(3) 一段内存可以同时用作代码段、数据段、栈段。
由编程时灵活确定。
(4) 在8086CPU中,每个段的最大长度不能超过64KB。
(因为寄存器是16位的,能表示的地址范围只能是0000H~FFFFH,即0~216-1)

UNIT THREE的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Pr ...

  2. ABP源码分析十:Unit Of Work

    ABP以AOP的方式实现UnitOfWork功能.通过UnitOfWorkRegistrar将UnitOfWorkInterceptor在某个类被注册到IOCContainner的时候,一并添加到该类 ...

  3. Failed to stop iptables.service: Unit iptables.service not loaded.

    redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...

  4. VS2012 Unit Test 个人学习汇总(含目录)

    首先,给出MSDN相关地址:http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TestTools.UnitTesting.a ...

  5. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

  6. VS2012 Unit Test——Microsoft Fakes入门

    如题,本文主要作为在VS2012使用Fakes的入门示例,开发工具必须是VS2012或更高版本. 关于Fakes的MSDN地址:http://msdn.microsoft.com/en-us/libr ...

  7. MTU(Maximum transmission unit) 最大传输单元

    最大传输单元(Maximum transmission unit),以太网MTU为1500. 不同网络MTU如下: 如果最大报文数据大小(MSS)超过MTU,则会引起分片操作.   路径MTU: 网路 ...

  8. Simulink Memory vs Unit Delay

    Memoryブロック.Unit Delayブロック共に前回の入力値を出力しますが.動作するタイミングが異なります. ●Memoryブロック シミュレーションの各時刻(ステップ)で動作し.「1ステップ」 ...

  9. GRU(Gated Recurrent Unit) 更新过程推导及简单代码实现

    GRU(Gated Recurrent Unit) 更新过程推导及简单代码实现 RNN GRU matlab codes RNN网络考虑到了具有时间数列的样本数据,但是RNN仍存在着一些问题,比如随着 ...

  10. Unit Testing with NSubstitute

    These are the contents of my training session about unit testing, and also have some introductions a ...

随机推荐

  1. [Swift]使用Alamofire传递参数时报错

    p.p1 { margin: 0; font: 11px Menlo; color: rgba(0, 0, 0, 1) } span.s1 { font-variant-ligatures: no-c ...

  2. ClickHouse 使用

    最近mysql报表数据太多,要转移数据到 clickHouse ,顺便学学该数据仓库的使用 中文文档:https://clickhouse.com/docs/zh/ B站学习视频 : https:// ...

  3. ChatGPT 爆火!真有那么神?设计师会失业吗?

    人工智能来了,咱们是不是都要失业了呢? 一款AI产品,在科技市场和资本市场掀起了一阵风暴. 一切的源头,来自一个由美国人工智能公司OpenAI开发的一种大型语言模型ChatGPT.它采用了Transf ...

  4. C#如何判断文件是否存在

    https://jingyan.baidu.com/article/ac6a9a5ead6ef86b653eac8b.html 首先,我们定义一个字符串,名为path. 然后,我们给他一个路径,这样才 ...

  5. 配dns

    cat /etc/resolv.conf

  6. ROS创建工作空间 Create your workspace

    https://blog.csdn.net/baidu_38869387/article/details/119840120 http://wiki.ros.org/catkin/Tutorials/ ...

  7. 【笔记】gitlab+openldap使用memberof筛选登录用户

    这几天在搞kerberos+nfs4 没搞成 之前搞了个openldap实现了分散控制集中管理(不是DCS...) gitlab和nexus也支持ldap 虽然都不咋好用 但是在搞gitlab的时候发 ...

  8. spark之依赖关系

    spark的每个RDD都会记录从创建到当前算子的依赖(血缘关系),当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区 ---  toDebugString 方法查看 On ...

  9. easypoi多sheet导出

    以前一直接触的是单sheet导出,这次的需求换成了多sheet导出,算是一个难点所以得记录一下 底层关键的代码就是: private static void defaultExport(List< ...

  10. C#中检测代码执行时间

    使用System.Diagnostics.Stopwatch, using System; using System.Diagnostics; using System.Threading; clas ...