汇编实验一

前半部分是在机房xp系统下做的,直接打开cmd输入debug进入

(1)首先使用r模式改变cs ip的指向地址,输入rcs,跳出当前cs段地址,再输入1000更改cs

   ip如上操作

   进入a模式 输入1000:0进入逐个单元进行输入命令如下图

 输入完成,使用t指令单步调试,如下图 

 总结:可见cs段地址暂时不变,ip递增3,说明指令每次读取后,ip自动指向下一命令所在单元保证命令的执行。

 

(2)使用a命令从2000:0位置开始输入运算2的8次方的指令,再将cs:ip指向命令开始处:

 

开始t命令单步调试:

 mov ax,ax位于2000:3位置,而下一位置2000:5则是jmp 2000:3,也就是说重复mov ax,ax这个指令

那么第一次 ax=1,接下来便是2+2=4,4+4=8,8+8=16.....规律为2的n次方

达成计算2的次方操作

(3)下面是用win10 dosbox下运行的 由于我的电脑是超过2k的分辨率2736x1824,显示dosbox画面极小

解决办法:进入显示设置,将分辨率调低,我调到了800x600分辨率

用d指令查看fff0:0数据,每次只能查看32kb数据,右侧显示的是可转移数据,可见无意义

接着从fff0:80开始查看 在fff0:f0可以看见一段可读的日期:

 

 可以看出地址范围 段地址:fff0 偏移地址:f5到fc

使用

再次查看:

很明显没有改变,这是因为储存在Rom的数据是只读而不可改变的,也许是写在bios上的数据。

(4)输入数据显示如下

改变数据:

改变地址:

这种现象的原因是将数据储存在了显存的内存空间上面,显示出图标。

 

总结体会:汇编作为一种底层的语言和熟悉的高级语言不同,直接从内存入手,速度更加快,而代码量更加的多,在如今的生产环境下,可以作为优化一些过程嵌入进去。汇编的内容较为枯燥,所以要多联系熟练在心中。掌握多种debug模式,理解内存数据单元的意义。

posted on 2018-10-22 15:08  batt1ebear  阅读(388)  评论(1)    收藏  举报

导航