汇编语言笔记——8086&&寻址方式与指令系统
汇编语言中
- 语句不区分大小写,编译软件会自动识别语句
- 用户自定义的变量和符号必须区分大小写。
8086
1.寄存器
cpu在访问存储器时,必须指明:
- 段寄存器:所访问的存储单元属于哪个段
- 偏移量:相应存储单元与段起始地址(段基址)的距离
notes : 在程序设计中,可以把一个程序划分为任意个存储段。但只要在程序运行时,最多只有四个段,它们分别由CS,DS,ES和SS指定因为我们只有四个段寄存器呀ヾ(๑╹◡╹)ノ"
IP(指令指针)的内容不能直接被访问,不能直接用指令去读IP的值,也不能用指令为其赋值。但可通过某些指令的执行去修改IP的内容
2.存储器
存储器由若干个存储单元构成
存储单元的多少就表示存储器的容量大小
每个存储单元存放相同长度的二进制数
一个存储单元的长度一般为八位二进制数,即一个字节
每个存储单元有一个唯一的编号——地址
8086有二十根地址线,即它的存储器寻址能力为2^20,即一兆字节空间
任何两个相邻字节单元就构成一个字单元٩(๑❛ᴗ❛๑)
两者遵循低对低,高对高
寻址方式
一条指令由操作码和操作数构成
- 操作码:该指令应完成的具体操作。在汇编语言中使用特定的符号来表示,称为助记符。eg:MOV,PUSH,ADD等
- 操作数:该指令的操作对象。eg:加法操作里的加数
寻址方式:寻找指令中所需操作数的各种方法,即提供指令中操作数的存放信息的方式
指令系统:计算机所能执行的各种类型的指令集合
notes:目的数只能做源操作数,不能传送给段寄存器
无操作数指令
- 指令不需要操作数,eg:暂停指令HLT
- 在指令格式中,没有显示地指明操作数,但是隐含了操作数的存放地方,eg:指令PUSHF
notes:段寄存器CS只能做源操作数,不能做目的操作数
eg:MOV AX,CS
MOV CS,AX ✘
CS中存储的可是指令啊,所以不能轻易被改变~
notes :寄存器与存储单元的区分: [ ] 包括的为存储单元
notes:存储单元之间不能直接传送数据
notes:MOV指令不影响标志位
指令编码
- 一个存储单元逻辑地址表示方式 段基址:偏移量
- 段基址由某个段寄存器提供
- 偏移量表示该存储单元与段起始地址之间的距离,!也就是我们所说的有效地址EA
- 有效地址EA是位移量,基址,变值三个地址分量的组合结果,有CPU的执行单元EU计算出来
- 位移量:指令中直接给出的一个8位或16位数。一般源程序中以操作数名字(变量名或标号)的形式出现
- 基址:由基址寄存器BX或基址指针BP提供的内容
- 变址:由源变址寄存器SI或目的变址寄存器DI提供的内容
- 有效地址EA是位移量,基址,变值三个地址分量的组合结果,有CPU的执行单元EU计算出来
汇编语言笔记——8086&&寻址方式与指令系统的更多相关文章
- 汇编语言笔记v1.0
1.loop的用法 loop指令的格式是:loop标号,cpu执行loop指令的时候,要进行两步操作 1:(cx)=(cx)-1 2:判断cx中的值,不为零则转至标号处执行,如果为零,则向下执行 这里 ...
- 汇编语言笔记 CALL和RET指令
转载地址:http://www.cnblogs.com/dennisOne ☞模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程 ...
- 2017.11.12 web中JDBC 方式访问数据库的技术
JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...
- Linux内存寻址
我会尽力以最简洁清晰的思路来写这篇文章. 所谓内存寻址也就是从写在指令里的地址,转化为实际物理地址的过程.因为操作系统要兼顾许多东西,所以也就变得复杂. 逻辑地址 → 线性地址 → 物理地址 逻辑地址 ...
- Exynos 4412 Uboot源码解析
原文地址:http://www.cnblogs.com/jacklu/p/6226330.html Exynos 4412 Uboot的汇编代码就不贴了,没有的可以私信我. 这是我当时阅读代码时的思维 ...
- 7.11.3 Java简介
101Java简介 101Java简介及开发环境搭建 Java简介 编程语言简介 机器语言:纯粹的机器代码 机器语言是有0,1,0,1的二进制代码组成,可以有计算机直接执行.效率最高,但是通用性不强, ...
- x86汇编
● 实模式下32bit处理器,与8086兼容,例如loop 指令结束标志,只判断cx,而不是ecx ● IO端口 实际上是一些寄存器,在IO接口当中.向外设读写数据,要通过读写IO端口来实现. 有些计 ...
- iOS汇编系列-汇编入门
概述 汇编语言(Assembly Language)用符号代替了0和1,比机器语言更便于阅读和记忆. 但是同样汇编语言同样指令太多不便于记忆,就出现了高级语言.C\C++\Java\Swift等,更接 ...
- XCode汇编调试
开启Xcode汇编调试 选中Always Show Disassembly项. XCode -> Debug -> Debug Workflow -> Always Show Dis ...
- 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04
80X86中断系统 能够处理256个中断 用中断向量号0-255区别 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理 1.中断的分类 中断可以分为内部中断和外部中断. (1)内 ...
随机推荐
- C++最基本调用动态链接库dll方法的小结
针对当时初学动态链接.静态链接,有些文档整理一下发出来算是给自己和读者一个小结. 首先创建DLL 编辑头文件 dllmain.h 头文件: #pragma once #if defined(_DLL_ ...
- hgame2025-Crypto小记
hgame2025-Crypto小记 发现积压在文件夹有一段时间了.整理一下发出来. suprimeRSA task.py from Crypto.Util.number import * impor ...
- MATLAB R2024b 安装教程
MATLAB R2024b 安装教程 软件介绍 MATLAB 是由 "Matrix" 和 "Laboratory" 两个词组合而成,意为"矩阵工厂&q ...
- 带有可旋转摄像头的移动小车(urdf+rviz)
博客地址:https://www.cnblogs.com/zylyehuo/ 成果图 step1:新建工作空间 mkdir -p catkin_ws/src cd catkin_ws catkin_m ...
- SDF矩形(附圆角)公式推导
SDF矩形(附圆角)公式推导 矩形 一般情况下,我们会使用(top_left, top_bottom), (width, height)来定义一个矩形,但是对于SDF而言,使用(centerX, ce ...
- 记一个.NET AOT交叉编译时的坑
记一个.NET AOT交叉编译时的坑 背景: 使用.NET9开发的Avalonia项目需要部署到Linux-arm64 踩坑: 根据官方AOT交叉编译文档配置后执行打包 dotnet publish ...
- 「硬核实战」回调函数到底是个啥?一文带你从原理到实战彻底掌握C/C++回调函数
大家好,我是小康. 网上讲回调函数的文章不少,但大多浅尝辄止.缺少系统性,更别提实战场景和踩坑指南了.作为一个在生产环境中与回调函数打了多年交道的开发者,今天我想分享一些真正实用的经验,带你揭开回调函 ...
- B站插入外站链接地址(现已禁用)
问题描述: B站中插入链接时,无法插入外站链接,提示[请输入正确的站内链接地址]: 日常文章编写中,经常需要插入外站链接跳转,以便于用户快速定位 分析: B站专栏文章编辑使用的富文本编辑器,应该是支持 ...
- Eclipse 配置maven默认源及本地仓库
1.window->Preferences 2.Maven-> User Setting 3.全局配置Global Settings/用户配置 User Settings 修改为自己的配 ...
- File类使用详解
File类是java io包下代表与平台无关的文件和目录,也就是说,在程序中操作文件和目录都可以通过File类来完成.但是File不能访问文件内容本身,访问文件内容需要使用输入/输出流. File类的 ...