实验二
一、实验任务1
·任务1-1
1、task1_1.asm源码
2、task1_1调试到line17结束、line19开始
3、(1)076a ;076b ;076c
(2)X-2 ;X-1
·任务1-2
1、task1_2.asm源码
2、task1_2调试到line17结束、line19之前
3、(1)076a ;076b;076c
(2)X-2 ;X-1
·任务1-3
1、task1_3.asm源码
2、task1_3调试到line17结束,line19开始
3、(1)076a ;076c ;076e
(2)X-4 ;X-2
·任务1-4
1、task1_4.asm源码
2、task1_4调试到line17结束,line19开始
3、(1)076c ;076e ;076a
(2)X+2 ;X+4
·任务1-5
(1)若N%16==0,则分配N字节;否则分配(N/16+1)*16字节
(2)task1_4.exe仍然可以正确执行,而其他三个程序在debug时通过u指令查看得到如图,因此不能正确执行。
原因为若要CPU从指定开始执行程序,需要在源程序中用“end 标号”指明。当没有“end 标号”时,由于程序4以代码段开始,因此CS:IP正好指向代码段地址;而其他三个程序由于均是 以数据段开始,因此CS:IP指向数据段地址。
二、实验任务2
1、task2.asm源码
2、运行结果
三、实验任务3
1、补充完整后的汇编源码
2、
(1)在debug中加载、反汇编、调试
(2)在数据项依次相加之前,查看逻辑段data1, data2, data3对应的内存空间数据原始值
(3)依次相加之后,查看逻辑段data1, data2, data3对应的内存空间数据原始值
四、实验任务4
1、补充完整后的汇编v源码
2、
(1)在debug中加载、反汇编、调试
(2)使用d命令查看数据段data2对应的内存空间
五、实验任务5
1、task5.asm汇编源码
2、运行结果
3、使用g命令一次性执行到程序返回前
4、源码中line19的作用为:将'Nuist'中小写字母转化为大写字母。
六、实验任务6
1、task6.asm源码
2、
(1)在debug中加载、反汇编、调试
(2)使用d命令查看数据段data对应的内存空间
七、实验任务7
1、task7.asm源码
s
2、
(1)查看table段原始数据信息
(2)使用d命令查看table段对应的内存空间