实验报告:实验三

练习一

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颜色的改变是修改了寄存器中的高字节,改变数字修改的低字节,猜测高字节控制颜色,低字节控制数据。

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

原文地址:https://www.cnblogs.com/xue123/p/9966179.html