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

    >>字数据在内存中的存储

    计算机中内存以字节为单位,划分为若干个单元, 计算机内数据存-取单位: ① 字节 (8bit) ② 字 (16bit) ③ 双字 (32bit) ④ 四字 (64bit)

    王爽的《汇编语言里》用的是小端法,即字数据的低(高)位字节存放在低(高)地址内存单元 ② 取低地址内存单元地址作为字数据地址.

    像就0和1而言,0为低地址内存单元,1为高地址内存单元,如下图4E20H的存储,

    >>数据在内存和CPU之间的传送

    我们要明确一点,要在CPU和内存单元之间传送数据,就必须知道内存单元的地址。

    执行指令时,默认情况下,8086自动取寄存器DS中的值为内存单元的段地址(DS: 数据段段寄存器,用于存放数据段的「段地址」)。

    >>汇编指令mov, add, sub

     在mov, add, sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。如mov ax,[1],就相当于ax ← ( (ds) × 16 + 1)

    mov指令的一些形式及使用时的注意事项NOTE

    NOTE:

    (1) 两个操作数长度要一致。

    (2) 关于常数(立即数)

    ① 不能作为第1个操作数(目的操作数) ② 作第2个操作数(源操作数)时,如果最高位是十六进制的a~f或A~F,前面要加零!具体点的话可看下图实例

    (3) 两个内存单元之间不能直接传送数据。

    (5) 关于段寄存器

    ① 两个段寄存器之间不能直接传送; ② 不能把常数送到段寄存器。

    add指令的一些形式及使用时的注意事项NOTE

    NOTE:

    (1) add指令的操作数不能同时是内存单元

    (2) add指令的操作数不能是段寄存器。

     sub指令的一些形式及使用时的注意事项NOTE

    NOTE:

    1) 两个内存单元不能直接使用sub指令相减。

    (2) sub指令的操作数不能是段寄存器。

    >>「栈」的基础知识 

    栈」是一个逻辑上的概念。可以将一段内存空间当作「栈」来使用。

    栈的特性: 后进先出 ,8086中栈以为存取单位

    >>与「栈」相关的寄存器: SS和SP 

    SS: 栈段段寄存器,用于存放栈段的「段地址」 SP: 栈指针寄存器,用于存放栈顶的偏移地址。

    任意时刻,SS:SP对应的物理地址是栈顶的物理地址。(SS) × 16 + (SP) → 栈顶的物理地址

    >>「栈」的 push和pop的具体操作和注意事项

    push入栈操作分析:第1步: 栈顶上移两个单元,即: 栈顶-2 → 栈顶(sp=sp-2)  第2步: 存入数据

    pop出栈操作分析:第1步: 取出字数据 第2步: 栈顶下移两个单元,即: 栈顶+2 → 栈顶(sp=sp+2)

    特殊情况,栈为空时,栈顶指向栈底+2

    「栈」操作指令: push和pop的指令形式

    注意事项:

    在push 内存单元和pop 内存单元中,指令中只需给出「偏移地址」。默认,段地址在DS中。

    对8086CPU而言,push和pop的操作: 1.入栈和出栈均以字为单元,2,操作对象不能是常数, 3,pop 段寄存器中,段寄存器不能是CS和SS

    >>关于「段」

    1,「段」是一个逻辑上的概念。 编程时,可根据需要指定一段内存区用作数据段、代码段或是栈段。

    2,对8086CPU而言,push和pop的操作: 入栈和出栈均以字为单元 操作对象不能是常数 pop 段寄存器中,段寄存器不能是CS和SS

    3, 一段内存可以同时用作代码段、数据段、栈段。 由编程时灵活确定。

    4,在8086CPU中,每个段的最大长度不能超过64KB。 (因为寄存器是16位的,能表示的地址范围只能是0000H~FFFFH,即0~2^16-1)

  • 相关阅读:
    想让进程后台运行,试试Linux的nohup命令,3分钟学会。
    面试官:你能说一下Redis的常见应用场景吗?
    面试被问MySQL 主从复制,怎么破?
    Spring Boot 解决跨域问题的 3 种方案!
    Kafka如果丢了消息,怎么处理的?
    惊呆,这样操作 Nginx 并发数就能达到3w?
    easyexcel 自动设置列宽(转)
    Ubuntu18.04自适应VMware调整桌面大小
    IDEA将maven项目打包时同时带上项目的maven依赖(转)
    python 定时框架APScheduler
  • 原文地址:https://www.cnblogs.com/kori/p/9920775.html
Copyright © 2011-2022 走看看