1.使用Debug,将下面的程序段写入内存(用a命令)后单步执行(用t命令),观察每条指令执行后CPU中
相关寄存器中内容的变化。
1 mov ax,4E20H
2 add ax,1416H
3 mov bx,2000H
4 add ax,bx
5 mov bx,ax
6 add ax,bx
7 mov ax,001AH
8 movbx,0026H
9 add al,bl
10 add ah,bl
11 add bh,al
12 mov ah,0
13 add al,bl
14 add al,9CH
2.将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
1 mov ax,1
2 add ax,ax
3 jmp 2000:0003
(-t单步执行16次,过程未录)
3.查看日期并修改其值
4.改变数据地址,观察其变化
实验总结与体会
- 初次调试时出现了“illegal command:debug”,原因是文件夹下没有debug.exe可执行文件。放置后一切正常运行。
- debug中默认是16进制,在数据后标识进制反而会报错。
- 在计算2^8时,发现第一二步执行需 2个t,执行第三步的t的时候实际上只是改变cs:ip的指向并没执行cs:ip指向内容的机器指令,后面的7个jmp 每个需要执行2个t才能执行add,所以一共需要执行16次t(过程没有录进去。)
- 修改日期发现无法修改,后来在看其他同学博客的时候明白了是因为c0000-fffff为各位ROM地址空间(而生产日期就存在这篇区域内),ROM 即read-only memory,其特性就是只能读不能写。
- 第四个实验产生图像的原因在查阅资料了解到,该段内存为显存。