汇编语言笔记——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)内 ...
随机推荐
- 一文搞懂 APP 算法备案
今天来给大家好好科普一下超重要的 APP 算法备案,这可是和我们日常使用 APP 以及 APP 运营都息息相关的知识点哦! 什么是算法备案 简单来讲,算法备案就相当于 APP 运营者要把自家 APP ...
- 批处理脚本(.bat)实现实时监测文件夹并执行命令 [假设有新文件则拷贝到远程文件夹内]
想到一个情景.程序实时监测文件夹情况,如果有新文件进入,分析其文件名,然后如果满足预设条件,则做相应操作.比如扫描仪扫描了文件,会将新文件保存进特定文件夹内,可以使用该程序来做处理. 在Windows ...
- 异步编程——CompletableFuture详解
Future JDK5 新增了Future接口,用于描述一个异步计算的结果. 虽然 Future 以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不方便,我们必须使用Future.g ...
- SQL注入之WAF绕过注入
绕过WAF: WAF防御原理: 简单来说waf就是解析http请求,检测http请求中的参数是否存在恶意的攻击行为,如果请求中的参数和waf中的规则库所匹配,那么waf则判断此条请求为攻击行为并进行阻 ...
- 分享一个我遇到过的“量子力学”级别的BUG。
你好呀,我是歪歪. 前几天在网上冲浪的时候,看到知乎上的这个话题: 一瞬间,一次历史悠久但是记忆深刻的代码调试经历,"刷"的一下,就在我的脑海中蹦出来了. 虽然最终定位到的原因令人 ...
- 表访问方法:PostgreSQL 中数据更新的处理方式
作者:Cary 前言 本文将详细探讨 PostgreSQL 如何处理更新操作.在 PostgreSQL 中,成功的更新可以被视为"插入一条新记录",同时"标记旧记录为不可 ...
- 【VMware VCF】启动和关闭 VMware Cloud Foundation 环境的正确顺序。
为了避免出现数据丢失以及保证 SDDC 组件的正常运行,启动和关闭 VMware Cloud Foundation 环境中的组件应该遵循特定的顺序.比如,在关闭管理工作负载域之前,应该先关闭 VI 工 ...
- Coupled Iterative Refinement for 6D Multi-Object Pose Estimation论文精读
目录 Coupled Iterative Refinement for 6D Multi-Object Pose Estimation论文精读 论文介绍 Abstract Introduction Re ...
- 【教程】C语言入门
C语言入门 首先导入头文件 #include<stdio.h> 接下来编写主函数 #include<stdio.h> int main() { retuen 0; } 最后,在 ...
- 【Unity3D】把相机视角放置到编辑器当前位置视角
[Unity3D]把相机视角放置到编辑器当前位置视角 零.问题 Unity开发过程中,经常要将相机调整值对应位置,但是通过数值来调有时候不怎么方便,有什么方法可以快速让相机的视角与编辑器当前视角同步呢 ...
