菜鸟学汇编005 栈(Stack) 和 段寄存器SS、SP
菜鸟学汇编005 栈(Stack) 和 段寄存器SS、SP
1. 栈有2个基本操作:入栈、出栈
入栈就是将一个新的元素放到栈顶;出栈就是从栈顶取出一个元素;
2. 栈顶的元素总是最后入栈,最先出栈;栈的这种操作规则被称为:LIFO(Last In First Out) 后进先出。
3. 8086CPU提供入栈和出栈的指令,最基本的两个是 PUSH(入栈) 和 POP(出栈)
push ax 表示将AX寄存器的内容送入栈中, pop ax 表示从栈顶取出数据送入AX寄存器中。
8086CPU的入栈和出栈操作都是以字(word)为单位的。
4. 8086CPU中,段寄存器SS:存放栈顶段地址,段寄存器SP: 存放栈顶的偏移地址。
5. 任意时刻:SS:SP 指向栈顶元素。
6. 8086CPU不保证我们对栈的操作是否会越界。
7. 栈顶是低地址单元, 栈底是高地址单元。
8. push 指令的执行步骤:
(1) SP = SP - 2 (偏移地址减少,即往低地址处偏移[栈顶方向])
(2) 向SS:SP指向的字单元中送入数据
9. pop 指令的执行步骤:
(1) 从SS:SP指向的字单元中读取数据
(2) SP = SP + 2 (偏移地址增加,即往高地址处偏移[栈低方向])
10. 8086CPU只记录栈顶,栈空间的大小要我们自己管理。
11. 例子:
如果将10000H ~ 1000FH 这段空间作为栈,初始状态栈是空的,此时SS=1000H,SP = ?
解答:
这个可以图解。
首先,低地址单元在栈顶方向,高地址单元在栈低方向 。如下图所示。
低地址
10000H
。
。
。
1000DH
1000EH
1000FH
-------------------
10010H <-------------SS:SP指向栈空间最高地址单元的下一个单元。
假设 AX = 2266H, 因为8086CPU的入栈和出栈操作都是以字为单位的 。所以,结果看下图示。
10000H
。
。
。
1000DH
1000EH 66H (AL) <-------------SS:SP
1000FH 22H (AH)
--------------------------------------------
10010H
以10000H ~ 1000FH这段空间为栈空间,SS=1000H,栈空间大小为16个字节。
当初始状态栈为空时,SP = 0010H。
12. 编程:
(1) 将10000H~1000FH这段空间作为栈,初始状态栈是空的。
(2) 设置AX寄存器 = 001AH, BX寄存器 = 001BH。
(3) 将AX、BX寄存器中的数据入栈。
(4) 将AX、BX寄存器清零。
(5) 从栈中恢复AX、BX寄存器原来的内容。
- mov ax, 1000H
- mov ss, ax
- mov sp, 0010H
- mov ax, 001AH
- mov bx, 001BH
- push ax
- push bx
- mov ax, 0 ; 也可用 sub ax, ax
- mov bx, 0 ; 也可用 sub bx, bx
- ; sub ax, ax的机器码为2个字节
- ; mov ax, 0的机器码为3个字节
- pop bx
- pop ax
13. 编程
(1) 将10000H~1000FH这段空间当作栈,初始状态栈是空的。
(2) 设置AX寄存器 = 001AH, BX寄存器 = 001BH。
(3) 利用栈,交换AX、BX寄存器中的数据。
- mov ax, 1000H
- mov ss, ax
- mov sp, 0010H
- mov ax, 001AH
- mov bx, 001BH
- push ax
- push bx
- pop ax
- pop bx
14. 编程
如果要在10000H入写入字型数据2266H,可以使用以下代码完成:
- mov ax, 1000H
- mov ds, ax
- mov ax, 2266H
- mov [0], ax
要求:不能使用“ mov 内存单元, 寄存器"这类指令,完成上面的功能。
- mov ax, 1000H
- mov ss, ax
- mov sp, 2
- mov ax, 2266H
- push ax
- 上一篇:菜鸟学汇编004 DS寄存器
- 下一篇:菜鸟学汇编006 第一个汇编程序
- 1楼 plysan 2010-12-18 20:19发表 [回复]
-
楼主,如果我没理解错的话,14. 编程 中的第一段代码的第二行应该是 mov ss, ax 吧。。。
- Re: ilysony 2010-12-18 22:01发表 [回复]
- 回复 plysan:两种写法。
菜鸟学汇编005 栈(Stack) 和 段寄存器SS、SP相关推荐
- 栈Stack和段寄存器SS,SP(学习汇编)
1. 栈有2个基本操作:入栈.出栈 2. 栈顶的元素总是最后入栈,最先出栈:后进先出. 3. 8086CPU提供入栈和出栈的指令,最基本的两个是 PUSH(入栈) 和 POP(出栈) push ax ...
- 看动画学算法之:栈stack
文章目录 简介 栈的构成 栈的实现 使用数组来实现栈 使用动态数组来实现栈 使用链表来实现 简介 栈应该是一种非常简单并且非常有用的数据结构了.栈的特点就是先进后出FILO或者后进先出LIFO. 实际 ...
- bss段,data段、text段、堆heap和栈stack
bss段,data段.text段.堆heap和栈stack bss段 data段 text段 堆(heap) 栈(stack) 例子 在C的学习中,你总避免不了对各类数据的存储区域学习归纳总结,简单的 ...
- 汇编学习笔记1 通用寄存器和段寄存器详解
一.通用寄存器 寄存器 编号(二进制) 编号(十进制) 64位 32位 16位 8位 累加寄存器 RAX EAX AX AL 000 0 计数寄存器 RCX ECX CX ...
- 汇编的8种寻址方式,以及2个默认段寄存器
16位CPU所含有的寄存器有(见图2.1中16位寄存器部分): 4个数据寄存器(AX.BX.CX和DX) 2个变址和指针寄存器(SI和DI) 2个指针寄存器(SP和BP) ,32位CPU增加2个16位 ...
- 8086汇编学习之DS寄存器、SS/SP寄存器
相关博客:8086汇编基础知识.通用寄存器.CS/IP寄存器与Debug的使用 一.DS寄存器 一个8086CPU寄存器均是16位的,而数据类型有以下两种: 1Byte = 8bit (字节型数据) ...
- 通用寄存器介绍和段寄存器的介绍
以下内容来自百度百科: (提示:点击蓝色的字,可以进入百度百科看相关内容) 通用寄存器 目录 简介 主要用途 相关信息 编辑本段简介 通用寄存器 通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算, ...
- IA-32寄存器(通用寄存器、EFLAGS寄存器、指令指针寄存器、段寄存器)
文章目录 一.通用寄存器(GPR) 二.EFLAGS寄存器(标志寄存器) 三.指令指针寄存器(EIP) 四.段寄存器(Segment Register) 通用寄存器(General Purpose R ...
- 段寄存器和8种地址寻址方式
段寄存器是因为对内存的分段管理而设置的. 16位CPU有四个段寄存器,其程序可同时访问四个不同含义的段,引用方面有如下规定: 1. 取命令:段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的 ...
最新文章
- Asynctask源码分析
- matlab函数 size()函数和waterfal()l函数,三维图形,矩阵
- 吴恩达邀请9位AI大牛畅想2020:李开复看好医疗教育,LeCun强调自监督学习
- CSS属性选择器和部分伪类
- C语言 二进制文件读取和写入
- js计算器代码加减乘除_如何用jQuery做一个简易版计算器
- linux git指令不存在,一些常用的Git命令
- excel2003 java_java 读取 excel 2003 或 excel 2007
- c++代码打印爱心图(适用初学者)
- wx僵尸粉检测,真实好友1.0(无障碍检测好友状态)
- 图像加密算法毕业论文【含代码】
- java三三剩二五五剩三,大年三十彩灯悬,彩灯齐明光灿灿,三三数时能数尽,五五数时剩一盏,七七数时刚刚好,八八数时还缺三,...
- session是什么
- HTML正方体滚动特效
- 计算机网络谢希仁(1)
- 搭建一个点歌QQ机器人,另外还能看美女
- 2012中国世界十大科技进展(转载)
- cmgr linux命令,linux下利用GPRS模块发短信、打电话
- 异星工厂 自动机器人_异星工厂建设机器人怎么用 异星工厂建设机器人机制介绍-游侠网...
- 如何准确测试相位噪声
热门文章
- Android 从底层实现让应用杀不死(1)
- GitBook制作电子书
- 如何有效控制项目范围?
- gear s3刷android wear,【干货】三星Gear S3/Gear S3 classic 智能手表刷机教程
- C语言调用函数一次就自动结束了 不执行下面的程序 帮忙看看把
- EasyPoi实现excel文件导入导出
- 80×60长40米的地笼_住宅走廊宽1米2,长10米,不想打波线,用80公分的砖怎么铺平均60,还是80十40,上有...
- tplink 703N拆机接ttl
- banner设圆角_C4D和PS如何制作banner
- 【网站搭建】腾讯云域名服务器购买域名解析及宝塔安装