汇编实验3 编程、编译、链接、跟踪
实验任务
练习1
1 assume cs: code 2 code segment 3 mov ah,2 4 mov dl,3 5 add dl,30h 6 int 21h 7 8 mov ah,2 9 mov dl,6 10 add dl,30h 11 int 21h 12 13 mov ah,4ch 14 int 21h 15 code ends 16 end
(1)源代码经汇编链接后输出结果为
(2)将line 4 改为 mov dl,5; 将line 9 改为 mov dl,8
再进行汇编链接后输出为
(3)用debug进行调试
- 使用r命令查看
可见:cx的值为0016H,ds的值为075AH, cs的值为076AH, 可得出ds和cs间满足(cs) = (ds) + 10H
- 查看PSP 的内容
头两个字节确实为CD
- 用u命令进行反汇编可得
- 使用t命令和p命令进行调试
最后执行p命令,程序终止
练习2
1 assume cs:code 2 code segment 3 mov ax, 0b800h 4 mov ds,ax 5 6 mov bx,0 7 mov [bx],0433h 8 9 add bx,2 10 mov [bx],0436h 11 12 mov ax,4c00h 13 int 21h 14 code ends 15 end
(1)汇编连接后输出结果为
(2)将line 7 中的0433h改为0432h; 将line 10 中的0436h改为0439h
重新汇编连接后输出后可得
(3)将 line 7中的0433h改为0333h;将line 10 中的0436h改为0336h
重新汇编连接后输出可得
总结与体会
1.结合汇编第一次试验中通过更改段地址B8100H相关内存单元的数值,发现可借此控制输出到屏幕上的图案颜色和形状;
再来看此次实验,同样的可以发现同样是在B8000H相关内存单元进行操作,进而更改了输出到屏幕数字的内容及颜色,
并且同样的,每个输出也都是靠四个字节来控制,高位的两个字节控制内容,低位的两个字节控制颜色;
由此可以猜测,内存单元B8000H能够控制屏幕的输出
2.再将实验2与实验1作比较,可发现,同样是输出到屏幕,输出的位置却不同,代码的实现也有较大差异:
实验1是通过将数值送入dl寄存器中,如下:
3 mov ah,2 4 mov dl,3 5 add dl,30h 6 int 21h
3,5,6行的代码内容应该是实现输出的固定语句,暂不考虑
而实验2则是直接赋值给指定(B800H)内存段的地址,并无额外的语句;
另外,个人感觉,实验1的输出像是代码的运算结果,而实验2则像是改变了计算机内某处的数值,从而改变的屏幕上的显示内容
That ' s all !