博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三章寄存器(内存访问)
阅读量:5140 次
发布时间:2019-06-13

本文共 1087 字,大约阅读时间需要 3 分钟。

内存中字的存储

在cpu中,用16位来存储一个字,高8位存放高字节,低8位存放低位字节。在内存中时,由于内存单元是字节单元,刚一个字要用2个地址连续的内存单元来存放,字的低位字节存在低地址单元。

字单元--存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成,高地址内存单元中存放字型数据的高字节,低地址内存单元存放单元中存放字型数据的低位字节。

DS和[address]

CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址。

内存单元由2部分组成。8086CPU中,内存地址由以下组成。

1:段地址

2:偏移地址

8086CPU中,有一个DS寄存器地址,通常用来存放数据的段地址。

比如我们要读取10000H的单元内容,可以用如下的程序段进行。

 

mov bx,1000H

mov ds,bx

mov al,[0]

 

[...] 表示一个内存单元。[...]中的0表示内存单元的便宜地址。我们知道,只有偏移地址是不能定位一个内存单元的。那么内存单元的段地址是多少呢? 执行指令时,8086CPU会自动取DS中的数据为内存单元的段地址。

 mov、add、sub指令

mov指令有以下几种形式:

mov 寄存器,数据

mov 寄存器,寄存器

mov 寄存器,内存单元

mov 内存单元,寄存器

mov 内存单元,段寄存器

mov 段寄存器,寄存器

mov 寄存器,段寄存器

数据段

1、字在内存中存储时,要用两个连续的内存单元来存放,字的低字节放在低地址单元,高字节放在高地址单元

2、用mov指令访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中

3、[address]表示一个偏移地址为address的内存单元

4、在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器,低地址单元和低8位寄存器相对应

5、mov、sub、add是具有两个操作对象的指令,jmp是具有一个操作对象的指令

push、pop指令

push 寄存器 ;将一个寄存器中的数据入栈

pop 寄存器 ;出栈,用一个寄存器接收出栈的数据
push 段寄存器 ;将一个段寄存器中的数据入栈
pop 段寄存器 ;出栈,用一个段寄存器接收出栈的数据
push和pop指令也可以在内存单元和内存单元之间传送数据,还可以:
push 内存单元 ;将一个内存单元处的字入栈(栈的操作都是以字为单位)
pop 内存单元 ;出栈,用一个内存字单元接收出栈的数据

转载于:https://www.cnblogs.com/nzy699/p/9944207.html

你可能感兴趣的文章
(JQuery)当页面常见时间无操作的时候,跳转到登录页面
查看>>
Autoware 培训笔记 No. 3——录制航迹点
查看>>
字符流
查看>>
Java.util.Properties
查看>>
剑指offer-数组中只出现一次的数字
查看>>
关于SOA架构设计的案例分析
查看>>
垂直打击之JVM剖析
查看>>
H5移动端,ios从后台返回到app,页面会白一下
查看>>
gradle 插件 get 不到的问题
查看>>
Luogu 4317 花神的数论题
查看>>
JDBC基础
查看>>
排序算法之冒泡排序(Bubble Sort)
查看>>
Lock与synchronized 的区别
查看>>
对前台传的json进行解析
查看>>
gulp构建工具 主要说 gulp-livereload的插件
查看>>
UVA 11077 Find the Permutations 递推置换
查看>>
项目管理 - PM、 SRS、SOW简介及范例
查看>>
Socket 编程-------------------笔记
查看>>
【bzoj4443】【[Scoi2015]小凸玩矩阵】二分+二分图最大匹配
查看>>
PHP设计模式系列 - 策略模式
查看>>