实验3
三、
1. 练习 1
第 1 步,编写汇编源程序 t1.asm


第 2 步,对源程序 t1.asm 进行汇编、连接、运行、调试
{汇编}
{连接}
{运行}
{调试}


(1)运行程序,观察程序输出结果
结果是36
(2) 将 line4 和 line9 种寄存器 dl 的值分别修改为 0~9 中任何一个数字,重新汇编
连接→运行,观察结果的变化。
改成4 和 8

{汇编}
{连接}
{运行}
结果从36变成48了
(3) 用 debug 对生成的可执行文件 t1.exe 进行调试。(是修改后的t1)
① 使用 r 命令查看。观察寄存器 cx 的值是 多少;观察寄存器 ds 和 cs 的值是多
少,它们之间是否满足关系(cs)=(ds)+10H?

CS =076A
DS=075A
075AH+10H=076AH
满足
② PSP(程序段前缀)的头两个字节是 CD 20, 用 debug 查看 PSP 的内容,验证是否
如此。

验证确实是CD 20
③ 使用 u 命令对 t1.exe 进行反汇编,观察反汇编得到的源代码。

④ 使用 t 命令和 p 命令(遇到 int 命令时,用 p 命令)单步调试,观察结果。



2. 练习 2
第 1 步,编写汇编源程序 t2.asm

第 2 步,对源程序 t2.asm 进行汇编、连接、运行、调试

(1) 对 t2.asm 进行汇编、连接后,得到可执行文件 t2.exe。运行 t2.exe,观察程序运行

运行结果是36,但是出现在上方。
(2)重新打开 t2.asm,尝试将源代码中 line7 的 0433h→0432h,
line10 的 0436h→0439h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清屏后,再次观察程序运行结果。

{编译,连接}
好像有什么不对,出来还是36
再来一遍:
清屏后的程序运行结果:
红色上方的29
(3) 如果(1)结果得到验证,重新打开 t2.asm,尝试将源代码中 line7 的 0433h→0333h, line10 的 0436h→0336h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清屏后,再次观察程序运行结果。



绿色的36
3. 延伸思考与分析
(1)通过改变内存单元的值可以改变打印在屏幕上的颜色和位置,通过改变低位上的数,打印出来的颜色会发生变化。
(2)练习1在实现数值打印时通过调用系统功能来达成,练习2 通过改变控制屏幕显示的内存单元,来实现打印。
五、总结与体会
通过本次实验,掌握了两种显示器打印的方法。
查证资料
1.1)显存介绍
1)显示缓冲区地址空间:b8000h~bffffh,共32k 空间;
2)显示缓冲区分为8个页,每页4k;
3)每页25行,每行160B;
4)每行80个字符,每个字符占两个字节,分别存储字符本身的ascii 和 属性值(背景色,前景色);
5) 一般情况下,显示第0页的内容,也就是说通常情况下,b8000h~b8f9fh中的4000个字节的内容将出现在显示器上。
http://www.cnblogs.com/youxin/archive/2012/05/21/2512329.html

浙公网安备 33010602011771号