实验三 编程、编译、连接、跟踪

1.练习1.

任务一:

(1)用DOS中的edit工具,对源程序代码进行编辑,并命名为t1.asm。

1  assume cs:code

2  code segment

3          mov ah,2

4          mov dl,3

5          add dl,30h

6          int 21h

7            

8          mov ah,2

9          mov dl,6

10        add dl,30h

11         int  21h

12 

13        mov ah,4ch

14        int  21h

code ends 

end 

(2)编译。

 (3)连接。

 

(4)执行。

 

输出结果为36.

任务二:

(1)用edit将line4和line9中寄存器dl的值分别修改为6和8。

(2)编译。

(3)连接。

(4)执行。

输出结果是68.

任务三:用Debug对t1.asm进行调试。

(1)用R命令查看。

因为 cx=0016h,ds=075ch,cs=076ch,所以(cs)=(ds)+10h.

(2)用Debug查看PSP中的内容,PSP头两个字节是CD 20,验证是否符合。

 

经观察是符合的。

(3)u命令对t1.asm反汇编。

与修改后的源代码一致。

(4)使用t命令和p命令单步调试。

 

 

可以看到使用P命令时,在P命的下方分别出现了6和8。

 2.练习2.

任务一:

(1)edit编写源程序,并将其命名为t2.asm。

1  assume  cs:code

2  code segment

3       mov ax,0b800h

4       mov ds,ax

5

6       mov bx,0

7       mov [bx],0433h

8

9       add bx,2

10     mov [bx],0436h

11

12    mov ax,4c00h

13    int 21h

code ends

end

(2)对t2.asm进行编译连接。

(3)执行。

 

输出结果是36.

任务二:

(1)用edit将源代码中line7的0433h变为0432h,将line10的0436h变为0439h。

(2)编译连接。

(3)执行。

输出结果是29.

 任务三:

(1)用edit将源代码中的line7的0433h变为0333h,将line10的0436h变为0336h。

(2)编译连接并执行。

 

 输出结果是36.

3.延伸思考和分析。

(1)对t2.exe进行追踪,可以看到0333h,0336h都被写入了内存,但结果只显示3和6,并且36是有颜色的,所以我认为t2.asm的功能是将数据写入显存的内存空间,并赋予数据颜色。

(2)练习1和练习2放在一起看,练习1实现数值是通过int21h来实现,而练习2是通过在显存中写入数据而实现的。

4.总结与体会。

学习了简单汇编程序的编写和汇编源程序的编译连接,但对p命令的功能还不是很了解。

 

posted on 2018-11-17 20:15  猫猫兔  阅读(135)  评论(0编辑  收藏  举报

导航