汇编实验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 !

posted @ 2018-11-01 13:46  鎖夢  阅读(199)  评论(0编辑  收藏  举报