zoukankan      html  css  js  c++  java
  • 寄存器(内存访问)03 零基础入门学习汇编语言15

    第三章:寄存器(内存访问)03

     

    让编程改变世界

    Change the world by program


     

    mov、add、sub指令

     

    已学mov指令的几种形式:

    mov 寄存器,数据

    mov 寄存器,寄存器

    mov 寄存器,内存单元

    mov 内存单元,寄存器

    mov 段寄存器,寄存器

     

    根据已知指令进行推测:

    mov 段寄存器,寄存器

    mov 寄存器,段寄存器

    [caption id="attachment_282" align="aligncenter" width="300"] mov 寄存器,段寄存器[/caption]  

    mov 内存单元,寄存器

    mov 内存单元,段寄存器

    mov 段寄存器,内存单元

      add和sub指令同mov一样,都有两个操作对象。 [caption id="attachment_283" align="aligncenter" width="300"] mov 寄存器,段寄存器[/caption] 它们可以对段寄存器进行操作吗?(请自行在Debug中试验)  

    数据段

      前面讲过,对于8086PC机,我们可以根据需要将一组内存单元定义为一个段(可以是代码段、数据段等)。 我们可以将一组长度为N(N≤64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。 比如我们用123B0H~123B9H这段空间来存放数据:

    段地址:123BH

    长度:10字节

     

    如何访问数据段中的数据呢?

    将一段内存当作数据段,是我们在编程时的一种安排,我们可以在具体操作的时候 ,用 ds 存放数据段的段地址,再根据需要,用相关指令访问数据段中的具体单元。 我们将123B0H~123BAH的内存单元定义为数据段,我们现在要累加这个数据段中的前3个单元中的数据,代码如下: [caption id="attachment_284" align="aligncenter" width="300"] 访问数据段中的数据[/caption]  

    问题3.5

    写几条指令,累加数据段中的前3个字型数据。 思考后看分析: [caption id="attachment_285" align="aligncenter" width="300"] 累加数据段中的前3个字型数据[/caption] 注意:一个字型数据占两个单元,所以偏移地址是0、2、4。  

    小结

    (1)字在内存中存储时 ,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放再高地址单元中。 (2)用 mov 指令要访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。 (3)[address]表示一个偏移地址为address的内存单元。 (4)在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应。 (5)mov、add、sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。 (6)可以根据自己的推测,在Debug中实验指令的新格式。 检测点3.1 [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LDQTRDJPROQO']视频下载[/Downlink]
  • 相关阅读:
    关系数据库&&NoSQL数据库
    NoSQL
    大数据时代的数据存储,非关系型数据库MongoDB
    判断是否为BST
    百度2017暑期实习生编程题
    memset()实现及细节
    在必须返回一个对象时,不要去尝试返回一个引用
    返回局部变量指针
    用引用返回值
    数组形参
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3845991.html
Copyright © 2011-2022 走看看