汇编寄存器(内存访问)基础知识之三---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是具有一个操作对象的指令
转载于:https://www.cnblogs.com/DonAndy/p/6090859.html
汇编寄存器(内存访问)基础知识之三---mov指令相关推荐
- mysql 访问寄存器_汇编寄存器(内存访问)基础知识之三---mov指令
1 内存中字的存储 一个字型数据占2个内存单元,内存里面一个内存单元一个字节(8位),高地址单位放高8位,低地址单元放低8位. 注意:0号是地址单元,1是高地址单元(上是低地址,下面是高地址) (1) ...
- 寄存器(内存访问)---汇编学习笔记
寄存器(内存访问) 序言 第二章,我们主要从CPU如何执行指令的角度讲解了8086CPU的逻辑结构.形成物理地址的方法.相关的寄存器以及一些指令. 这一章,我们从访问内存的角度继续学习几个寄存器. 3 ...
- 操作系统之内存管理:1、内存管理基础知识(指令工作原理、地址转化、程序运行过程)
1.内存管理基础知识(指令工作原理.地址转化.程序运行过程) 思维导图 什么是内存? 指令的工作原理 装入模块的三种实现 绝对装入 可重定位装入 动态重定位 程序的运行过程 链接的三种方式 思维导图 ...
- 3.1_ 1_ 内存的基础知识
3.1_ 1_ 内存的基础知识 文章目录 1.知识总览 2.什么是内存,有什么作用 进程的运行原理-指令 逻辑地址vs物理地址 从写程序到程序运行 装入模块装入内存 装入的三种方式--绝对装入 装入的 ...
- 计算机知识有什么用处,电脑内存作用是什么?一文带你了解电脑内存的基础知识...
电脑内存是电脑中至关重要的硬件之一,是不可或缺的硬件.电脑内存作用是什么?下面装机之家一文带你了解电脑内存的基础知识,来看看吧! 电脑内存作用是什么? 内存是其他设备与CPU进行沟通的桥梁,计算机中所 ...
- 小吴学汇编之第一章基础知识(1)
本人小白一枚,刚入职场,职业嵌入式开发.在学校学习Linux操作系统与ARM编程的一些基础知识.也不是什么985,211名校毕业,只是一个普通的本科生,在生活中为了那么一丝生存而努力着. 由于工作需要 ...
- 【RDMA】21. RDMA之内存地址基础知识
[RDMA]RDMA 学习资料总目录_bandaoyu的博客-CSDN博客SavirRDMA 分享1. RDMA概述https://blog.csdn.net/bandaoyu/article/det ...
- 汇编语言学习-寄存器(内存访问)
内存中字的存储: 两个16进制位是一个字节! 0号单元是低地址单元,1号单元是高地址单元. 0地址单元中存放的字节型数据是多少? 注意区别:"0地址单元"指向的就是:20H 0地址 ...
- 汇编语言:第三章 寄存器(内存访问)
3.1内存中字的存储 CPU中寄存器是16位的,可以用高低字节存储一个字,但是每个内存单元是8位的,只能存储一个字节, 所以内存中用相邻2个内存单元存储一个字的高低字节 如:20000数值(4E20H ...
最新文章
- nuxt 过滤 query 参数
- altium designer显示Analyzing GND,变得很卡
- fastjson对json操作
- CYQ.Data V5 MDataTable 专属篇介绍
- spring框架学习笔记3:使用注解代替配置文件
- elasticsearch -- head插件
- 基于 YOLOV3 和 OpenCV的目标检测
- asp.net mysql 读写分离_[ASP.net教程]SqlSugar ORM已经支持读写分离
- varnish4.0简介
- js与jquery对象的互转
- Ubuntu学习日记--Lesson3:vim编辑器使用和常用命令
- 不支持给定路径的格式_剑指offer_12_矩阵中的路径
- Vue 中播放帧动画(抽离方法)
- Postman的测试脚本(一)
- 【高效工作】Sublime Text 3 美化
- mysql lambda查询_SqlSugar常用查询实例-拉姆达表达式
- vue中控制台报错[WDS] Disconnected的解决办法
- 如何炒股,炒股的最简单方法
- OSWE 尾篇 考试的方法论
- 小散量化炒股记|手把手教你转换通达信公式,盘整后均线粘合突破