• 汇编语言(王爽) 第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就把我们定义的栈段当栈空间用

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

  • 相关阅读:
    从dump看硬件问题
    Pycharm----【Mac】设置默认模板
    python----装饰器(几种常见方式的使用与理解)
    【Mac】打开配置文件,添加/修改环境变量
    Airtest---UI自动化测试项目
    python----PySnooper获取打印日志
    学习类网站
    unittest----assert断言的使用
    Mac---使用tree生成目录结构
    python request 留位置7
  • 原文地址:https://www.cnblogs.com/wz0107/p/5380158.html
Copyright © 2020-2023  润新知