zoukankan      html  css  js  c++  java
  • 汇编语言第三章寄存器(内存访问)

    3.1  在CPU中,用一个16位寄存器来存储一个字,一个字两个字节,高8位存放高位字节,低8位存放低位字节,低字节所在的内存单元称为起始地址。

    3.2 3.3 8086CPU中,通常用DS寄存器来存放要访问数据的段地址(字或者字节)

    举个例子:

    mov bx,1000H

    mov ds,bx

    mov al,【0】(内存单元操作数

    ds之中的段地址为1000H

    因为8086CPU的硬件设计,不支持将数据直接送入段寄存器。

    3.4 mov、add、sub的相关用法

    图示

     图示

    图示

     

     以上就是mov,add,sub, 的相关使用方法,有具体的格式要求。

    具体的在debug中可以看看效果,当然操作位数必须一致。

    3.6 栈

    在数据结构中我们就认识了栈这种数据结构,即后进先出,举个例子,一个入口,放进三本书,数据结构、高数、汇编,拿出来的顺序,汇编、高数。数据结构。

    3.7 CPU提供的栈机制

    8086CPU提供的栈机制,跟数据结构的类似,PUSH出栈,POP入栈,任意时刻,ss:sp指向栈顶元素,

    例如

    push ax的执行

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

    (2)将ax中的内容送入ss:sp指向的内存单元,同时ss:sp指向新栈顶。

    pop ax 的执行

    (1)将ss:sp指向的内存单元送入ax中;

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

    3.8 栈顶越界的问题

    空栈执行pop出栈操作或者满栈执行push入栈操作,这些会引起栈顶越界问题。

    我们在编程的时候要担心数组越界的问题,要根据可能用到的最大栈空间,来安排栈的大小。

    数组越界的相关截图在之后的博客中会更新。

    3.9 push.pop指令

    push和pop的后面可以是寄存器,段寄存器,内存单元。

    mov ax,1000H

    mov ss,ax

    mov sp 0010H(初始化栈顶)

    mov ax,001AH

    mov bx,001BH

    push ax

    push bx(ax,bx入栈)

    sub ax,ax(ax清零)

    sub bx,bx

    pop bx(恢复bx,ax的)

    pop ax

    最后入栈的寄存器的内容在栈顶,所以恢复时,要最先入栈。

  • 相关阅读:
    Spring&AOP&JDK和Cglib动态代理&AspectJ进行AOP开发(XML方式)
    python 切换工作目录
    python 布隆过滤器
    python sys.path.append()
    python encrypt 实现AES加密
    python 魔术方法
    python re匹配中文和非中文
    python 文件整理 shutil
    python定时任务框架
    mac 系统修改环境变量
  • 原文地址:https://www.cnblogs.com/-Cold/p/9826582.html
Copyright © 2011-2022 走看看