实验2 多个逻辑段的汇编源程序编写与调试
任务1-1



问题1:寄存器(DS) = 076A, 寄存器(SS) = 076B,寄存器(CS) = 076C
问题2:假设程序加载后,code段的段地址是X,则,data段的段地址是X-2, stack的段地址是X-1
任务1-2

问题1:寄存器(DS) = 076A, 寄存器(SS) = 076B, 寄存器(CS) = 076C
问题2:假设程序加载后,code段的段地址是X,则,data段的段地址是X-2, stack的段地址是X-1
任务1-3

问题1:寄存器(DS) = 076A, 寄存器(SS) = 076C, 寄存器(CS) = 076E
问题2:假设程序加载后,code段的段地址是X,则,data段的段地址是X-4, stack的段地址是X-2
任务1-4

问题1:寄存器(DS) = 076C, 寄存器(SS) = 076E, 寄存器(CS) = 076A
问题2:假设程序加载后,code段的段地址是X,则,data段的段地址是X+2, stack的段地址是X+4
任务1-5:
实际分配给该段的内存空间大小是 16Byte。end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。在程序6.2中我们用end指令指明了程序的入口在标号start处。
尾指令end 描述了程序的结束和程序的入口。在编译、连接后,"end start" 指明的程序入口,被转化为一个入口地址,存储在可执行文件的描述信息中。
任务2:


任务3:
编程实现把逻辑段data1和逻辑段data2的数据依次相加,结果保存到逻辑段data3中。
在debug中加载、反汇编、调试。在数据项依次相加前,和相加后,分别查看三个逻辑段data1, data2, data3对应的内存空间,确认逐一相加后,结果的确保存在了逻辑段data3中。

相加前截图:

相加后截图:

反汇编截图:

任务4:

汇编、连接后,在debug中加载程序,运行到line15程序退出前,使用d命令查看数据段data2对应的内存空间,确认是否实现题目要求。


任务5:

Line 19 的作用:将小写字母转换成大写字母
db 2,3,4,5,6 --> 改成: db 5 dup(2)
实验结果:NUIST变成绿色

db 2,3,4,5,6 --> 改成: db 5 dup(5)
实验结果:NUIST变成紫色

数值的作用可能是设置不同的颜色
任务6:

在debug中加载程序,反汇编,执行到line13退出前,用d命令查看data段对应的内存空间,确认每
行第一个单词已经由大写->小写。
反汇编:

结果:

任务7:



浙公网安备 33010602011771号