8086 汇编笔记(一):寄存器

前言

8086 CPU 有 14 个寄存器,每个寄存器有一个名称。这些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW

一、通用寄存器

8086 CPU 的所有寄存器都是 16 位的,可以存放两个字节。AX、BX、CX、DX 这 4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

8086 CPU 的上一代 CPU 中的寄存器都是 8 位的。

为了保证兼容,使原来基于上代 CPU 编写的程序稍加修改就可以运行在 8086 之上,8086 CPU 的 AX、BX、CX、DX 这 4个寄存器都可分为两个可独立使用的8位寄存器来用:

        1. AX 可分为 AH 和 AL;

        2. BX 可分为 BH 和 BL;.

        3. CX 可分为 CH 和 CL;

        4. DX 可分为 DH 和 DL。 

AX 的低 8 位(0 位~7 位) 构成了 AL 寄存器,高 8位(8 位~15 位) 构成了 AH 寄存器。AH 和 AL 寄存器是可以独立使用的 8 位寄存器。 

二、字在寄存器中的存储 

出于对兼容性的考虑,8086 CPU 可以一次性处理以下两种尺寸的数据。

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

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

三、汇编指令

书中案例分析,请计算最后 ax 寄存器的值 

程序段中的最后一条指令 add ax,bx,在执行前 ax 和 bx 中的数据都为 8226H,相加后所得的值为:1044CH,但是 ax为16 位寄存器,只能存放4位十六进制的数据,所以最高位的1不能在 ax 中保存,ax 中的数据为:044CH。 

请计算 al 寄存器的值

程序段中的最后一条指令 add al,93H,在执行前,al 中的数据为 C5H,相加后所得的值为:158H,但是 al 为8位寄存器,只能存放两位十六进制的数据,所以最高位的1丢失,ax 中的数据为:0058H

这里如果将 al 换成 ax 则结果为 0158 H(注意区分八位和十六位寄存器)

在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的,例如: 

mov ax,bx
mov bx,cx
mov ax,18H
mov al,18H
add ax,bx
add ax,20000

答案解析:

四、物理地址

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

五、8086 CPU 给出物理地址的方法

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

1. CPU 中的相关部件提供两个 16 位的地址,一个称为段地址,另一个称为偏移地址;

2. 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件:

3. 地址加法器将两个16 位地址合成为一个20位的物理地址;

4. 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;

5. 输入输出控制电路将20位物理地址送上地址总线;

6. 20位物理地址被地址总线传送到存储器。 

地址加法器采用物理地址=段地址x16+偏移地址的方法用段地址和偏移地址合成物理地址 

六、段

如图 2.9 所示,我们可以认为:地址10000H~100FFH 的内存单元组成一个段,该段的起始地址(基础地址)为 10000H,段地址为 1000H,大小为 100H

我们也可以认为地址 10000H~1007FH、10080H~100FFH 的内存单元组成两个段,它们的起始地址(基础地址)为:10000H和10080H,段地址为:1000H和1008H,大小都为 80H。

答案解析:从最小为 0H,最大 FFFFH 计算

七、段寄存器

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

八、CS 和 IP

CS 和 IP 是 8086 CPU 中两个最关键的寄存器,它们指示了 CPU 当前要读取指令的地址。CS 为代码段寄存器,IP 为指令指针寄存器 

8086 机中,任意时刻,CPU 将 CS:IP 指向的内容当作指令执行 

图 2.10 说明如下: 

        1. 8086CPU 当前状态:CS 中的内容为2000H,IP中的内容为0000H;

        2. 内存 20000H~20009H 单元存放着可执行的机器码: 

九、修改 CS、IP 指令

mov 指令不能用于设置 CS、IP 的值!!!

若想同时修改 CS、IP 的内容,可用形如“jmp 段地址:偏移地址”的指令完成,例如

jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU 将从 2AE33H 处读取指令。

jmp 3:0B16,执行后:CS0003H,IP=0B16H,CPU 将从 00B46H 处读取指令。  

若想仅修改 IP 的内容,可用形如 “jmp 某一合法寄存器” 的指令完成 

“jmp 某一合法寄存器” 指令的功能为:用寄存器中的值修改 IP 

答案解析:四次,jmp 前后各一次 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Adobe Bridge BR v14.0.3 安装教程 (多媒体文件组织管理工具)

Adobe系列软件安装目录 一、Adobe Photoshop PS 25.6.0 安装教程 (最流行的图像设计软件) 二、Adobe Media Encoder ME v24.3.0 安装教程 (视频和音频编码渲染工具) 三、Adobe Premiere Pro v24.3.0 安装教程 (领先的视频编辑软件) 四、Adobe After Effects AE v24.3.0 安装…

mysql手动新建数据库

点击号输入数据库名,端口号,密码,连接到sa数据库新建数据库,语言必须选择utf8mb4新建数据库用户给数据库用户设置对应权限给数据库用户勾选权限

登峰造极,北斗相伴——纪念人类首次登顶珠穆朗玛峰71周年

71年前的今天,1953年5月29日11时30分,人类实现了一个伟大的壮举:首次登上了珠穆朗玛峰,这座海拔8848.86米的世界最高峰。这是一次充满了艰辛、勇气和智慧的探险,也是一次改变了人类历史和文化的探险。 自那以后&#…

【全球展会招商】2025COSP深圳国际户外展乘风而至,启赴新程!

展会介绍 “2025-COSP深圳国际户外展览会”将于展出面积达40,000㎡,展出品牌60家包含户外露营展区、 车旅生活展区 、户外运动展区、水上运动展区 、 民宿旅居展区等热门产品专区,充分满足供应商及采购商、行业人士及运动爱好者的需求,打造展…

