当前位置:网站首页>第三章 寄存器 (内存访问)
第三章 寄存器 (内存访问)
2022-06-12 08:42:00 【皮卡乒的皮卡乓】
这里写目录标题
3.1 内存中字的存储
在0地址处开始存放20000(4E20H):
- 注意:0号单元是低地址单元,1号单元是高地址单元。
3.2 DS和[address]
- 8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。
- 读取10000H单元的内容
mov bx,1000H
mov ds,bx
mov al,[0]
mov al,[0]
已知的mov指令可完成的三种传送功能:
- 将数据直接送入寄存器;
- 将一个寄存器中的内容送入另一个寄存器中。
- 除此之外,mov指令还可以将一个内存单元中的内容送入一个寄存器。
mov指令格式:
mov 寄存器名,内存单元地址
“[…]”表示一个内存单元,“[…]”中的0表示内存单元的偏移地址。
- 执行指令时,8086CPU自动取DS中的数据为内存单元的段地址。
8086CPU不支持直接将数据送入段寄存器。
- 如何将数据从寄存器送入内存单元?
- 将al中的数据送入内存单元10000H?
- 结论:
MOV BX,1000H
MOV DS,BX
MOV [0],AL
3.3 字的传送
- 8086CPU一次可以传送一个字
MOV BX,1000H
MOV DS,BX
MOV AX,[0]
MOV [0],CX ;cx中的16位数据送到1000:0处
3.4 mov、add、sub指令

3.5数据段
- 我们可以将一组长度为N(N≤64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。
- 比如我们用123B0H~123B9H这段空间来存放数据:
- 段地址:123BH
- 长度:10字节
3.1~3.5小节
- 字在内存中存储时,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。
- 用mov指令要访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。
- [address]表示一个偏移地址为address的内存单元。
- 在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应。
- mov、add、sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。
3.6 栈
- 后进先出
- 基本操作:入栈和出栈
3.7 CPU提供的栈机制
入栈:PUSH
出栈:POP
- 8086CPU的入栈和出栈操作都是以字为单位进行的。
- 8086CPU中,有两个寄存器:
- 段寄存器SS 存放栈顶的段地址
- 寄存器SP 存放栈顶的偏移地址
- 任意时刻,SS:SP指向栈顶元素。
3.8 栈顶超界的问题
- SS和SP只记录了栈顶的地址,只依靠SS和SP可以保证在入栈和出栈时找到栈顶。
- 当栈满的时候再使用PUSH指令入栈,栈空的时候再使用POP指令出栈,都将发生栈顶超届问题。
- 栈顶超界是危险的:because我们既然将一段空间安排为栈,那么在栈空间之外的空间很可能存放了具有其他用途的数据、代码等,这些数据、代码可能是我们自己的程序中的,也可能是别的程序中的。
栈和内存
- 栈空间当然也是内存空间的一部分,它只是一段可以以一种特殊方式进行访问的空间
3.9 push、pop指令
push 寄存器:将一个寄存器中的数据入栈
pop 寄存器:出栈,用一个寄存器接收出栈的数据
push 段寄存器:将一个段寄存器中的数据入栈
pop 段寄存器:出栈,用一个段寄存器接收出栈的数据
push 内存单元:将一个内存单元处的字入栈(栈操作都是以字为单位)
pop 内存单元:出栈,用一个内存字单元接收出栈的数据
指令执行时,CPU要指定内存单元的地址,可以在push、pop指令中给出内存单元的偏移地址,段地址在指令执行时,CPU从ds中取得。
3.10 栈段
- 我们可以将长度为N(N<=64K)的一组地址连续、起始地址为16的倍数的内存单元,当作栈来用,从而定义了一个栈段。
- 将一段内存当作栈段,仅仅是我们在编程时的一种安排,CPU并不会由于这种安排,就执行push、pop等栈操作指令时就自动地将我们定义的栈段当 作栈空间来访问。
边栏推荐
- js实现页面加载后再刷新一次
- 网站Colab与Kaggle
- 安科瑞消防应急照明和疏散指示系统
- [advanced pointer 2] array parameter transfer & pointer parameter transfer & function pointer & function pointer array & callback function
- 了结非对称密钥
- 《MATLAB 神经网络43个案例分析》:第8章 GRNN网络的预测----基于广义回归神经网络的货运量预测
- Loading circling effect during loading
- Close asymmetric key
- [open source project] easycmd command graphical software
- Background location case 1
猜你喜欢

Where does the driving force of MES system come from? What problems should be paid attention to in model selection?

Centos8 installing MySQL 8.0 (upper)

Regularization to limit the number of digits after the decimal point of an input number

What is the quality traceability function of MES system pursuing?

Background attribute compound writing

What is the MES system? What is the operation process of MES system?

Handling abnormal data

了结非对称密钥

Hands on learning and deep learning -- Realization of linear regression from scratch

About weights exercise
随机推荐
Judge whether the object is empty
Hands on learning and deep learning -- simple implementation of linear regression
Background location case II
Shell基本语法--数组
Shell basic syntax -- arithmetic operation
Website colab and kaggle
Regular expressions in JS
Close asymmetric key
Project sorting of niuke.com
Knee joint
Centso8 installing mysql8.0 (Part 2)
报错:清除网站内搜索框中的历史记录?
Knee joint
2022.6.9-----leetcode. four hundred and ninety-seven
Lock mechanism in MySQL
[compilation principle] understand BNF
2022.6.11-----leetcode.926
处理异常数据
Hands on learning and deep learning -- a brief introduction to softmax regression
Engineers learn music theory (II) scale and tendency