任务一:

(1)将任务一代码写入记事本并保存于masm文件并在masm环境下生成可执行文件t1.exe,截图如下:

(2)在debug环境下调试t1.exe,用r命令查看各寄存器的值,截图如下:

(3)可知cs值为15f5,用u命令反汇编实验代码,可知在程序执行前,用g命令运行,再用d命令查看data段中的值,截图如下:

①CPU执行程序前,程序返回前,可知data段中的值不变。

②CPU执行程序前,程序返回前,cs=15f5,ss=15f4,ds=15f3

③设程序加载后,code段的段地址为X,则data段的段地址为:X-2,stack的段地址为:X-1

任务二:

(1)将程序代码写入记事本截图如下:

(2)在debug环境下调试t1.exe,并用r查看各寄存器的值,u命令进行反汇编,g命令执行截图如下:

①CPU执行程序,程序返回前,data段中的数据不变。

②CPU执行程序,程序返回前,cs=15F5,ss=15F4,ds=15F3。

③设程序加载后,code段的段地址为X,则data段的段地址为:X-2,stack的段地址为:X-1

④对于定义的段,如果段中的数据占N个字节,则程序加载后,这段实际占有的空间为:若N不满16个或为16字节则为一段,N满16但不满32也分配32字节

即 a=Nmod16,若a=0,则空间为 (N\16)*16,若a≠0,则空间为 (N\16+1)*16

任务三:

(1)将程序代码写入记事本截图如下:

(2)在debug环境下调试t1.exe,用r命令查看各寄存器的值,u命令反汇编,g命令执行截图如下:

①CPU执行程序,程序返回前,data段中的数据不变。

②CPU执行程序,程序返回前,cs=15F3,ss=15F7,ds=15F6。

③设程序加载后,code段的段地址为X,则data段的段地址为:X+3,stack的段地址为:X+4

任务四:

(1)分别执行三个程序看结果截图如下:

第一个程序反汇编截图:

可知u命令反汇编代码之后发现不是我们输入的代码,可知运行失败

第二个程序反汇编截图:

反汇编之后可以看到也不是我们输入的代码段,运行失败。

第三个代码反汇编截图:

可知反汇编后使我们输入的代码段,运行成功

将伪指令“end start”改为“end”后只有第三个程序可以正确执行,因为没有指明程序段入口,CPU默认从头执行,只有最后一个代码从头

执行可以不需要指明程序段入口。

任务五:

将代码补全并写入记事本截图如下:

(2)在debug环境下调试t1.exe,分别查看段c运行程序前后的值截图如下:

实现了数据依次相加

任务六:

(1)将代码补全写入记事本截图如下:

(2)在debug环境下调试t1.exe,分别查看程序运行前后段b中的值截图如下:

实现了将a段中的前八个字型数据逆序存储到b段中

总结:这一次的实验  让我了解了汇编程序中的嵌套使用,也就是多个段的结合使用,一个程序中可以放多个不同的段

也学会了  “end 标号”表示的是要让CPU从标号处开始执行,如果不加标号,程序段直接以“end”结尾则默认CPU从头开始执行

而在有些拥有多个段的程序中,不加标号,程序不能正确运行。

在CPU 程序执行前,也可以查看寄存器cs,ss,ds的值是否有逻辑关系。

转载于:https://www.cnblogs.com/nxdzy/p/10003979.html

实验五:编写、调试具有多个段的程序相关推荐

  1. 实验5 编写调试有多个段的程序

    实验1 assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h da ...

  2. 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

    参考:http://blog.sina.com.cn/s/blog_171daf8e00102xclx.html 汇编语言实验答案 (王爽):https://wenku.baidu.com/view/ ...

  3. 实验五 编写、调试具有多个段的程序

    (1)将下面的程序编译链接,用debug加载.跟踪,然后回答问题 ☆☆☆☆☆ pop ax是指从栈顶取出的数据送入ax push ax是指将寄存器ax的内容送入栈中 第一问: 第二问: 第三问: ③设 ...

  4. [汇编语言]实验五:编写,调试具有多个段的程序

    (1) 实验代码: assume cs:code, ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0 ...

  5. 实验5 —— 编写、调试具有多个段的程序

    本实验为<汇编语言>(王爽著,第3版)第133页 实验 5 将下面的程序编译.连接,用 debug 加载.跟踪. assume cs:code, ds:data, ss:stack dat ...

  6. 实验5 编写、调试具有多个段的程序

    本章实验的主题主要讲代码段.数据段.栈段的使用. (1) assume cs:code, ds:data, ss:stackdata segmentdw 0123h, 0456h, 0789h, 0a ...

  7. 汇编试验五:编写、调试具有多个段的程序

    ds 数据段放入数据正确: 两次push 操作后,ss栈段正确: 由于pop 操作顺序,ds数据段并没有发生改变: Source Code: assume cs:code, ds:data, ss:s ...

  8. 《汇编语言》第6章 -包含多个段的程序 检测点答案,实验5,总结

    第6章:包含多个段的程序 1.在代码段中使用数据 "dw":define word(定义字型数据:) "db"(定义字节型数据:) "start&qu ...

  9. 包含多个段的程序---汇编学习笔记

    包含多个段的程序 要使用一段安全的空间,第五章中我们说0:200~0:2ff是相对安全的.可这段代码容量只有256个字节. 合法地通过操作系统取得的空间都是安全的. 程序取得所需空间的方法有两种,一是 ...

  10. c语言程序 用追赶法求解方程组,编写用追赶法解三对角线性方程组的程序,并解下列方程组(3页)-原创力文档...

    计算方法与实习上机实验(二) 实验名称: 编写用追赶法解三对角线性方程组的程序,并解下列方程组: (1) (2)Ax=b,其中 A10×10=, b10×1= 程序代码: #include using ...

最新文章

  1. 从ICLR提交论文看机器学习的趋势和风口
  2. ajax实现动态及时刷新表格数据_如何爬取网页数据
  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
  4. hashmap允许null键和值吗_hashMap底层源码浅析
  5. flex java 全局拦截_flex + java 过滤敏感词
  6. html中给%3cb%3e加上颜色,如何使用CSS(jQuery SVG图像替换)更改SVG图像的颜色?
  7. 博客目录(随时删除)
  8. android 定制输入法,QQ输入法Android 4.3全新升级 实现私人定制输入
  9. 禅道批量删除bug_写代码有这16个好习惯,可以减少80%非业务的bug
  10. pthread_mutex_init函数《代码》
  11. vb中SendMessage函数
  12. Java视频在线观看网址
  13. WPF无边框窗体拖动
  14. Html中几种图片格式的区别与使用--我的笔记
  15. 量化新手初识Brinson绩效分解模型
  16. canvas 实现图片预览和下载
  17. 软件测试常见笔试题(附带答案)—初级篇01
  18. 通俗讲解 依概率收敛,大数定理和中心极限定理
  19. pb模型转uff模型(tensorflow2.x)
  20. WebIM 即时通信

热门文章

  1. 《敏捷制造——敏捷集成基础结构设计》——2.3 集成基础结构数据访问模型
  2. filter的作用 一
  3. cnblogs 博客园模板技巧
  4. Linux学习记录-01(Linux系统发展史)
  5. 高速PCB中常见存储器之FLASH引脚图、布局布线设计
  6. 浅谈代码审计入门实战:某博客系统最新版审计之旅
  7. windows.location属性(常用知识点)
  8. [Python3] 初识py, 一个简单练手的小玩意. 快递查询
  9. fastdfs安装部署
  10. IP地址的定义和含义