• 第三章 寄存器(内存访问)


    1、字型数据考虑两个字节,本高字单元+本字单元

    2、DS和[address]:DS存放要访问数据的段地址。

    3、mov指令可以完成两种传送功能:1.将数据直接送入寄存器;2.讲一个寄存器中的内容送入到另一个寄存器。除此之外,mov指令还可以将一个内存单元中的内容送入到一个寄存器。例mov al,[0]。执行指令时,8086CPU会自动取DS中的数据为内存单元的段地址。

    4、如何把1000H送入DS?8086CPU不支持将数据直接送入段寄存器的操作,DS是一个段寄存器(硬件设计问题)。数据——通用寄存器——段寄存器。

    5、如何将al中的数据送入内存单元10000H?

    6、[0]何时是一个字,何时是一个字节?

    7、mov 寄存器 段寄存器

    8、如果是段寄存器DS指向的那就是数据段,存放数据;如果是段寄存器CS指向的那就是代码段,存放的是代码;如果是段寄存器SS指向的那就是栈段,存放的是栈。

    9、栈:基本操作进栈(push)和出栈(pop)。例push ax:将寄存器ax中的数据送入栈中;POP ax:从栈顶取数据存入ax中。

    10、如何知道栈顶位置?两个寄存器:段寄存器SS 存放栈顶的段地址,寄存器SP 存放栈顶的偏移地址,任意时刻,SS:SP指向栈顶元素,不断更新。

    11、栈空的时候SP指向最高地址的下一位地址。

    12、C语言函数调用,变量调用与栈有关,这个处理系统自动处理。调用函数的时候将自己的变量全部入栈,调用完成后出栈。

    13、pop取数据只移动指针,然后复制数据,不会删除数据。

    14、栈顶越界

    15、PUSH和POP格式:后面可以加1.通用寄存器;2.段寄存器;3、内存单元。

    16、xor ax ax,将ax置零(异或)

    17、用栈存储数据出栈顺序和入栈顺序相反。

    18、POP:先读取SS:SP的值,后SP加二;PUSH:先SP的值减二,然后传送数据。都是修改SP的内容,栈顶的变化范围最大为0——FFFFH。

    19、栈段:起始地址为16的倍数,栈为空的时候sp=栈底+1。一个栈段最大容量是64KB。

    20、如果栈满,再次压栈,栈顶将环绕,覆盖了原来栈中的内容。

    21、栈早期是用来保存函数的返回值。现在栈是用来临时存放数据的。栈是为了函数的存在而存在的。。

     

    检测点:

    1.mov ax, 2000

    mov ss, ax

    mov sp, 10H

    2.mov ax,1000H

    Mov ss,ax

    Mov sp 0H

    仔细观察图3.19的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?

    因为用T指令进行调试时,会产生中断。而为了保护现场,CPU则先将标志寄存器进栈、再把当前CS的值进栈,最后将IP的值进栈。

  • 相关阅读:
    mysql数据库主从同步复制原理
    NoSQL
    Mysqldump参数大全
    MySQL Show命令的使用
    学习shell脚本之前的基础知识
    详解MySQL大表优化方案
    sql索引的优缺点
    [C#] 取得每月第一天和最後一天、某月总天数
    Easy ui DateBox 控件格式化显示操作
    StudioStyle 使用 厌倦了默认的Visutal Studio样式了,到这里找一个酷的试试
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2390313.html
Copyright © 2020-2023  润新知