首页 > 其他 > 详细

实验3 多个段的汇编源程序编写与调试

时间:2020-11-20 15:12:27      阅读:18      评论:0      收藏:0      [点我收藏+]

实验3 多个段的汇编源程序编写与调试


 1. 实验任务1

此部分书写内容:

  • 附上源代码文件task1.asm
  • 附上运行结果截图
  • 使用debug工具对程序进行调试,执行到程序返回前,即line27之前,观察结果
  • 分析源代码中data段line4的字节数据的用途

结论:

  task1.asm源代码:

 1 assume cs:code, ds:data
 2 data segment
 3         db Nuist
 4         db 5 dup(2)
 5 data ends
 6 
 7 code segment
 8 start:
 9         mov ax, data
10         mov ds, ax
11 
12         mov ax, 0b800H
13         mov es, ax
14 
15         mov cx, 5
16         mov si, 0
17         mov di, 0f00h
18 s:      mov al, [si]
19         and al, 0dfh
20         mov es:[di], al
21         mov al, [5+si]
22         mov es:[di+1], al
23         inc si
24         add di, 2
25         loop s
26 
27         mov ah, 4ch
28         int 21h
29 code ends
30 end start

  使用masmlink工具汇编、链接的命令行及运行结果截图:

技术分享图片

   使用debug调试:

技术分享图片

  修改line4里5个字节单元的值,重新汇编、链接、运行,观察结果:

1 db 5 dup(2)
2 --> 改成:
3 db 2,3,4,5,6

技术分享图片

   分析:修改之后输出字符颜色发生了变化,内容保持不变。分析可知, db 5 dup(2) 表示分配5字节内存空间并初始化为2; db 2,3,4,5,6 表示直接分配5字节内存空间并初始化为2,3,4,5,6.综上分析可知,修改的部分控制了输出字符的颜色,对内容并五影响。


 

2. 实验任务2

此部分书写内容:

  • 附上源代码文件task2.asm
  • 附上运行结果截图

结论:

  ex2.asm源代码:

 1 ;ex2.asm
 2 assume cs:code
 3 code segment
 4     mov ax,0b810h
 5     mov ds,ax
 6     mov bx,0
 7     mov ax,101H
 8     mov cx,4
 9 s:    mov [bx],ax
10     add bx,2
11     add ax,101H
12     loop s
13     mov ah,4ch
14     int 21h
15 code ends
16 end

 


 

3. 实验任务3

此部分书写内容:

  • 附上源代码文件task3.asm
  • 回答教材中①②③三个问题
  • 基于以下实验操作的发现和文字说明
  • 附上回答①时,反汇编查看data段中数据的截图。验证观察到的结果和理论分析是否一致
  • 附上回答②时反汇编调试截图,即:在debug中,执行到程序返回前的调试截图

结论:

  程序源码:

 1 assume cs:code
 2 code segment
 3 
 4     mov ax,0b800h
 5     mov ds,ax
 6     mov bx,07b8h
 7     mov cx,16
 8 s:     mov dx, word ptr 0237h
 9     mov ds:[bx],dx
10     add bx,2
11     loop s
12 
13     mov ax,4c00h
14     int 21h
15 
16 code ends
17 end

 

  运行结果:


 

4. 实验任务4

此部分书写内容:

  • 附上源代码文件task4.asm
  • 回答教材中①②③④四个问题
  • 附上回答②时反汇编调试截图,即:在debug中,执行到程序返回前的调试截图

结论:

  程序源代码:

 

 1 assume cs:code
 2 code segment
 3 
 4     mov ax,0200h
 5     mov ds,ax
 6     mov cx,64
 7 s:    mov [bx],bx
 8     inc bx
 9     loop s
10 
11     mov ax,4c00h
12     int 21h
13 
14 code ends
15 end

 

  t、p、g命令调试:

 

 

  d命令查看0:200~0:23F:

 


5. 实验任务5

此部分书写内容:

  • 附上源代码文件task5.asm
  • 回答教材中①②③三个问题
  • 附上回答②时反汇编调试截图,即:在debug中,执行到程序返回前的调试截图

结论:

  程序源代码:

 

 1 assume cs:code
 2 code segment
 3     mov ax,cs
 4     mov ds,ax
 5     mov ax,0020h
 6     mov es,ax
 7     mov bx,0
 8     sub cx,5
 9 s:  mov al,[bx]
10     mov es:[bx],al
11     inc bx
12   loop s
13     mov ax,4c00h
14     int 21h
15 code ends
16 end

 

  调试查看:


 

6. 实验任务6

此部分书写内容:

  • 回答教材中提出的问题,并按要求说明原因。

结论:


7. 实验任务7

此部分书写内容:

  • 附上完整源代码文件task7.asm
  • 附上在debug环境中,执行到程序返回前,查看逻辑段c的数据的截图,以此验证所编写的程序正 确实现了题目要求

结论:


8. 实验任务8

此部分书写内容:

  • 附上完整源代码文件task8.asm
  • 附上在debug环境中,执行到程序返回前,查看逻辑段c的数据的截图,以此验证所编写的程序正 确实现了题目要求。

结论:

 

实验3 多个段的汇编源程序编写与调试

原文:https://www.cnblogs.com/max-max/p/14010667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!