实验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,其中内容为:


浙公网安备 33010602011771号