实验一

 

任务一:使用debug,将下面程序段写入内存,逐条执行,观察每条程序执行后CPU中相关寄存器的内容的变化

方法一:

(1)使用e命令在1000:0的起始位置将程序的机器码读取到内存单元中,利用d命令查看内存中的信息,并且利用u命令进行反汇编,将读取的机器码转化为汇编指令;

  机器码                                      汇编指令

b8  20  4e                                   mov  ax,4e20h

05  16  14                                   add  ax,1416h

bb  00  20                                   mov  bx,2000h

01  d8                                         add  ax,bx

89  c3                                         mov  bx,cx

01  d8                                         add  ax,bx

b8  1a  00                                   mov  ax,001ah

bb  26  00                                   mov  bx,0026h

00  d8                                         add  al,bl

00  dc                                         add  ah,bl

00  c7                                         add  ah,bl

b4  00                                         mov  ah,0

00  d8                                         add  al,bl

04  9c                                         add  al,9ch

(2)先改写cs:ip的指向,使cs:ip的值指向写入程序段的位置,然后用t命令分步调试,执行汇编指令

 

(1)利用a命令写入汇编指令

(2)寄存器变化如上

任务二:

将下面指令写入从2000:0开始的内存单元中,利用这三条指令计算2的8次方。

(1)利用a命令从2000:0开始的内存单元写入相应汇编指令

(2)更改cs:ip的指向,使其指向2000:0,用t命令分条执行汇编指令

一直使用jmp指令,最后求得2的8次方的值

任务3  hPC机的ROM中写有一个生产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个生产日期并试图改变它

(1)用r指令查看内存FFF00-FFFFF之间的内存信息

我们可以清楚的看到,该内存段中,右侧只有“01/01/92”这一个日期,所以,不难猜测,该日期就是我们要找的主板生产日期

(2)尝试改写生产日期

可以看到,该日期对应的ASCII码值为:30 31 2F 30 31 2F 39 32 

我们将日期改写为“02/02/92”,对应的ASCII码为:30 32 2F 30 32 2F 39 32

用e命令对其进行改写

 

改写完之后,再次用d命令显示内存信息

改写失败,rom只读。

任务四 .向内存从d8100h开始的单元中填写数据,如:

-e b810:0000 01 01 02 02 03 03 04 04

请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。

 

 

5.实验小结

对汇编语言这门学科算是有了初步的了解,不像以前一样一头雾水,现在至少有点概念了;

了解了mov和add等一些基本操作;

了解了r命令,d命令,a命令等一些基本指令;

 

posted @ 2018-10-28 22:36  林木胖胖  阅读(138)  评论(2)    收藏  举报