zoukankan      html  css  js  c++  java
  • 第三章

    1.内存中字的存储

    用16位寄存器来存储一个字。高八位存放高位字节,低八位存放低位字节。

    字单元:存放一个字型数据的内存单元,由两个地址连续的内存单元组成。

    注意区分地址单元和地址字单元。

    2:DS和address

    DS寄存器用来存放访问数据的段地址。

    如果我们想读取10000H单元的内容:

    mov dx,1000h

    mov ds,dx

    mov al,[0]

    前两行就是将1000H送入到DS寄存器中(需要用普通寄存器dx来过渡)

    然后用用mov al,[0]来完成传送(mov指令中的[]说明操作对象是一个内存单元,[]中的0说明这个内存单元的偏移地址为0)

    3.字的传送

    8086CPU可以一次性传送16位的数据,即可以一次性传送一个字。

    只要在mov 指令给出16位的寄存器就可以进行16位数据的传输。

    列如:mov dx,1000h

               mov ds,dx

              mov al,[0]

              mov  [0],cx

    就是将cx中的16位数据传到1000:0处。

    4.mov add sub指令

    mov 寄存器,数据 mov 寄存器,寄存器 mov 寄存器,内存单元 mov 内存单元,寄存器 mov 段寄存器,寄存器

    add和sub指令只是没有mov 段寄存器,寄存器这一项。

    5.数据段

    比如:将123B0H~123B9H的内存单元定义为数据段,现在要累加这个数据段中的前三个单元的数据,代码如下:

    mov ax,123BH

    mov ds,ax

    mov al,0

    add al,[0]

    add al,[1]

    add al,[2]

    6,栈

    栈是一种具有特殊的访问方式的存储空间,它的特殊性就在于:最后进入这个空间的数据,最先出去。

    栈有两个基本的操作:即入栈和出栈

    入栈就是将新的元素放到栈顶,出栈就是从栈顶取出一个元素。

    7,CPU提供的栈机制

    8086CPU提供相关的指令来以栈的方式访问内存空间,这意味着在编程时,可以将一段内存当作栈来使用。

    CPU提供入栈(PUSH)和出栈(POP)两个最基本的指令,比如:push axj就是表示将寄存器ax中的数据送入到栈中,pop  ax则表示从栈顶取出数据送入到ax当中。

    对于CPU如何知道栈顶的位置,我们可以想到必须要有相应的寄存器来存放栈顶的 地址,即段寄存器SS和寄存器SP,SS就是用来存放栈顶的段地址,SP就是用来存放偏移地址,并且在任意时刻SS:SP指向栈顶的地址。

    可以看出,入栈时,栈顶从高地址向低地址方向增长。

    pop指令是完全与push指令相反的,当再次执行push指令时,并在里面写入新的数据时,它将会被覆盖。

    8,栈顶超界问题

    当栈满再使用push指令入栈时,或栈空的时候再使用pop时,都会发生栈顶超界的问题。

    9,push pop指令

    push 寄存器   ;将一个寄存器中的数据入栈

    pop 寄存器  :用一个寄存器来接受出栈的数据

    当然用段寄存器也是可以的;

    push 内存单元  ;将一个内存单元处的字入栈

    pop 内存单元   ;用一个内存单元来接受出栈的数据

    比如: mov ax,1000h

                mov ds,ax

               push [0]     ;将1000:0处的字压入栈中

               pop [2]      ;将出栈的数据送入到1000:2处

    10.栈段

    对与栈段,将它的段地址放在SS中,将栈顶单元的偏移地址放在SP中,这样CPU在需要进行栈操作时,就可以将我们定义的栈段当作栈空间使用。

  • 相关阅读:
    要给自己留时间思考
    联表更新 Update Left Join
    SQLServer2014内存优化表评测
    SQL Server中数据库文件的存放方式,文件和文件组
    {好文备份}SQL索引一步到位
    qt调用js,js调用qt
    【转】vs2010打开qt的.pro文件时错误解决办法
    qt多线程信号槽传输方式
    【转】设置Qt应用程序图标及应用程序名
    【转】Qt多线程操作界面---在QThread更新QProgressBar
  • 原文地址:https://www.cnblogs.com/lopezj/p/10134304.html
Copyright © 2011-2022 走看看