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指向第一个数据所在的字单元。

上面的程序在运行时可能会出问题:因为程序入口处不是我们所希望执行的指令
如何让这个程序在编译和链接后再系统中直接运行呢?我们可以在源程序中指明程序的入口所在。
如下:

在代码段中安排自己定义的数据相关推荐

  1. 在代码段中安排自己定义的栈空间

    如何定义自己的栈(通过系统分配的内存) 完成下面的程序,利用栈.将程序中定义的数据逆序存放. 我们之前是如何安排自己的栈? 设置SS:SP(SS为栈顶的段地址存放处,栈顶偏移地址存放在SP) 我们如何 ...

  2. 汇编: 在代码中安排自己定义的数据,栈空间

    assume cs:codecode segmentdw 1,2,3,4,5,6,7,8 ; 我们自定义的数据 不是我们自定义的指令; d:define w:wordstart: mov bx,0mo ...

  3. 16位汇编 在代码段中使用栈

    在代码段中使用栈, 置换 0123  0456  0789  0abc  0def  0fed    0cba  0987 0987  0cba  0fed   0def   0abc  0789   ...

  4. 16位汇编 在代码段中使用数据

    在代码段中使用数据,  计算0123+0456+0789+0abc+0def+fed+cba+0987 assume cs:code code segmentdw 0123h,0456h,0789h, ...

  5. 第000讲-第006讲 从1000个代码案例中学习人工智能和大数据实战

    王家林大神人工智能大数据新课: From Zero to Hero – 从1000个代码案例中学习人工智能和大数据 举例来说,我们在课程中有个人工智能项目,该项目使用循环神经网络的深度学习技术例如GR ...

  6. python分号_为什么在此python代码段中允许使用分号?

    HUX布斯 http://docs.python.org/reference/compound_stmts.html复合语句由一个或多个"子句"组成.子句由标题和"套件& ...

  7. 谈谈你对同步代码块中同步监视器和共享数据的理解及各自要求。

    同步监视器:俗称锁. ①任何一个类的对象都可以充当锁. ②多个线程共用同一把锁. 共享数据:多个线程共同操作的数据,即为共享数据.需要使用同步机制将操作共享数据的代码包起来.不能包多了,也不能包少了.

  8. Linux中的内存段(BSS、数据段、代码段、堆、栈)

    在Linux 系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到以下哪个内存段中? BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量 ...

  9. sql azure 语法_Azure Data Studio中SQL代码段

    sql azure 语法 This article will fully cover the code snippet SQL developer productivity feature in Az ...

最新文章

  1. js实现-限时抢购倒计时间表
  2. 享元模式(FlyWeight)
  3. Docker部署OpenProject
  4. 【渝粤题库】陕西师范大学165209 组织职业生涯管理 作业(专升本)
  5. 仿IOS应用APP下载页源码
  6. 伪静态php空间,Win空间上如何实现WordPress博客的完美伪静态
  7. 【UWP通用应用开发】控件、应用栏
  8. 如何解决php 生成验证码图片不显示问题
  9. Unity3D之NGUI基础7:UI动态加载
  10. 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options...
  11. hdu 4928 Series 2 (优化+模拟)
  12. 北斗导航 | RAIM算法流程图
  13. 几款不错的整站下载工具
  14. linux防火墙查看状态firewall、iptable
  15. strick-footer 粘边布局
  16. switch初始化说服务器维护中,switch国行怎么初始化-switch国行初始化教程
  17. 怎么把ppt文字大小设置一致_51页PPT告诉你,大神都在用的这些神级插件,到底有多赞?...
  18. Java面试——消息队列
  19. 【MMDblender】MMD烘焙后导入blender贴图颜色错乱问题
  20. GateWay入门Demo

热门文章

  1. nyoj 208 Supermarket(贪心)
  2. JSP简单练习-上传文件
  3. Python多线程详解
  4. CS224n笔记二:word2vec
  5. python+selenium七:下拉框、选项框、select用法
  6. [转]避免PHP-FPM内存泄漏导致内存耗尽
  7. PHP用CURL伪造IP和来源
  8. Can't connect to MySQL server on 'localhost' 10061
  9. 计算机网络(网络层,运输层和应用层的一些tips)
  10. Go 语言 练习 聊天室 01