- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 包含多个段的程序 章节分布 6.1 在代码段中使用数据 6.2 在代码段中使用栈 6.3 将数据、代码、栈放入不同的段 引言 前面我们写的程序中,只有一个代码段。 现在有一个问题: 如果程序需要用其他空间来存放数据,应该怎么处理? 第5章中,曾经讲到0:200~0:300是相对安全的;可这段空间的容量只有256个字节,如果程序需要的空间超过256个字节该怎么办呢? 引言 本章将以这样的顺序来深入地讨论多个段的问题: (1)在一个段中存放数据、代码、栈,先来体会一下不使用多个段时的情况; (2)将数据、代码、栈放入不同的段中。 6.1 在代码段中使用数据 考虑这样一个问题,编程计算以下8个数据的和,结果存在ax 寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H。 在前面的课程中,都是累加某些内存单元中的数据,并不关心数据本身。 可现在要累加的就是已经给定了数值的数据。 6.1 在代码段中使用数据 assume cs:codesg codesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h mov bx,0 mov ax,0 mov cx,8 s: add ax,cs:[bx] add bx,2 loop s mov ax,4c00h int 21h codesg ends end 程序6.1 程序第一行中的 “dw”的含义是定义字型数据。 dw即define word。 程序中的指令就要对这8个数据进行累加,可这8个数据在哪里呢? 6.1 在代码段中使用数据 这8个数据的偏移地址是多少呢? 因为用dw定义的数据处于代码段的最开始,所以偏移地址为0,这8 个数据就在代码段的偏移0、2、4、6、8、A、C、E处。 程序运行时,它们的地址就是CS:0、CS:2、CS:4、CS:6、CS:8、CS:A、CS:C、CS:E。 6.1 在代码段中使用数据 程序中,我们用bx存放加2递增的偏移地址,用循环来进行累加。 在循环开始前,设置(bx)=0,cs:bx指向第一个数据所在的字单元。 每次循环中(bx)=(bx)+2,cs:bx指向下一个数据所在的字单元。 6.1 在代码段中使用数据 我们将前面的程序6.1编译、连接为可执行文件p61.exe,先不要运行,用debug加载查看一下。 用 Debug加载后,我们可以将 IP 设置为10h,从而使CS:IP指向程序中的第一条指令。然后再用T命令、P命令、或者是G 命令执行。 程序 6.1 编译成可执行文件后,在系统中直接运行可能会出现问题,因为程序的入口处不是我们所希望执行的指令。 6.1 在代码段中使用数据 如何让这个程序在编译后可以存系统中直接运行呢?我们可以在源程序中指明界序的入口所在,具体做法见下面的程序6.2。 程序代码 6.1 在代码段中使用数据 assume cs:codesg codesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h start: mov bx,0 mov ax,0 mov cx,8 s: add ax,cs:[bx] add bx,2 loop s mov ax,4c00h int 21h codesg ends end start 程序6.2 程序6.2与6.1相比有什么不同? 由此可见,end 除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。 6.1 在代码段中使用数据 有了这种方法,我们就可以这样来安排程序的框架: assume cs:code code segment : 数据 : start: : : 代码 : : code ends end start 6.2 在代码段中使用栈 完成下面的程序,利用栈,将程序中定义的数据逆序存放。 assume cs:codesg codesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ? code ends end 程序大致思
您可能关注的文档
- 新人教八年级物理下册7.2.ppt
- 20131014盱眙项目推介.ppt
- 《咬文嚼字》学案导学设计课件.ppt
- 20132013年河北省历史.ppt
- 《商山早行》msw.ppt
- 新人教八年级物理滑轮.ppt
- 《商鞅变法》课件.ppt
- 2013—2014学年度第一学期八年级物理分组实验:用温度计测量水的温度.ppt
- 《因声求气吟咏诗韵》.ppt
- 2013“读悟写”高考作文指导解读.ppt
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
最近下载
- 2022年新高考全国Ⅰ卷英语真题.docx VIP
- 《0-3岁婴幼儿身心发展与教养》PPT教学课件.pptx VIP
- 《0-3岁婴幼儿身心发展与教养》课件06婴幼儿语言的发展及教养.pptx VIP
- 护士生涯人物访谈 .pdf VIP
- 体育职业生涯规划书课件.pptx VIP
- AB SCIEX 6500 质谱系统在食品安全中的应用.pptx VIP
- 《0-3岁婴幼儿身心发展与教养》课件05婴幼儿记忆的发展及教养.pptx VIP
- C-Primer-Plus第六版中文版习题答案.doc
- 《0-3岁婴幼儿身心发展与教养》课件09婴幼儿意志的发展及教养.docx VIP
- 新能源学生职业生涯规划与管理.pptx VIP
文档评论(0)