热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

第三章知识梳理

1.字单元:存放一个字型数据(16)位的内存单元,有两个地址连续的内存单元组成。高地址内存单元存放字形数据的高位字节,低地址内存单元存放字形数据的低位字节。将起

1.字单元:存放一个字型数据(16)位的内存单元,有两个地址连续的内存单元组成。高地址内存单元存放字形数据的高位字节,低地址内存单元存放字形数据的低位字节。

                  将起始地址为N的字单元简称为N地址字单元。

2.DS:8086CPU中的一个段寄存器,存放将要访问数据的段地址。

[...]:表示一个内存单元,[...]中的值表示内存单元的偏移地址.

8086CPU:自动取ds中的数据为内存单元的段地址。

内存单元的地址:DS中的值*16+[...]

3.mov指令:可以进行传送的所有操作对象。

mov 寄存器,数据

mov  寄存器,寄存器

mov 寄存器,内存单元

mov 内存单元,寄存器

mov 段寄存器,寄存器

mov  寄存器,段寄存器

mov 内存单元,段寄存器

mov 段寄存器,内存单元

mov 内存单元,常数

4.add指令:可以进行传送的所有操作对象。

add 寄存器,数据

add 寄存器,寄存器

add 寄存器,内存单元

add 内存单元,寄存器

add  内存单元,常数

5.sub指令:可以进行传送的所有操作对象。

sub 寄存器,数据

sub 寄存器,寄存器

sub 寄存器,内存单元

sub 内存单元,寄存器

sub 内存单元,常数

6.数据段:一组长度为N,地址连续,起始地址为16的倍数的内存单元当作专门存储数据的内存空间。

                只是编程的一种安排,可以用DS指向数据段的段地址,[...]具体的指向。

7.CPU提供的栈机制。

8086CPU:提供相关的指令以栈的形式来访问内存空间,既在基于8086CPU编程的时候,将一段内存空间当作栈来使用。

                   提供的入栈和出栈指令为:PUSH,POP.

                    以字为单位来进行。

                    栈顶位置:段寄存器SS,寄存器SP来表示,SS:SP=栈顶的位置。

                    CPU执行PUSH,POP指令时从SS和SP获取栈顶的位置。

8.栈顶超界问题:8086CPU不保证我们对栈的操作不会越界,8086CPU只知道栈顶在哪里,而不知道我们安排的栈空间有多大,所以需要自己注意栈顶超界问题。

9.push和pop指令。

(1)操作对象。

push (段寄存器,内存单元)寄存器         将(段寄存器,内存单元)寄存器中的值入栈

pop (段寄存器,内存单元)寄存器            出栈,用一个(段寄存器,内存单元)寄存器接受出栈的数据

(2)CPU执行过程。

push指令:先改变SP,再向SS:SP处传送入栈。

pop指令:先读取SS:SP处的数据,再改变SP,移动栈顶。

10.栈段:长度为N的一组地址连续,起始地址为16的倍数的内存单元,当作栈空间来使用。

                仅仅是编程的一种安排,必须用SS:SP来指向。

                以栈的方式来访问这段内存单元即为栈段。

11.一段内存单元是可以同时被认为是数据段(DS表示其段地址),代码段(CS表示其段地址),栈段(SS表示其段地址)。

 


推荐阅读
  • 计算机视觉初学者指南:如何顺利入门
    本文旨在为计算机视觉领域的初学者提供一套全面的入门指南,涵盖基础知识、技术工具、学习资源等方面,帮助读者快速掌握计算机视觉的核心概念和技术。 ... [详细]
  • 如何使用Git Fork关联私有仓库进行代码提交与更新
    在团队协作开发中,为了减少频繁提交代码给领导审查的不便,开发者通常会选择从主仓库Fork出一个私有仓库,在完成特定功能后,再向主仓库发起Pull Request。本文将详细介绍这一过程的具体步骤。 ... [详细]
  • 本文探讨了Codeforces 580C题目——Kefa与公园的问题,深入分析了如何在给定条件下帮助Kefa找到合适的餐厅。 ... [详细]
  • 本文详细介绍了如何将After Effects中的动画相机数据导入到Vizrt系统中,提供了一种有效的解决方案,适用于需要在广播级图形制作中使用AE动画的专业人士。 ... [详细]
  • 本文探讨了如何利用数组来构建二叉树,并介绍了通过队列实现的二叉树层次遍历方法。通过具体的C++代码示例,详细说明了构建及打印二叉树的过程。 ... [详细]
  • 本文详细探讨了如何处理包含多种分隔符的字符串分割问题,并提供了一个高效的C++实现方案。 ... [详细]
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文详细解析 Skynet 的启动流程,包括配置文件的读取、环境变量的设置、主要线程的启动(如 timer、socket、monitor 和 worker 线程),以及消息队列的实现机制。 ... [详细]
  • 深入解析C++ Atomic编程中的内存顺序
    在多线程环境中,为了防止多个线程同时修改同一数据导致的竞争条件,通常会使用内核级同步对象,如事件、互斥锁和信号量等。然而,这些方法往往伴随着高昂的上下文切换成本。本文将探讨如何利用C++11中的原子操作和内存顺序来优化多线程编程,减少不必要的开销。 ... [详细]
  • 本文探讨了在Python中多线程与多进程的性能差异,特别是在处理CPU密集型任务和I/O密集型任务时的表现。由于全局解释器锁(GIL)的存在,多线程在利用多核CPU方面表现不佳,而多进程则能有效利用多核资源。 ... [详细]
  • Web开发实践:创建连连看小游戏
    本文详细介绍了如何在Web环境中开发一款连连看小游戏,适合初学者和技术爱好者参考。通过本文,您将了解游戏的基本结构、连线算法以及实现方法。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
author-avatar
wesley_zx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有