实验一:查看CPU和内存,用机器指令和汇编指令编程

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,其特性就是只能读不能写。
  • 第四个实验产生图像的原因在查阅资料了解到,该段内存为显存。

 

原文地址:https://www.cnblogs.com/zakon/p/9744572.html