在代码段中安排自己定义的数据
1、编程计算下面八个字型数据之和,将结果存放在ax寄存器中
1,2,3,4,5,6,7,8
通过前面的学习:将这一段数据安排在一段连续的内存中——>通过Loop指令,用add ax, ds:[bx] add bx,2 ——>设置内存地址,把ds:[bx]指向“1”的位置
以前是通过e指令去修改一段内存(不安全)——》如何让系统分配给我们内存?(加载的过程其实就是系统分配给程序内存的过程)——》只要把数据写在源文件就行了
程序取得所需空间的方法有两种:一是在加载程序的时候为程序分配,再就是程序在执行过程中向系统申请。(不讨论第二种方法)
定义数据:dw(define word)word表示字型数据 【用-d cs:0查看会发现是字型数据】
如何不用start:
在dw上一行写jmp begin
在mov bx,3左边写begin
assume cs:code
code segmentjmp begindw 1,2,3,4,5,6,7,8 ;定义八个字型数据 ;上一行是我们自己定义的数据,不是我们自己定义的指令;(start伪指令可以告诉编译器从哪开始)begin: mov bx,3 ;初始值mov ax,0 ;偏移地址mov cx,8 ;循环次数addNumber: add ax,cs:[bx]add bx,2 ;计算的是字型数据,所以加2loop addNumbermov ax,4c00Hint 21h
code ends
end start
2、编程计算以下八个数据的和,结果存在ax寄存器中
0123h 0456h 0789h 0abch 0defh 0fed 0cbah 0987h
理解:
程序 中的指令就是要对这八个数据进行累加,可这八个数据在哪?由于他们在代码段中,程序在运行的时候cs中存放代码段的段地址,所以可以从CS中得到他们的段地址。他们的偏移地址是多少呢?因为用dw定义的数据处于代码段的最开始,所以偏移地址为0,这八个数据就在代码段的偏移0、2、4、6、8、A 、C、 E处。程序运行时,他们的地址就是cs:0、cs:2、cs:4、cs:6,cs:8、cs:A、cs:C,cs:E。
程序中用bx存放加2递增的偏移地址,用循环来进行累加。在循环开始前,设置bx=0,cs:bx指向第一个数据所在的字单元。
上面的程序在运行时可能会出问题:因为程序入口处不是我们所希望执行的指令
如何让这个程序在编译和链接后再系统中直接运行呢?我们可以在源程序中指明程序的入口所在。
如下:
在代码段中安排自己定义的数据相关推荐
- 在代码段中安排自己定义的栈空间
如何定义自己的栈(通过系统分配的内存) 完成下面的程序,利用栈.将程序中定义的数据逆序存放. 我们之前是如何安排自己的栈? 设置SS:SP(SS为栈顶的段地址存放处,栈顶偏移地址存放在SP) 我们如何 ...
- 汇编: 在代码中安排自己定义的数据,栈空间
assume cs:codecode segmentdw 1,2,3,4,5,6,7,8 ; 我们自定义的数据 不是我们自定义的指令; d:define w:wordstart: mov bx,0mo ...
- 16位汇编 在代码段中使用栈
在代码段中使用栈, 置换 0123 0456 0789 0abc 0def 0fed 0cba 0987 0987 0cba 0fed 0def 0abc 0789 ...
- 16位汇编 在代码段中使用数据
在代码段中使用数据, 计算0123+0456+0789+0abc+0def+fed+cba+0987 assume cs:code code segmentdw 0123h,0456h,0789h, ...
- 第000讲-第006讲 从1000个代码案例中学习人工智能和大数据实战
王家林大神人工智能大数据新课: From Zero to Hero – 从1000个代码案例中学习人工智能和大数据 举例来说,我们在课程中有个人工智能项目,该项目使用循环神经网络的深度学习技术例如GR ...
- python分号_为什么在此python代码段中允许使用分号?
HUX布斯 http://docs.python.org/reference/compound_stmts.html复合语句由一个或多个"子句"组成.子句由标题和"套件& ...
- 谈谈你对同步代码块中同步监视器和共享数据的理解及各自要求。
同步监视器:俗称锁. ①任何一个类的对象都可以充当锁. ②多个线程共用同一把锁. 共享数据:多个线程共同操作的数据,即为共享数据.需要使用同步机制将操作共享数据的代码包起来.不能包多了,也不能包少了.
- Linux中的内存段(BSS、数据段、代码段、堆、栈)
在Linux 系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到以下哪个内存段中? BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量 ...
- sql azure 语法_Azure Data Studio中SQL代码段
sql azure 语法 This article will fully cover the code snippet SQL developer productivity feature in Az ...
最新文章
- js实现-限时抢购倒计时间表
- 享元模式(FlyWeight)
- Docker部署OpenProject
- 【渝粤题库】陕西师范大学165209 组织职业生涯管理 作业(专升本)
- 仿IOS应用APP下载页源码
- 伪静态php空间,Win空间上如何实现WordPress博客的完美伪静态
- 【UWP通用应用开发】控件、应用栏
- 如何解决php 生成验证码图片不显示问题
- Unity3D之NGUI基础7:UI动态加载
- 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options...
- hdu 4928 Series 2 (优化+模拟)
- 北斗导航 | RAIM算法流程图
- 几款不错的整站下载工具
- linux防火墙查看状态firewall、iptable
- strick-footer 粘边布局
- switch初始化说服务器维护中,switch国行怎么初始化-switch国行初始化教程
- 怎么把ppt文字大小设置一致_51页PPT告诉你,大神都在用的这些神级插件,到底有多赞?...
- Java面试——消息队列
- 【MMDblender】MMD烘焙后导入blender贴图颜色错乱问题
- GateWay入门Demo