zoukankan      html  css  js  c++  java
  • 实验报告:实验三

    练习一

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

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

    mov ah,4ch
    int 21h
    code ends
    end

    对以上代码进行汇编、连接、调试、运行。结果如下:

    结果为36

    然后我将第四行和第九行的dl的值分别改为5和4继续汇编、连接、调试、运行:

    结果变为了54。

    然后使用r命令查看cx、ds、cs的值发现满足cs=ds+10h

    然后用debug反汇编得出偏移地址0000到0015的为源代码部分

    再用d命令和r命令查看PSP的头两个字节验证确实为CD 20。

    然后用p和t命令单步调试,遇到int用p命令。如下图

    返现依次输出的是5和4(与之前改的一致)

    练习二

    assume cs:code
    code segment
    mov ax, 0b800h
    mov ds, ax

    mov bx,0
    mov [bx],0333h

    add bx,2
    mov [bx],0336h

    mov ax,4c00h
    int 21h
    code ends
    end

    对t2代码进行汇编、连接、调试、运行。结果如下:

    输出红色的36

    将源代码中line7的0433h改为0432h, line10 的 0436h改为0439h,然后进行汇编、连接、调试、运行:

    结果如下输出红色29

    试将源代码中line7的0433h→0333h, line10 的 0436h→0336h,然后进行汇编、连接、调试、运行:

    结果如下输出蓝绿色的36

    总结感想:

    通过本次实验一我明白了计算机通过每次单个输出dl的值来完成对字符的输出(即输出54需要输出两次)。

    由于最后36颜色的改变是修改了寄存器中的高字节,改变数字修改的低字节,猜测高字节控制颜色,低字节控制数据。

    熟悉了汇编中对稍微复杂的源代码汇编、连接、调试、运行等的过程。

  • 相关阅读:
    Spinal Tap Case
    Sorted Union
    Search and Replace
    Boo who
    Missing letters
    DNA Pairing
    Pig Latin
    Where art thou
    Roman Numeral Converter
    Redis高级客户端Lettuce详解
  • 原文地址:https://www.cnblogs.com/xue123/p/9966179.html
Copyright © 2011-2022 走看看