• 第三章 寄存器知识总结


    内存中字的存储

    用16位寄存器来存储一个字,一个字要用两个地址连续的内存单元来存放(一个单元存放一个字节),⚠️其顺序是高-高,低-低,即小端法

    字单元概念:即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节,取低地址内存单元地址为字数据地址

    n地址字单元:起始地址为n的字单元。

    ds和【address】

    ds:存放要访问数据的段地址。

    mov指令的两种传送:

    1.将数据直接送入寄存器(两个操作数要一样长

    2.将一个寄存器的内容送入另一个寄存器

    3.将一个内存单元中的内容送入一个寄存器中:mov 寄存器名,内存单元地址。(两个内存单元之间不能直接传送数据。

    ⚠️8086cpu不支持将数据直接送入段寄存器的操作。只好用一个寄存器进行中转。

    mov,add,sub指令

    ⚠️在mov, add, sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段

    mov指令有如下三种形式:

    (1)mov 寄存器,段寄存器

    (2)mov 内存单元,段寄存器

    (3)mov 段寄存器,内存单元

    栈    (SS) × 16 + (SP)  → 栈顶的物理地址

    栈是一种具有特殊的访问方式的储存空间。

    特殊型:最后进入这个空间的数据,最先出去。后进先出

    两个基本操作:

    入栈:将一个新的元素放到栈顶。

    出栈:从栈顶取一个元素。

    cpu提供的栈机制

    最基本的两个指令:(都是以为单位进行的;操作对象不能是常数

    PUSH(入栈)

    POP(出栈)

    段寄存器ss,sp

    ss:栈顶的段地址存放在其中

    sp:偏移地址存放在其中

    任何时刻ss:ip指向栈顶元素。cpu从ss,sp中得到栈顶的地址。

    入栈(push)步骤:

    (1)sp=sp-2,ss:sp指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶。

    (2)将寄存器中的内容送入ss:sp指向的内存单元处,ss:sp指向新栈顶。

    出栈(pop)步骤:ss:sp指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。

    (1)将ss:sp指向的内存单元处的数据送入ax中。

    (2)sp=sp+2,

    ⚠️栈空时,ss:sp指向栈空间最高地址单元的下一个单元。

    ⚠️出栈的内存仍然存在,只是不在栈中。

    栈顶超界的问题:

    超出了栈空间,其他内存将被覆盖。8086cpu不保证我们对栈的操作不会超界。因此我们在编程的时候要自己操心栈顶超界的问题。

    push,pop指令

    格式:push:寄存器,段寄存器,内存单元(让数据入栈)。

    pop :寄存器,段寄存器,内存单元(接收出栈的数据)。

    ⚠️不能直接向段寄存器ss中送入地址。

    point

    push和pop指令访问的内存单元的地址不是在指令中给出的,是由ss:sp指出的。

    Push,pop等栈操作指令,修改的只是sp。栈顶的变化范围最大为0~ffffh。因此,一个栈段的最大容量为64kb

  • 相关阅读:
    【Python编程:从入门到实践】chapter6 字典
    【Python编程:从入门到实践】chapter5 if语句
    【Linux_Unix系统编程】Chapter9 进程凭证
    【Linux_Unix系统编程】Chapter10 时间
    【Linux_Unix系统编程】Chapter8 用户和组
    【Linux_Unix系统编程】chapter7 内存分配
    【Linux_Unix系统编程】chapter6 进程
    书籍 人生
    流程图软件
    技术文章,iOS,iOS开发系列 数学函数
  • 原文地址:https://www.cnblogs.com/makaya/p/9864738.html
Copyright © 2020-2023  润新知