• 【汇编语言】 第三章 寄存器(内存访问)


    字单元

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

    DS和【adress】

    8086CPU中的DS寄存器,通常用来存放要访问数据的段地址。比如我们要读取10000H单元的内容,可以用如下的程序段进行

    mov bx,1000H
    
    mov ds,bx
    
    mov al,[0]

    "[...]"中的0表示内存单元的偏移地址,指令执行时,8086cpu会自动从ds中取出段地址

    8086cpu不支持将数据直接送入段寄存器的操作,ds是一个段寄存器,所以

    mov ds,1000H纸条指令非法,需要用一个寄存器来进行中转。

    数据段

    cpu提供的栈机制

    push ax  将寄存器ax中的数据送入栈

    pop ax  从栈顶取出数据送入ax

    8086cpu入栈和出栈都是以字位单位进行的

    任意时刻,SS,SP指向栈顶元素。push指令和pop指令执行时,CPU从SS和SP中得到栈顶的地址

    栈空,SS:SP指向栈空间最高地址单元的下一个单元

    8086CPU,入栈时,栈顶从高地址向低地址方向增长

    mov ax, 1000H
    mov ds, ax ;内存单元的段地址要放在ds中
    push [0]    ;将1000:0处的字压入栈中
    pop[2]      ;出栈,出栈的数据送入1000:2处

    push指令执行步骤

    1.  sp = sp - 2
    2. 向ss:sp指向的字单元中送入数据

    pop指令执行步骤

    1. 1.从ss:sp指向的字单元中读取数据
    2. 2.sp=sp+2

    任意时刻,ss:sp指向栈顶元素

    8086cpu只记录栈顶,栈空的大小我们自己管理。

  • 相关阅读:
    9.5---所有字符串的排列组合(CC150)
    9.4---集合子集(CC150)
    9.3---魔术索引(CC150)
    5.3(2)----机器人走方格2(CC150)
    9.2---机器人走方格(CC150)
    9.1---上楼梯(CC150)
    5.3---找最近的两个数(CC150)
    5.8---像素设定(CC150)
    7.4---加法替代运算(CC150)
    4.9---二叉树路径和(CC150)
  • 原文地址:https://www.cnblogs.com/hulian425/p/13901357.html
Copyright © 2020-2023  润新知