汇编语言 利用栈 将数据逆序存放
题目要求
利用栈,将程序中定义的数据逆序存放
数据如下:
0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
数据段DS 076A:0000存放的内容
交换前,栈顶指针ss:sp指向 076B:0020
执行一次循环后
执行两次循环后
执行三次循环后
执行四次循环后
第一个循环执行完毕后
疑问
为什么栈外面存有脏数据?那么下面这段对于栈的16个数据定义,为什么只有11个生效?
测试数据
如下图,初始化栈的时候也是难道不应该把16个ffff放进内存吗?为什么只有11个ffff放进去了?
注意到,link的时候出现warning: no stack segment 这个问题解答见下一篇博客。但是解决这个问题之后,上述问题还是没解决
运行效果
交换前
交换后
代码
;利用栈,将程序中定义的数据逆序存放assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data endsstack segmentdw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;多给了两个
stack endscode segment;分配地址
start: mov ax,datamov ds,ax ;数据段mov ax,stackmov ss,ax ;栈段;循环pushmov cx,8h ;循环8次mov bx,0h ;偏移地址s1: push ds:[bx]inc bxinc bxloop s1;循环popmov cx,8h ;循环8次mov bx,0h ;偏移地址s2: pop ds:[bx]inc bxinc bxloop s2mov ax,4c00hint 21h
code ends
end start
汇编语言 利用栈 将数据逆序存放相关推荐
- 一维数组的使用:逆序输出数据/:任意输入5个数据,存放于数组,编程实现将这5个数据逆序存放并输出
任意输入5个数据,存放于一维数组,编程实现将这5个数据逆序存放并输出 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int ma ...
- c语言利用栈将字符串逆序输出,【C语言】利用栈将数组中字符串逆序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include"stdio.h" #include"stdlib.h" #define STACK_INIT_S ...
- 贺利坚老师汇编课程29笔记:在代码段使用栈将程序定义的数据逆序
指路老师的博客 利用栈,将八个数逆序存放 思路:定义数据放在CS:0~CS:F八个字单元中,依次入栈再依次出栈 栈需要内存空间,程序中通过定义"空"数据来取得 ASSUME CS: ...
- 汇编语言:编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中
题目介绍 程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中. assume cs:code,ds:a,ss:ba segmentdw 1,2,3,4,5,6,7 ...
- PTA 数组 7-2 逆序存放数组中的数据,并输出指定元素
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按要求输出指定的数组元素. 输入格式: 在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开.第三行输 ...
- 最优解法——7-3 将数组中的数逆序存放 (20 分)——10行代码AC
励志用尽量少的代码做高效的表达. 题目描述 本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤1 ...
- c语言实现数组中的数据逆序排列
主函数里面已经定义了数组b及其中的9个数据,然后利用for循环将数组中的数据打印一遍,之后将数组的首地址和数组长度9传给函数fun,函数fun要实现的功能是将数组b中的数据前后置换顺序,即原来的1,2 ...
- C语言将数组中的值逆序存放
C语言将数组中的值逆序存放 #include<stdio.h> #define N 5 int main(){int a[N], i, temp;printf("请输入一个数组: ...
- 输入一个数组,逆序存放在另一个数组并输出
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p73 4.1.2 上级实训内容 [实训内容1]在1个数组中输入10个数,逆序存放在另一个数组中. #i ...
最新文章
- python连接mysql数据库并实现增删改查
- hdu 4521(线段树优化dp)
- 垃圾回收机制之标记清除算法
- 初识OSPF(三)——路由重分发及虚链路
- 元素(洛谷-P4570)
- leetcode —— 1004. 最大连续1的个数 III
- mongodb更新操作符
- java用JDBC连接数据库的方式
- 源码分析 Mybatis 的 foreach 为什么会出现性能问题
- 初窥Python(一)——使用pymongo连接MongoDB
- OpenSSL密码库算法笔记——第5.4章 椭圆曲线点的简介
- SmartView函数HypSetActiveConnection使用
- Beyond Compare代码对比工具国内镜像下载
- 企业仓库管理软件免费版要把处理好三个问题 利用凌云仓库管理软件免费版的智能补货功能可以快速的指定采购策略,这里面就需要及时了解每一张采购订单的执行情况,不但要防止遗漏订单情况的发生,更要防止情绪化采购
- 初识 PS CS6(八)___用内容识别比例缩放图像
- 持久化存储PV与PVC
- Android 上 Https 双向通信— 深入理解KeyManager 和 TrustManagers
- 搞定java面试系列--jvm3 gc垃圾回收
- Android/安卓 文本添加中划线、下划线的方法
- 修改DNS—出现一个意外,不能完成更改
热门文章
- 关于int main(int argc,char *argv[])
- nginx系列之八:使用upsync模块实现负载均衡
- 推荐一款cpp解析json工具--rapidjson
- SurfaceTexture
- EGLSurfaces 和 OpenGL ES
- 计算机网络 | IP协议相关技术与网络总结 :DNS、ICMP、DHCP、NAT/NAPT、通信流程
- 第四期直播分享预告-高薪offer指南
- RabbitMQ消息追踪之rabbitmq_tracing
- 一次流量不均衡问题的排查记录
- 进程和线程基础知识(已经是最详细的啦)