实验五:编写、调试具有多个段的程序
任务一:
(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
实验五:编写、调试具有多个段的程序相关推荐
- 实验5 编写调试有多个段的程序
实验1 assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h da ...
- 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序
参考:http://blog.sina.com.cn/s/blog_171daf8e00102xclx.html 汇编语言实验答案 (王爽):https://wenku.baidu.com/view/ ...
- 实验五 编写、调试具有多个段的程序
(1)将下面的程序编译链接,用debug加载.跟踪,然后回答问题 ☆☆☆☆☆ pop ax是指从栈顶取出的数据送入ax push ax是指将寄存器ax的内容送入栈中 第一问: 第二问: 第三问: ③设 ...
- [汇编语言]实验五:编写,调试具有多个段的程序
(1) 实验代码: assume cs:code, ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0 ...
- 实验5 —— 编写、调试具有多个段的程序
本实验为<汇编语言>(王爽著,第3版)第133页 实验 5 将下面的程序编译.连接,用 debug 加载.跟踪. assume cs:code, ds:data, ss:stack dat ...
- 实验5 编写、调试具有多个段的程序
本章实验的主题主要讲代码段.数据段.栈段的使用. (1) assume cs:code, ds:data, ss:stackdata segmentdw 0123h, 0456h, 0789h, 0a ...
- 汇编试验五:编写、调试具有多个段的程序
ds 数据段放入数据正确: 两次push 操作后,ss栈段正确: 由于pop 操作顺序,ds数据段并没有发生改变: Source Code: assume cs:code, ds:data, ss:s ...
- 《汇编语言》第6章 -包含多个段的程序 检测点答案,实验5,总结
第6章:包含多个段的程序 1.在代码段中使用数据 "dw":define word(定义字型数据:) "db"(定义字节型数据:) "start&qu ...
- 包含多个段的程序---汇编学习笔记
包含多个段的程序 要使用一段安全的空间,第五章中我们说0:200~0:2ff是相对安全的.可这段代码容量只有256个字节. 合法地通过操作系统取得的空间都是安全的. 程序取得所需空间的方法有两种,一是 ...
- c语言程序 用追赶法求解方程组,编写用追赶法解三对角线性方程组的程序,并解下列方程组(3页)-原创力文档...
计算方法与实习上机实验(二) 实验名称: 编写用追赶法解三对角线性方程组的程序,并解下列方程组: (1) (2)Ax=b,其中 A10×10=, b10×1= 程序代码: #include using ...
最新文章
- 从ICLR提交论文看机器学习的趋势和风口
- ajax实现动态及时刷新表格数据_如何爬取网页数据
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
- hashmap允许null键和值吗_hashMap底层源码浅析
- flex java 全局拦截_flex + java 过滤敏感词
- html中给%3cb%3e加上颜色,如何使用CSS(jQuery SVG图像替换)更改SVG图像的颜色?
- 博客目录(随时删除)
- android 定制输入法,QQ输入法Android 4.3全新升级 实现私人定制输入
- 禅道批量删除bug_写代码有这16个好习惯,可以减少80%非业务的bug
- pthread_mutex_init函数《代码》
- vb中SendMessage函数
- Java视频在线观看网址
- WPF无边框窗体拖动
- Html中几种图片格式的区别与使用--我的笔记
- 量化新手初识Brinson绩效分解模型
- canvas 实现图片预览和下载
- 软件测试常见笔试题(附带答案)—初级篇01
- 通俗讲解 依概率收敛,大数定理和中心极限定理
- pb模型转uff模型(tensorflow2.x)
- WebIM 即时通信