实验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 0433h0432h,

line10 0436h0439h,  然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清屏后,再次观察程序运行结果。

 

{编译,连接}

 好像有什么不对,出来还是36

 

再来一遍:

 

清屏后的程序运行结果:

 

 

 

 

红色上方的29

(3)  如果(1)结果得到验证,重新打开 t2.asm,尝试将源代码中 line7 0433h0333h, line10 0436h0336h,  然后重新汇编、连接,得到可执行文件 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

 

posted @ 2018-11-18 22:11  =lucia  阅读(98)  评论(1)    收藏  举报