• 实验三


    1. 练习1

    第2步(1) 运行程序,观察程序输出结果是36

    (2)将 line4和line9种寄存器dl 的值分别修改为如下

    ,重新汇编→ 连接→运行,结果如下:

    (3) 用debug对生成的可执行文件 t1.exe 进行调试。 ① 使用 r 命令查看。观察寄存器 cx 的值是 16;观察寄存器 ds的值是 15C9和 cs 的值是15D9,它们之间满足关系(cs)=(ds)+10H。

    ② PSP(程序段前缀)的头两个字节是CD 20, 用debug查看PSP的内容,验证确实 如此。

     

    ③ 使用 u 命令对 t1.exe 进行反汇编,观察反汇编得到的源代码。

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

    练习2

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

    源代码为:

    code segment
     mov ax,0b800h
     mov ds,ax
     
     mov bx,0
     mov [bx],0433h
     
     add bx,2
     mov [bx],0436h
     
     mov ax,4c00h
     int 21h
    code ends

    无输出。

    在masm for windows里会报错,在dos下编译不报错(不能直接用mov写入内存单元)

    修改为:

     结果如下:(屏幕左上角)

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

    结果如下:(屏幕左上角)

    (3) 如果(1)结果得到验证,重新打开t2.asm,尝试将源代码中line7的0433h→0333h, line10 的 0436h→0336h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清 屏后,再次观察程序运行结果。

    结果:(屏幕左上角)

    延伸思考和分析

    1.  

    mov ax,0b800h
     mov ds,ax
     mov bx,0
     mov [bx],0433h

    向控制显示的内存写入,使得可以在屏幕上显示值,3

    add bx,2
     mov [bx],0436h

    向控制显示的内存写入,使得可以在屏幕上显示值,6

    (2)在练习一中是向控制台输出值,即在下一行输出值,应该是调用函数(或者说封装好的功能)实现向控制台输出(有可能不对)。

    (3)在练习二中是直接写入控制屏幕显示的内存单元(显存)。

    感悟与收获

     在这一次实验中,我学到了如何向屏幕输出,可以用输出函数的方法,也可以用直接改变显存的方式。

    在原来我们只能在debug下查看内存单元或者是寄存器的值,现在有了更多的方式实现计算机最基本的功能之一,输出,向屏幕输出。

    个人更喜欢第一种方法,因为不会造成不良影响,试想如果直接改变显存,而显存里有重要的数据,可能会造成数据的丢失。

    查证

    80X25彩色字符模式显示缓冲区的结构:

      在内存地址结构中,B8000H~BFFFFH共32KB的空间,为80x25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在

    显示器上。

      在80x25彩色模式下,显示器可以显示25行,每行80个字符,每个字符可以由256中属性。

      80x25模式下,一屏的内容在显示缓冲区共4000个字符。

    来源:https://www.cnblogs.com/xautxuqiang/p/5468115.html

  • 相关阅读:
    百度之星 1211 题目一
    acdream 1019 Palindrome 字符串hash
    POJ2480 Longge's problem 欧拉函数
    C#为应用程序注册快捷键
    sql跨数据库查询
    嵌入式轻量级数据库 SQLite和 System.Data.SQLite
    经典问题 C#隐藏和显示窗体
    System.Data.SQLite类Dll下载地址和移植C# SQLite
    CMMI5
    两个ComboBox之间Item的移动
  • 原文地址:https://www.cnblogs.com/asm085/p/9948896.html
Copyright © 2020-2023  润新知