汇编语言实验一
1.教材实验1
(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。
用E命令将指令写入内存:
用A命令将指令写入内存,并用T命令单步执行:
(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方
得出ax=0040H=64=2的八次方
(3)PC主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并且试图改变它。
找到了ROM的生产日期,但是无法修改。因为向C0000-FFFFF的内存单元中写入数据的操作是无效的,因为这等于改写只读存储器中的内容。
(4)向内存B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
8086CPU的显存地址空间是A0000H-BFFFFH,所以向内存从B8100H开始的单元写入数据时,数据会显示在显示器上。
2.教材实验2
(1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
mov ax,[0] ;ax=5150
add ax,[2] ;ax=A4A2
mov bx,[4] ;bx=5554
add bx,[6] ;bx=ACAA
push ax ;sp=00FE;修改的内存单元的地址是2200:00FE内容为A4A2
push bx ;sp=00FC;修改的内存单元的地址是2200:00FC内容为ACAA
pop ax ;sp=00FE;ax=ACAA
pop bx ;sp=0100;bx=A4A2
push [4] ;sp=00FE;修改的内存单元的地址是2200:00FE内容为5554
push [6] ;sp=00FC;修改的内存单元的地址是2200:00FC内容为5756
(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?
对图3.19的实验过程用T命令单步执行结果为:
原因:CPU将CS,IP及一些变量也压入栈内。