实验1 用机器指令和汇编指令编程
1.实验1
实验任务(1)
使用debug将程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。
用E命令向内存中写入机器码,用T命令逐条执行。
用A命令以汇编指令形式在内存中写入机器指令,用T命令逐条执行。
实验任务(2)
将三条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
实验任务(3)
查看PC机主板上的ROM的生产日期并试图改变它。
生产日期为1992年1月1日,不可修改。
实验任务(4)
向内存从B8100H开始的单元中填写数据。
内存中0040:0070的数据发生改变
2.实验2
实验任务(1)
指令mov sp,0100没有显示,但是寄存器SP的值被修改为0100,实际上该命令是执行的
mov ax, 0021
mov ds, ax
mov ax, 2200
mov ss, ax
mov sp, 0100
mov ax, [0] ;ax= C0EAH
add ax, [2] ;ax= C0FCH
mov bx, [4] ;bx=30F0H
add bx, [6] ;bx=6021H
push ax ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 C0FCH
push bx ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6021H
pop ax ;sp= 00FEH ,ax= 6021H
pop bx ;sp= 0100H ,bx= C0FCH
push [4] ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 30F0H
push [6] ;sp=00FCH ,修改的内存单元地址是 2200:00FC 内容为 2F31H
实验任务(2)
使用A命令输入7条指令,用E命令修改2000:0~2000:f的值及修改后查看的部分,每一条指令单步调试后使用d命令查看2000:0~2000:f的值
mov ax,2000代表修改寄存器ax值为2000
mov ss,ax代表对段寄存器ss赋值为ax寄存器中的值
mov sp,10代表栈顶指针指向20010H,初始化了栈顶,;初始时栈底和栈顶为073FDH
单步调试时内存发生变化,有单步中断的影响在里面