实验三 编程、编译、连接、跟踪
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命令的功能还不是很了解。