zoukankan      html  css  js  c++  java
  • 实验三 编程、编译、连接、跟踪

    四.实验结论

    练习一:

    (1)编写汇编程序:

    assume cs:code
    code segment
    mov ah,2
    mov dl,6
    add al,30h
    int 21h

    mov ah,2
    mov dl,5
    add dl,30
    int 21h

    mov ah,4ch
    int 21h
    code ends
    end

    (2)对源程序t1.asm进行汇编、连接、运行、调试。

    先进行编译:

    连接:

    运行结果:

    将第4行和第9行的数值分别改成4和5:

    运行结果如下:

    结果显示,出现了不同的图标,可能与寄存器中值有关。

    (3)对t1.exe进行调试

    用r命令进行查看:

    观察到cx的值为0015,ds值为075a,cs为076a。满足cs=ds+10。

    用debug查看psp内容,即从ds:0~ff

    可以看出开头是CD。

    使用u命令进行反汇编:

    因为从cs:ip所指向地址开始写入长度为15的代码,因此只要查看0~14

    用t命令和p命令进行单步调试:

    下一步是int命令要用p命令调试:

    出现图案。

    接着调试结束:

    练习2

    (1)编写汇编程序

    assume cs:code
    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
    end

    (2)对源代码进行汇编,连接,运行,调试

    最后运行t2的时候什么都没有显示

    在cls之后出现了预期的红色36

    将源代码中line7的0433h→0432h,line10 的 0436h→0439h, 然后重新汇编、连接:

    发现数字变化了,颜色没有发生变化。

    将源代码中 line7 的 0433h→0333h,line10 的 0436h→0336h, 然后重新汇编、连接:

    发现数字没有变,颜色发生了变化。

    类似实验一,进行单步调试:

    用d命令查看bx内存,发现0336并没有存入内存中

    最后程序正常结束

    五.总结与体会

    从实验一可看出,当出现int 21中断时,用p命令进行单步调试,可以显示数值。

    从实验二可以看出,数据不能用mov指令直接写入内存单元。可以通过将数据存入显存中显示数值。

  • 相关阅读:
    streamsets 集成 cratedb 测试
    streamsets k8s 部署试用
    streamsets rest api 转换 graphql
    StreamSets sdc rpc 测试
    StreamSets 相关文章
    StreamSets 多线程 Pipelines
    StreamSets SDC RPC Pipelines说明
    StreamSets 管理 SDC Edge上的pipeline
    StreamSets 部署 Pipelines 到 SDC Edge
    StreamSets 设计Edge pipeline
  • 原文地址:https://www.cnblogs.com/makaya/p/9979283.html
Copyright © 2011-2022 走看看