汇编第二章--基础知识梳理与总结

第一章,我们介绍了有关汇编语言的基础知识,在第二章我们主要介绍寄存器。

CPU的主要部件是寄存器,在8086CPU有14个寄存器,它们分别是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,称为通用寄存器。由于8086CPU的上一代CPU中的寄存器都是8位的,为了保持兼容,8086CPU的AX、BX、CX、DX这4个寄存器都可分为两个独立使用的8位寄存器:

?AX可分为AH和AL  ?BX可分为BH和BL  ?CX可分为CH和CL  ?DX可分为DH和DL 

出于兼容性的问题,8086CPU可以处理两种尺寸的数据:

字节:记为byte,一个字节由8个bit组成,可以存放在8位寄存器中

字:记为word,由两个字节组成,这两个字节分别被称为高位字节和低位字节

通过汇编指令控制CPU进行工作:

在写一条汇编指令或一个寄存器的名称时不区分大小写。

CPU执行程序段中的每条指令后,对寄存器中的数据的改变:

程序段中的最后一条指令add ax,bx,在执行前ax和bx中的数据为8226H,相加后的数据为:1044CH,但是ax为16位的寄存器,只能存放4位十六进制的数据,所以最高位的1不能在ax中保存,ax中的数据为:044CH,最高位的1并不是舍去了,而是存在了其他位置,随着我们对汇编语言的慢慢深入,就会体会到程序设计师的聪明与机智。

注意:ax分出的两个独立的寄存器ah与al,它们是毫无关联的,不要误认为al的数据相加后超出的位数存放在ah中!

每一个内存单元都有唯一的地址,称为物理地址。

16位结构的8086CPU:

1.运算器一次最多可以处理16位的数据。

2.寄存器的最大宽度为16位。

3.寄存器和运算器之间的通路为16位。

8086CPU有20位地址总线,可以达到1MB的寻址能力,那它怎么用16位地址来达成20位物理地址的呢?

8086CPU采用在内部用两个16位地址合成的方法来形容一个20位的物理地址。

逻辑结构如图所示:

地址加法器采用:物理地址=段地址*16+偏移地址的方法进行合成

“物理地址=段地址*16+偏移地址”本质含义:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

段的概念:每一个段有一个段地址,但是内存并不是被划分成一段一段的,而是由于CPU进行划分。

由于16位地址的寻址能力是64KB,所以一个段的最大长度为64KB,并且段的起始地址一定是16的倍数,变化范围为0~ffffH。

8086CPU有4个段寄存器:CS,DS,SS,ES。

CS和IP是8086CPU中两个最关键的寄存器,CS为代码段寄存器,IP为指令指针寄存器。

8086CPU读取、执行的工作原理:

CS和IP的值是可以修改的:IP每次是根据指令的空间大小进行更新。

简单的修改CS、IP的指令:jmp指令。

①同时修改CS、IP的内容:jmp段地址:偏移地址

②只修改IP的内容:jmp 某一合法寄存器

原文地址:https://www.cnblogs.com/Vincent12/p/9744025.html

时间: 2024-08-28 11:09:13

汇编第二章--基础知识梳理与总结的相关文章

汇编第一章--基础知识梳理与总结

闲谈汇编之初,先说说计算机的硬件组成:运算器,控制器,存储器,输入设备,输出设备. 下图就是计算机的硬件组成框架: 在早期,机器语言是直接对硬件进行操作,但是机器语言是0和1的字符串,这就是的早期程序员的工作十分繁杂,如果0或者1有一位出错,那么整个程序就会崩掉了,那么如何解决这个问题呢? 汇编语言就应运而生了. 汇编语言的主体是汇编指令,汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式. 程序员运用汇编语言书写指令提升了效率,可是计算机只能读懂机器指令,那么怎

读《精通css》--第二章基础知识

