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

    寄存器(内存访问)

    1.字数据在内存中的存储

    • 内存以字节为单位划分为若干个单元。
    • 字在储存时要用两个地址连续的内存单元来存放。
    • 字数据的存-取原则:高-高,低-低。即小端法,低位字节存放在低地址内存单元,高位字节存放在高地址内存单元,并且取低地址内存单元地址作为字数据地址。
    • 在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8为寄存器相对应。

    2.数据在内存单元和CPU之间的传送

    • 执行命令时,默认情况下,8086自动取寄存器DS中的值为内存单元的段地址。
      • 将一段内存用作数据段,是编程时的一种安排;
      • 在mov,add,sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。

    3.汇编指令mov,add,sub

    • mov:可以将数据直接送到寄存器,也可以将一个寄存器的内容送入另一个寄存器
      • 两个操作数长度要一致。
      • 常数不能作为第一个操作数(目的操作数)
      • 常数作第二个操作数时,如果最高位是十六进制的A~F,前面要加零。
      • 两个内存单元之间不能直接传送数据。
      • 不能使用mov修改CS和IP的值
      • 两个段寄存器之间不能直接传送。
      • 不能把常数送到段寄存器。
    • add:注意事项
      • add指令的操作数不能同时是内存单元。
      • add指令的操作数不能是段寄存器。
    • sub:注意事项
      • 两个内存单元不能直接用sub指令相减。
      • sub指令的操作数不能是段寄存器。
    • extra:mov,add,sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。

    4.栈

    • 栈是一个逻辑概念。可以将一段内存空间当作栈来使用。
    • 栈顶的物理地址:SS:SP
      • SS:栈段段寄存器,存放栈段的段地址。
      • SP:栈指针寄存器,存放栈顶的偏移地址。
      • 物理地址:(SS)×16+SP
    • push和pop
      • 入栈和出栈均以字为单元
      • 操作对象不能是常数
      • pop段寄存器中,段寄存器不能是CS和SS。
    • 栈顶超界
      • 栈满时用push入栈
      • 栈空时用pop出栈
  • 相关阅读:
    CSS3新增文本属性实现图片点击切换效果
    swipe和swiper的区别
    uncaught syntaxerror: unexpected token
    科协前辈的阿里面试经验转载1
    Oracle 分析函数
    Jakarta Commons HttpClient 学习笔记 (二)
    Ubuntu eclipse下android virtual device manager不能删除AVD
    Android的界面设计工具——DroidDraw
    JS异步请求数据
    Ubuntu配置JDK和Android环境变量
  • 原文地址:https://www.cnblogs.com/-Anguvia-/p/9852598.html
Copyright © 2011-2022 走看看