实验二:用机器指令和汇编指令编程
实验任务(1)
1.使用 e 命令修改 0021:0~0021:f 数据,及修改后查看是否正确写入的操作
修改数据并查看
2.使用 a 命令输入的 p74 指令
输入汇编指令
3.每一行指令单步调试
单步执行结果
4.P74 中指令执行后各个寄存器填空结果
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=6C4A
push ax ;sp=00FE; 修改的内存单元的地址是 2200:00FE 内容为6462
push bx ;sp=00FC;修改的内存单元的地址是 2200:00FC 内容为6C4A
pop ax ;sp=00FE;ax=6C6A
pop bx ;sp=0100;ax=6C6A
push [4] ;sp=00FE; 修改的内存单元的地址是 2200:00FE 内容为3534
push [6] ;sp=00FC; 修改的内存单元的地址是 2200:00FC 内容为3736
结论:通过对比发现,实际运行结果和理论两者一致
实验任务(2)
图 3.19 中使用 a命令输入的 7 行指令,使用 e 命令修改 2000:0~2000:f的值,及修改后查看的部分
执行命令,单步调试,并查看指定内存的变化
内存中值改变的原因:程序运行过程中堆栈段的地址发生了改变
前三行代码的意义:安排 2000:0000~2000:000F 为栈空间, 初始化栈顶为2000:10