实验1 用机器指令和汇编指令编程

实验1:

(1)用e命令将指令写入内存中 :

 

用a命令将指令写入内存中:

 

 

 单步执行命令,并查看各寄存器的值:

(2)用e命令先将三条指令写入内存中:

后用t命令单步执行 ,因为要计算2的八次方,所以可利用jump的性质,对add进行反复执行,这样循环8次后,ax中存放的是2的八次方的结果:

 

(3)用d命令查看内存单元中内容:

 

 得出生产日期为92年1月1日

用e命令尝试修改内存中的这个生产日期,并查看修改后的结果:

 

 发现并没有任何变化,原因是:

向C0000-FFFFF写入内容等价于向只读存储器中写入内容,是无效的。

(4)先按书中数据向内存中去填写,现象如下:

改变填写数值后现象如下:

 

 

改变填写地址后现象如下:

 

 

 向A0000-BFFFF中写入数据是向显存中写数据,会被显卡输出出来。

实验2:

在使用 a 命令输入指令调试之前,先使用 e 命令将内存单元 0022:0 ~0022:7连续 8 个字
节数据修改为 50H, 51H, 52H, 53H, 54H, 55H, 56H, 57H

(1)先用e命令向内存中写入指令

mov ax,0022

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

mov ax,[0]

 该命令执行后结果如下:

 

ax是16位寄存器,应存放一个字内容,且低地址为字数据地址,所以[0]表示的是0和1两个字节单元,由于我的计算机采用小端的存放方式,所以为5150;

add ax,[2]

该命令执行后结果如下:

 

此时ax内容为A4A2

 

mov bx,[4]

该命令执行后结果如下:

 

 

此时bx内容为5554

add bx,[6]

该命令执行后结果如下:

 

 此时bx内容为ACAA

push ax

该命令执行后结果如下:

 

 压入一个字栈顶上移一个字

push bx

该命令执行后结果如下:

 

 压入一个字栈顶上移一个字

pop ax

该命令执行后结果如下:

 

 

先将SS:SP指向的内存单元送给ax,然后SP下移一个字的位置,以下面的单元为新栈顶

 pop bx

该命令执行后结果如下:

 

先将SS:SP指向的内存单元送给bx,然后SP下移一个字的位置,以下面的单元为新栈顶

push [4]

该命 令执行后结果如下:

 

压栈,栈顶上移

改变的内存单元是2200:00FE,其中内容为:

 

 

push [6]

该命令执行后结果如下:

 

 

压栈,栈顶上移

改变的内存单元是2200:00FC,其中内容为:

 

posted @ 2020-10-15 19:43  bpcl  阅读(172)  评论(2)    收藏  举报