于AI对话 --如何更好的使用AI工具

文章目录 于AI对话 --如何更好的使用AI工具1、认识AI工具:2、对话原则:3、提问步骤:4、AI可以学习什么?5、提问技巧:1、提出假设性问题:2、(鼓励引导式提问)跨学科思考:举个例子: 3、…

删除的短信怎么恢复?专业与非专业方法的全面比较

在日常清理手机内存的过程中,我们可能会不小心删除短信。这些短信可能包含重要的数据和联系人信息。面对这种情况,许多人会感到困惑和无助。那么,删除的短信怎么恢复呢?本文将为您全面比较专业与非专业的方法,帮助您找…

扬腾创新golang2轮面试,二面相当硬核。我差点崩溃。。

一面 1、自我介绍,换工作的原因是什么? 2、物流开发平台是做什么?链路上都有哪些核心模块? 一个单下过来,分配给哪个3PL?有什么要求吗?是怎么设计的? 保证履约系统稳定性方面有做…

【大数据面试题】33 手写一个 Flink SQL 样例

一步一个脚印,一天一道大数据面试题 博主希望能够得到大家的点赞收,藏支持!非常感谢~ 点赞,收藏是情分,不点是本分。祝你身体健康,事事顺心! 我们来看看 Flink SQL大概流程和样例: …

基于双向长短时记忆网络的ECG心电信号识别(包括原始时域信号与时频域特征提取,MATLAB R2021B)

循环神经网络RNN,是一种链式结构,能够对连续输入的序列同时处理,且有不错的效果。RNN具有记忆功能且能够随时接受并处理输入数据,这得益于其特殊的连接方式,即神经元之间以一定的方向互相连接构成环,内部时…

如何使用宝塔面板搭建Tipask问答社区网站并发布公网远程访问

文章目录 前言1.Tipask网站搭建1.1 Tipask网站下载和安装1.2 Tipask网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3 Cpolar稳定隧道(本地设置) 3. 公网访问测试4.结语 前…

摸鱼大数据——Hive表操作——复杂类型

1、hvie的SerDe机制 其中ROW FORMAT是语法关键字,DELIMITED和SERDE二选其一。本次我们主要学习DELIMITED关键字相关知识点 如果使用delimited: 表示底层默认使用的Serde类:LazySimpleSerDe类来处理数据。 如果使用serde:表示指定其他的Serde类来处理数据,支持用户自…

【python 进阶】 绘图

1. 将多个柱状绘制在一个图中 import seaborn as sns import matplotlib.pyplot as plt import numpy as np import pandas as pd# 创建示例数据 categories [A, B, C, D, E] values1 np.random.randint(1, 10, sizelen(categories)) values2 np.random.randint(1, 10, siz…

前端Vue自定义轮播图组件的设计与实现

摘要 随着技术的发展,前端开发的复杂性日益增加。传统的整块应用开发方式在面对频繁的功能更新和修改时,往往导致整体逻辑的变动,从而增加了开发和维护的难度。为了应对这一挑战,组件化开发应运而生。本文将以Vue中的自定义轮播图…

GEE 利用增强的Sentinel-2像元物候特征精确提取水稻分布

题目:An enhanced pixel-based phenological feature for accurate paddy ricemapping with Sentinel-2 imagery in Google Earth Engine 期刊:ISPRS Journal of Photogrammetry and Remote Sensing(IF:14.9) 第一作者&#xff1a…

HiWoo Box工业4G网关

在飞速发展的工业4.0时代,数据已成为驱动工厂智能化、自动化的核心力量。而如何将这些散布在工厂各个角落的数据高效、安全地汇集起来,成为企业提升生产效率、降低运营成本的关键。今天,我们将为您介绍一款4G网关产品——HiWoo Box&#xff0…

揭秘SQL中的公用表表达式:数据查询的新宠儿

欢迎来到我的博客,代码的世界里,每一行都是一个故事 揭秘SQL中的公用表表达式:数据查询的新宠儿 前言公用表表述的概述非递归CTE的作用递归CTE的作用CTE性能优化 前言 你是否曾经为SQL查询的复杂性而困扰不已?尤其是那些读写层子…

服务器数据恢复—RAID5阵列崩溃如何恢复上层OA和oracle数据库的数据?

服务器数据恢复环境&故障: 某公司的一台服务器中的raid5磁盘阵列有两块磁盘先后掉线,服务器崩溃。故障服务器的操作系统为linux,操作系统部署了oa,数据库为oracle。oracle数据库已经不再对该oa系统提供后续支持,用…

图形学初识--矩阵和向量

文章目录 前言正文向量什么是向量?向量涉及哪些常见计算?1、取模2、归一化3、向量加法4、向量减法5、向量与标量乘6、向量点乘(内积)7、向量投影 向量有哪些基本应用? 矩阵什么是矩阵?矩阵涉及哪些常见计算…

一分钟教你学浪app视频怎么缓存

你是否在学浪app上苦苦寻找如何缓存视频的方法?你是否想快速、轻松地观看自己喜欢的视频内容?那么,让我们一起探索一分钟教你如何缓存学浪app视频的技巧吧! 学浪下载工具我已经打包好了,有需要的自己下载一下 学浪下…

【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析

🔥 个人主页:空白诗 🔥 热门专栏:【JavaScript】 文章目录 🌿 引言五、 Destructuring Assignment - 解构赋值,数据提取的艺术 🎨📌 数组解构📌 对象解构📌 特…