汇编寄存器(内存访问)基础知识之三---mov指令
1 内存中字的存储
一个字型数据占2个内存单元,内存里面一个内存单元一个字节(8位),高地址单位放高8位,低地址单元放低8位。
注意:0号是地址单元,1是高地址单元(上是低地址,下面是高地址)
(1) 2地址单元中存放的 字节型 数据是 12H
(2)2地址单元的存放法 字型 数据是 0012H (字型要2个字节)
(3) 1地址单元的存放的 字型 数据是 124EH
结论:
任何2个地址连续的内存单元,N号和N+1号,可以看成2个内存单元,
也可以看成一个地址为N的字单元中的高字节单元(n+1)和低位字节单元(n)
一个字型数据占2个内存单元,内存里面一个内存单元一个字节(8位),高地址单位放高8位,低地址单元放低8位。
cpu要读取一个内存单元的时候,要先给出这个内存单元的地址
DS寄存器(数据段寄存器),存放要访问的数据的段地址
mov指令的可以完成3种传送:
(1)数据直接送入寄存器
(2)一个寄存器的内容送入另一个寄存器
(3)可以将一个内存单元中的内容送入一个寄存器
mov指令的格式:
mov 寄存器名,内存单元地址
[...]表示一个内存单元,[....]中的0表示内存单元的偏移地址是0
但是内存单元的段地址是: cpu自动取ds中的数据为内存单元的段地址
mov ds,1000H 表示是错误的,
因为8086CPU不支持将数据直接送入段寄存器,
但是直接可以送入通用寄存器,这是硬件设计的问题
数据--》通用寄存器--》段寄存器
从哪个内存单元送到哪个寄存器中呢?
例如: 将数据从内存中单元送入寄存器(AH 是AX 的高8位,AL 是AX 的低8位)
mov bx,1000H
mov ds,bx
mov al,[0] //偏移地址0放到al里面 ,[ ... ]表示一个内存单元, [ ...]里的0表示内存单元的偏移地址是0
上面指令是从1000H(1000:0)中的读数据
思考:如何将数据从寄存器送入内存单元:
mov bx,1000H
mov ds,bx
mov [0],al
2 字的传送:
8086cpu是16位结构,有16根数据线,所以一次性可以传送16位的数据,也就是一次性传送一个字(2个字节,2个16进制=1个字节,2个字节=4个16进制)
比如:
mov bx,1000H
mov ds,bx
mov ax,[0] //1000:0 处的字 型数据(一个字=2个字节)传入
mov [0],cx //cx 中的16位数据送到1000:0处
一个字型数据占2个单元,内存里面一个内存单元一个字节(8位)
测试:
修改命令是 e 1000:0 23 11 22 66
写入命令( a CS:IP)
t执行命令
结果是
分析说明:
3: mov add , sub(减法)指令
mov指令的几个形式:
mov 寄存器,数据 比如 mov ax,8
mov 寄存器,寄存器 比如 mov ax,bx
mov 寄存器,内存单元 比如 mov ax,[0]
mov 内存单元,寄存器 比如 mov [0],ax
mov 段寄存,寄存器 比如 mov ds,ax
add和sub形式和mov指令类似,
说明:sub ax,ax和mov ax,0 功能一样;区别是 sub的机器码是2个字节,mov的机器码是3个字节
小结:
(1)字在内存中存储时,要在2个连续的内存单元(一个单元一个字节)来存放。字的低位字节存放在低地址单元中,高为字节存放在高地址单元中
(2)用mov指令访问内存单元,可以在mov指令中给出单元的偏移地址,此时,段地址默认在DS寄存器中
(3)[address]表示一个偏移地址为address的内存单元
(4)在内存和寄存器之间传递 字型 数据时,高地址单元和高8位寄存器,低地址单元和低8位寄存器想对应
(5)mov ,add,sub具有2个操作对象的指令,jmp是具有一个操作对象的指令
汇编寄存器(内存访问)基础知识之三---mov指令的更多相关文章
- C#基础知识之三
C#基础知识之三 1. 程序集间的继承:基类必须被声明为public.必须在project中包含对该基类的程序集引用. 2. 对其它程序集引用和添加对using指令的差别:前者是告诉编译器所需的类 ...
- 汇编中中括号[]作用以及lea和mov指令的区别
现在总结一下:其中牵扯到lea指令,mov指令,[] 一.lea指令:对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如:mov eax,2lea ebx, ...
- 【Unity基础知识之三】Unity Assets目录下的特殊文件夹名称
Unity3D的特殊目录名称 Unity预留了一些目录名称,这些目录有着特殊的含义.比较重要的有: Resources这个目录下的所有文件都会被打包到发布版本中,程序可以通过文件路径来访问它们.这 ...
- JVM内存划分基础知识
第一部分 JVM内存划分 目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbag ...
- PHP数据访问基础知识(20161028)
数据访问 动态页面的特征:能够读取数据库,网页的内容都是从数据库读出来的,而不是写死的 所有的程序归根结底都是对数据的增删改查 如何用服务器的PHP来操作服务器的MySQL,Apache则是用来管理, ...
- vue.js基础知识篇(2):指令详解
第三章:指令 1.语法 指令以v-打头,它的值限定为绑定表达式,它负责的是按照表达式的值应用某些行为到DOM上. 内部指令有v-show,v-else,v-model,v-repeat,v-for,v ...
- 【基础知识】CPU 指令执行的五个阶段,cpu就是用来执行指令的
IF(Instruction fetch) 取指:从 Instruction-Memory 中读取指令,并在下一个时钟上升沿到来时把指令送到 ID 级的指令缓冲器 id_ir 中.该级控制信号决定下一 ...
- Vue 2.0入门基础知识之内部指令
1.Vue.js介绍 当前前端三大主流框架:Angular.React.Vue.React前段时间由于许可证风波,使得Vue的热度蹭蹭地上升.另外,Vue友好的API文档更是一大特色.Vue.js是一 ...
- linux内存基础知识和相关调优方案
内存是计算机中重要的部件之中的一个.它是与CPU进行沟通的桥梁. 计算机中全部程序的执行都是在内存中进行的.因此内存的性能对计算机的影响很大.内存作用是用于临时存放CPU中的运算数据,以及与硬盘等外部 ...
随机推荐
- HDU 4162 Shape Number (最小表示法)
题意:给你一串n个数,求出循环来看一阶差的最小字典序:数字串看成一个顺时针的环,从某一点开始顺时针循环整个环,保证字典序最小就是答案 例如给你 2 1 3 就会得到(1-2+8 注意题意负数需要加8) ...
- 你必须知道的.NET之特性和属性(转)
1. 引言 attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口.因为.NET Framework中使用了大量的定制特性来完成代码约定 ...
- node.js整理 04网络操作
简介 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content- ...
- 移动终端app测试点总结
以下所有测试最后必须在真机上完整的执行1.安装.卸载测试 在真机上的以及通过91等第三方的安装与卸载 安装在手机上还是sd卡上 2.启动app测试3.升级测试 数字签名.升级覆盖安装.下载后手动覆盖安 ...
- 使用maven 如何生成源代码的jar包
http://hw1287789687.iteye.com/blog/1943157
- Spring3.0 demo (注解自动注入)
这个demo是maven工程,目录结构如下 pom.xml maven依赖 .....省略 <dependency> <groupId>org.springframework& ...
- BZOJ3189 : [Coci2011]Slika
通过离线将操作建树,即可得到最终存在的操作. 然后逆着操作的顺序,倒着进行染色,对于每行维护一个并查集即可. 时间复杂度$O(n(n+m))$. #include<cstdio> cons ...
- BZOJ4116 : [Wf2015]Tours
将边集划分成若干极大不相交集合,满足每个简单环都可以由某些集合相加得到,则答案就是这些集合大小的$\gcd$的约数. 对于一个简单环,上面的边一定不是桥边,而和它在一个集合的边肯定不在其他简单环上.因 ...
- (转)STORM启动与部署TOPOLOGY
STORM启动与部署TOPOLOGY 启动ZOOPKEEPER zkServer.sh start 启动NIMBUS storm nimbus & 启动SUPERVISOR storm sup ...
- BZOJ 3339 & 莫队+"所谓的暴力"
题意: 给一段数字序列,求一段区间内未出现的最小自然数. SOL: 框架显然用莫队.因为它兹瓷离线. 然而在统计上我打了线段树...用&维护的结点...400w的线段树...然后二分查找... ...