1、实验任务
①使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运算情况填空。
mov ax,0021 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= 00FE ;修改的内存单元的地址是 2200:FE到FF 内容为 62 64 push bx ;sp= 00FC ;修改的内存单元的地址是 2200:FC到FD 内容为 6A 6C pop ax ;sp= 00FE ;ax= 6C6A pop bx ;sp=0100 ;bx= 6462 push [4] ;sp= 00FE ;修改的内存单元的地址是 2200:FE到FF 内容为 34 35 push [6] ;sp= 00FC ;修改的内存单元的地址是 2200:FC到FD 内容为 36 37
数据段被赋值为0021,栈段地址被赋为2200
先执行指令使ax,bx得到数据6462,6c6a,然后将ax,bx数据存入栈中,通过pop进行数据交换,
之后通过push将数据段中0021:0004和0021:0006的数据存入段中
②仔细观察图中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变。
-t执行了两条指令:mov ss,ax和mov sp,10,mov sp,10是让2000:0000-2000:000F为栈空间,初始化栈顶,让2000:0000-2000:000f里面数据改变