实验5

1。

 

.

用r指令查看stack段地址076B,由于stack内是8字即16个字节。所以data区短地址是076A,刚好数据区也是16个字节,用d 076A:0 F查看数据元素。

  用u指令反汇编代码,得到代码段最后是076A:001D。用g命令执行该代码。

 

 

可以得到CS=076C,SS=076B,DS=076A。假设CODE段的段地址为X,则DATA段的段地址为 X-2 ,STACK段的段地址为 X-1 

 

2.

 

 3.

数据data区没有改变,原数据详细地代码请展开练习3 下面的代码。

假设CODE段的段地址为X,则DATA段的段地址为 X+3 ,STACK段的段地址为 X+4 

4.

 将1、2、3中最后最后一条伪指令“end start”改为“end”

 

实验证明,只有第三个程序,是能够正常运行。

  如果不指明入口位置,则程序从所分配的空间开始执行。只有第三个是以代码段开始,则不会将其他数据段当成代码段执行。

5.

 

6.

 

 

总结感受

让逻辑段 a 作为数据段(和 ds 关联起来),c 作为附加段(和 es 关联起来);将逻辑段 a 的数据→复制到逻辑段 c(可借助 mov 和 loop 实现)让逻辑段 b 作为数据段(和 ds 关联起来),c 作为附加段(和 es 关联起来);将逻辑段 b 的数据加到逻辑段 c(可借助 add 和 loop 实现)

章主要是综合运用前面的内容,定义栈,使用段地址加偏移地址,进行访问,存储

posted on 2018-11-25 12:59  此名很文艺  阅读(89)  评论(0编辑  收藏  举报