实验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)

使用 e 命令修改 内存单元0022:0~0022:f 中的数据,及修改后查看是否正确写入的操作
 
 
使用A键输入指令,每行指令单步调试

 

 

 

 

 指令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

单步调试时内存发生变化,有单步中断的影响在里面

 

posted @ 2020-10-10 20:50  突进的小母猪  阅读(152)  评论(3编辑  收藏  举报