实验二
实验任务(一)
实验前要求我们将书本P74的程序段按理论分析,将结果进行填空。之后用Debug,将该程序段写入内存,逐条执行之后,
根据指令执行后的实际运行的结果填空如下。
mov ax,0021
mov ax , ffff
mov ds , ax
mov ax , 2200
mov ss , ax
mov sp , 0100
mov ax , [0] ;ax=3130
add ax , [2] ;ax=6462
mov bx , [4] ;bx=3534
add bx , [6] ;bx=6C6A
push ax ;sp=00FEH ;修改的内存单元的地址是2200:00FE内容为6462
push bx ;sp=00FCH ;修改的内存单元的地址是2200:00FC内容为6C6A
pop ax ;sp=00FEH ;ax=6C6A
pop bx ;sp=0100H ;bx=6462
push [4] ;sp=00FE ;修改的内存单元的地址是2200:00FE内容为3534
push [6] ;sp=00FC ;修改的内存单元的地址是2200:00FC内容为3736
在使用a指令调试前,先使用e命令将内存单元0021:0~0021:7连续8个字节数据修改为30H,31H,32H,33H,34H,35H,36H,37H,最后用D命令查看是否正确。
接着我们再使用a指令去调试每一步的指令
实验任务(二)
使用 a命令输入 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,及修改后查看的部分
单步执行调试,并且每步调试后都用d命令查看2000:0~2000:f的值:
从中我们发现前三行的指令的功能为:把0~2000:f这段空间当做栈段,初始化栈顶
mov sp,0010H :设置栈顶的偏移地址,栈为空,sp=0010H
栈顶为2000:0010,栈底为2000:000E
小结
在完成实验的过程中,由于操作不熟练经常出现失误,例如多敲回车。。(输完一行总是情不自禁敲一个回车)每周如果只花课堂上一节课的时间去学习汇编,好像是真的不可能学好的。课外还需要自己学习。这一章实验依旧花了很久时间,自己思考的也不够,继续努力吧。