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

    3.1 内存中的字

    内存中的字是16位的,以2个内存单元存储

    地址大的存高位(字的左边8位),地址小的存低位(字的右边8位)

    字单元:存放1个字形数据的内存单元,由2个内存单元组成,共16位

    3.2 DS

    一个寄存器的名字,用来放数据段的段地址

    mov 指令可以把数据转到寄存器,一个寄存器的内容转到另一个寄存器,内存单元(字单元)转到寄存器

    但是一般会mov ax,1000h;mov ds,ax而不是直接mov ds,1000h

    因为8086CPU不支持直接把内存单元的东西转到段寄存器上面

    3.3字的传送

    直接上栗子

    mov ax,1000h

    mov ds,ax;

    mov ax,[0]

    假设10000h的数据是11H,10001h的数据是22H

    那么指令执行好了之后,ax的数据就是2211H

    说明内存中的东西到寄存器中是以1个字单元传输的,也就是2个字节

    3.4 mov add sub

    移动,加减把

    3.5 数据段

    把内存中砍一段处理存放数据,人为规定的,系统不认识

    想系统认识这段内存是放数据的,就用ds中的段地址指向其地址就好了

    3.6栈

    栈也是把一段内存拿过来,遵循LIFO原则

    用SS:SP识别内存段是一个栈

    3.7 cpu提供的栈机制

    基本指令就出栈和入栈,以字为单位进行

    栈顶元素用SS:SP2个寄存器规定

    入栈先SP+2再push进去

    出栈先pop出去再sp-2

    3.8 超越栈

    因为栈是一段内存空间,有大小

    push太多和pop太多都会跑到栈外面,影响别的内存

    8086没办法限制栈顶和栈尾,只能自己注意下了

    3.10栈段

    也就是内存段,但是用SS:SP指向的

    SP是个16位的寄存器,所以栈段范围是0000-ffff

    段小结

    段存放数据叫数据段,段地址是DS,当用mov,add,sub等指令访问内存单元的时候,CPU就把我们定义的数据段中的内容当数据来访问

    段存放代码叫代码段,也就是指令段把。用CS:IP指向,这样CPU就会执行我们定义的代码段中的指令

    段当做栈叫栈段,指向是SS:SP,当CPU进行栈操作的时候,如push,pop就把我们定义的栈段当栈空间用

    完工~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 相关阅读:
    java struts2入门学习实例--用户注册
    java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器
    struts2基本配置详解2
    struts2基本配置详解
    使用maven+eclipse搭建最简单的struts2的HelloWorld
    2013年总结
    linux shell 脚本攻略学习20--awk命令入门详解
    linux shell 脚本攻略学习19--sed命令详解
    linux shell 脚本攻略学习18--grep命令详解
    linux shell 脚本攻略学习17--正则表达式入门
  • 原文地址:https://www.cnblogs.com/wz0107/p/5380158.html
Copyright © 2011-2022 走看看