一. 常用的选择器:类型选择器和后代选择器.ID选择器和类选择器.伪类选择器(:link,:visited,:hover,:active,:focus) 二. 通用选择器:*  ( 通配符,也可以用来对某个元素的所有后代应用样式) 三. 高级选择器:CSS有向后兼容性,即如果浏览器不理解某个选择器,那么它会忽略整个规则.对于站点功能或布局很重要的任何元素上,都应该避免使用这些高级选择器. 1. 子选择器和相邻同胞选择器:> +    (IE6不支持) 2. 属性选择器:根据属性是否存在 或者 属

Java基础知识二次学习-- 第二章 基础语法与递归补充

第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下划线,$,数字组成,应该由字母,下划线$开头,同时应该避开java保留字符 变量是内存中的一小块区域,使用变量名来访问这块区域 执行过程中的内存管理(疑问:这里的内存和Jvm的一样吗?) code segment 存放代码 data segment 静态变量 字符串常量 stack 栈 局部变量 h

《软件可靠性方法》笔记(一)---第二章 预备知识

时间:2016.11.12: 地点:南京江宁实验室: 状态:迷茫的研一: 为什么会读到这本书?导师推荐的.可以说第一开始听到这本书名时完全是一脸蒙蔽,就像选本科毕设题目时是一样的...就是在上半年当老师告诉我他是做形式化的,我一度以为我特么的难道联系到自动化学院了?我可是一门心思向计算机的.后来直到暑假在家闲的发慌翻翻本科时候的软件课本书时,居然看到了一章讲形式化的...蜜汁尴尬,毕竟当年这门课最后我得了优.咳咳,扯远了.这本书还是蛮适合刚接触形式化的人看的,但是得有一定的数学功底(所以说我一开

(连载)边喝咖啡边学Unity——第二章 预备知识体系

第二章 预备知识体系 --本章涉及空间数学.解析几何.线性代数.计算机图形学.算法.数据结构等众多基础学科.同上一章相比,虽然枯燥,但是绝不能称为废话之章,即使粗略的看一遍,也比直接跳过来的好,详细地读完,会让读者以后的开发之路走的更加平坦. 并且本章的知识不仅仅对您的Unity游戏开发有帮助,对于大部分软件开发人员都是大有作用的. 作为传统3D游戏编程来讲,需要运用到的知识面非常之广,涉及到的学科特别之多.而通常讲编程的书籍,会弱化数学知识,讲数学的书籍,会弱化编程方面的知识.这就是我在第一章

wpf(第一章 基础知识)

wpf第一章基础知识:通过vs2015创建wpf程序会在引用里面多出3个核心程序集PresentationCore.PresentationFramework.WindowsBase.并且会在解决方案中生成如下的结构: 1.程序起始相关的资源:2.与整个wpf相关的后台代码:3.窗体界面:4.窗体界面的后台代码. 在app.xaml中 1.Application的后台类:2.启动窗体:3.系统资源区域 除此之外可以在MainWindow.xaml中自定义窗体设置属性,拖拉控件在里面.

[SQL] SQL 基础知识梳理(一)- 数据库与 SQL

SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 序 目录 What's 数据库 数据库结构 SQL 概要 创建表 删除和更新表 1-1 What's 数据库 1.数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.如:大型-银行存储的信息,小型-电话簿. 2.数据库管理系统(Batabase Management Syste

JavaScript基础知识梳理--数组

JavaScript基础知识梳理--数组 1.创建方法 空数组:var obj=new Array(); 指定长度数组: var obj=new Array( size ); 指定元素数组 :  var obj=new Array( 元素1,元素2,....): 单位数组:var obj=new Array[ 元素1,元素2,元素3,...,元素N]; 多维数组:var a=new Array( [数组1],[数组2],[数组3],...,[数组N] ); 2.基本操作 存取数组元素: 单维数组

Java基础知识梳理《一》

一.Java数据类型(简单称之为“四类八种”) java 基本的数据类型长度都是固定的,好处是在实现跨平台时就统一了. 1.整型 byte short int long (分别是1,2,4,8个字节) 类型 存储需求 位数 取值范围 byte 1字节 8位 -128~127 short 2字节 16位 -2^15 ~2^15-1 int 4字节 32位 -2^31~2^31-1 long 8字节 64位 -2^63~2^63-1 当超出int表示范围时,应该使用long型,添加后缀一大写的L 注