实验二

一、实验任务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段对应的内存空间

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-11-09 21:49  brilliant_blue  阅读(44)  评论(3编辑  收藏  举报