首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【汇编】(四)寄存器(内存访问

前言 从访问内存的角度继续学习寄存器;   内存中字的存储 在0地址处开始存放20000(4E20H): 注意:0号单元是低地址单元,1号单元是高地址单元。...8086CPU 中有一个 DS 寄存器,通常用来存放要访问的数据的段地址。...传送指令 mov ax,1,mov ds,ax; mov ds,1000H 是不行的,8086CPU 不支持将数据直接送入段寄存器的操作,ds 是一个段寄存器(硬件设计的问题),所以 mov ds,1000H...(2)用 mov 指令要访问内存单元,可以在 mov 指令中只给出单元的偏移地址,此时,段地址默认在 DS 寄存器中。 (3)[address] 表示一个偏移地址为 address 的内存单元。...结论: push,pop 实质上就是一种内存传送指令,可以在寄存器和内存之间传送数据,与 mov 指令不同的是,push 和 pop 指令访问的内存单元的地址不是在指令中给出的,而是由 SS:SP 指出的

34720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    汇编语言_访问寄存器和内存

    ax add ax,bx ax = ax+bx CPU访问内存单元时要给出内存单元的地址 所有的内存单元构成了一个一维的线性空间 每个内存单元在这个空间中 都有自己唯一的地址 这个地址称为物理地址...CS-代码段寄存器 DS-数据段寄存器 SS-栈段寄存器 ES-附加段寄存器 DEBUG 通过e写入机器码 然后U命令可以将机器码转换为汇编指令 a命令可以直接写入汇编指令 d可以查看内存数据 t可以执行...address]配合 段地址由ds存放 []内有偏移地址 即 mov bx,1000h mov ds,bx mov al,[0] 将10000H(1000:0)中的数据读到al中 8086CPU不支持将数据直接放入段寄存...add 寄存器,内存单元 add 内存单元,寄存器 sub指令操作数据形式 sub 寄存器,数据 sub 寄存器寄存器 sub 寄存器,内存单元 sub 内存单元,寄存器 访问内存中数据段方法小结...是具有两个操作对象的指令 访问内存中的数据段 栈及栈操作的实现 我们之前已经说过栈这种结构 对于其特性我们就不详细介绍了 CPU提供的栈机制 现今的CPU中都有栈的设计 8086CPU提供相关指令 支持用栈的方式访问内存空间

    24720

    Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux

    今天,安装Windows 10测试版本号19603的用户发现,系统里WSL (Windows中的Linux子系统)的文件夹,居然可以用文件管理器直接访问了,而且是访问根目录。 ?...像Ubuntu,openSUSE和Fedora这些发行版之前在Windows应用商店里都能直接搜索和安装。...从Windows 1903开始,用户已经可以访问Linux文件,但是在文件管理器左侧导航栏直接提供访问还是第一次。...一个方法是通过命令行访问,用\wsl$实现,比如你安装的是Ubuntu,就在Powershell中输入 cd \wsl$\Ubuntu 另一种方法是在文件管理器中寻找,Linux子系统文件就放在用户的AppData...现在,直接访问Linux子系统文件的加入,再次让用户高呼微软“Awesome”。 ?

    2.6K20

    【汇编语言】寄存器(内存访问)(二)—— DS和

    8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。...下面详细说明指令的含义 (1) 前面,已知的mov指令可完成的两种传送功能: 将数据直接送入寄存器 将一个寄存器中的内容送入另一个寄存器中 除此之外,mov 指令 还可以将一个内存单元中的内容送入一个寄存器...可是,现实并非如此,8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段存器,所以mov ds,1000H这条指令是非法的。 那么如何将1000H送入ds呢?...只好用一个寄存器来进行中转,即先将1000H送入一个一般的寄存器,如bx,再将bx中的内容送入ds。 为什么8086CPU不支持将数据直接送入段寄存器的操作?...从内存单元到寄存器的格式是:“mov 寄存器名,内存单元地址” 从寄存器到内存单元则是:“mov 内存单元地址,寄存器名” 10000H可表示为1000:0,用ds存放段地址1000H,偏移地址是0,则

    13010

    汇编语言访问寄存器和内存篇---02

    汇编语言访问寄存器和内存篇---02 CPU的组成 寄存器是CPU内部的信息存储单元 通用寄存器——以AX为例 横看成岭侧成峰 “字”在寄存器中的存储 mov和add指令 确定物理地址的方法 物理地址...8位寄存器 ---- mov和add指令 注:汇编指令不区分大小写 ---- 确定物理地址的方法 物理地址 CPU访问内存单元时要给出内存单元的地址。...要求: CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址 原理: 在8086PC中,内存地址由段地址和偏移地址组成(段地址:偏移地址) 解决方案:DS和[address]配合 ,用 DS寄存器存放要访问的数据的段地址...,偏移地址用[…]形式直接给出 给出偏移地址后,会默认去DS寄存器获取段地址 ---- 字的传送 8086CPU可以一次性传送一个字(16位的数据) 例 mov bx, 1000H mov...(2)用 mov 指令要访问内存单元,可以在mov指令中只给出单元的偏 移地址,此时,段地址默认在DS寄存器中。 (3)[address]表示一个偏移地址为address的内存单元。

    83211

    【汇编语言】寄存器(内存访问)(三)—— 字的传送

    字的传送 前面我们用mov指令在寄存器和内存之间进行字节型数据的传送。 因为8086CPU是16位结构,有16根数据线,所以,可以一次性传送16位的数据,也就是说可以一次性传送一个字。...只要在mov指令中给出16位的寄存器就可以进行16位数据的传送了。 比如: 2. 问题一 内存中的情况如下图所示,并写出下面的指令执行后寄存器 ax,bx,cx 中的值。 思考后请看分析。 3....问题一的分析与解答 进行单步跟踪,看一下每条指令执行后相关寄存器中的值,见下表。 4. 问题二 内存中的情况如下图所示,写出下面的指令执行后内存中的值。 思考后看分析。 5....问题二的分析与解答 进行单步跟踪,看一下每条指令执行后相关寄存器或内存单元中的值,见下表。 结语 今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。

    10410

    【汇编语言】寄存器(内存访问)(四)—— mov、add、sub指令

    (1) 既然有“mov 段寄存器寄存器”,从寄存器向段寄存器传送数据,那么也应该有“mov 寄存器,段寄存器”,从段寄存器寄存器传送数据。...通过验证我们知道,“mov 寄存器,段寄存器”是正确的指令。...(2) 既然有“mov 内存单元,寄存器”,从寄存器向内存单元传送数据,那么也应该有“mov 内存单元,段寄存器”,从段寄存器向内存单元传送数据。...在 Debug 中进行试验,如下图所示 上图中,当CS:IP指向0B39:0105的时候,Debug 显示当前的指令 mov [0000],cs,因为这是一条访问内存的指令,Debug还显示出指令要访问的内存单元中的内容...由于指令中的CS是一个16位寄存器,所以要访问(写入)的内存单元是一个字单元,它的偏移地址为0,段地址在ds中,Debug在屏幕右边显示出“DS:0000=0000”,我们可以知道这个字单元中的内容为

    13810
    领券