三--寄存器(内存访问)
2022/8/22 5:23:58
本文主要是介绍三--寄存器(内存访问),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
3.1内存中字的存储
内存单元是字节单元(即一个单元存一个字节)
一个字用两个地址连续的单元存放,低位字节存在低地址,高位字节存在高地址
字单元:存放一个字型数据(16位)的内存单元,由两个地址连续内存单元组成
将起始地址为N的字单元简称为N地址字单元
3.2DS和[address]
ds:通常用来存放要访问的数据的段地址
[...]表示一个内存单元,"..."是偏移地址,cpu自动取ds中的数据作为内存单元的段地址
如何用mov指令从10000H中读取数据:先将段地址1000H放入ds,然后用mov al,[0]
但8086不支持将数据直接送入段寄存器,所以:
mov bx,1000H
mov ds,bx
3.3字的传送
8086有16根数据线,在mov指令中给出16位的寄存器就能进行字的传送
3.4mov、add、sub指令
mov指令可有以下形式:
mov 寄存器,数据 如:mov ax,8
mov 寄存器,寄存器 如:mov ax,bx
mov 寄存器,内存单元 如:mov ax,[0]
mov 内存单元,寄存器 如:mov [0],ax
mov 段寄存器,寄存器 如:mov ds,ax
mov 寄存器,段寄存器 如:mov ax,ds
mov 内存单元,段寄存器 如:mov [0],ds
mov 段寄存器,内存单元 如:mov ds,[0]
add、sub同mov
3.5数据段
将一段内存当作数据段,是我们在编程时的一种安排,即用ds存放数据段的段地址
3.6栈
栈:后进先出(LIFO:last in first out)
3.7cpu提供的栈机制
push ax将AX中的数据入栈
pop ax从栈顶取出数据送入AX
8086的入栈和出栈以字为单位
SS:栈顶的段地址,SP:栈顶的偏移地址 (SS是段寄存器,不能直接送入数据,但SP可以)
任意时刻,SS:SP指向栈顶元素
push ax:
sp = sp - 2,SS:SP指向当前栈顶前面的单元
将ax中的内容送入SS:SP指向的内存单元
(入栈时,栈顶从高地址向低地址方向增长)
pop ax:
将SS:SP指向的内存单元处数据送入ax
SP=SP+2
3.8栈顶超界的问题
8086不保证我们对栈的操作不会超界,他只知道栈顶在何处,而不知道我们安排的栈空间有多大
我们要自己考虑栈超界的问题
3.9push、pop指令
push 寄存器
pop 寄存器
push 段寄存器
pop 段寄存器
push 内存单元
pop 内存单元
可只给出内存单元的偏移地址,段地址从ds获得
3.10栈段
也是我们在编程时的一种安排
如果将10000H~1FFFFH当作栈段,栈空时,SP=?
当只有一个元素时,SS=1000H,SP=FFFEH,此元素出栈,SP=SP+2,所以SP=0
栈最底部字单元的地址为1000:FFFE,栈空时,SS:SP指向最底部单元下面的单元,即最底部+2,即SP=0000H
一个栈段最大可以设为多少?
从栈空时SP=0,一直压栈,直到栈满时SP=0,再次压栈,栈顶将环绕,覆盖原来内容,所以最大0~FFFFH,64KB
这篇关于三--寄存器(内存访问)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