使用EdSim51仿真软件练习10课:单片机数据传送类指令。
首先汇编后没有报告错误,如下图所示
然后执行下面这条指令:
将十进制数据 12,也就是十六进制的 0x0CH 送入到 RAM 中地址是 30H 的单元,结果如下图所示
接着执行下面这条指令:
和第一条指令类似,将十进制数据 23,也就是十六进制的 0x17H 送入到 RAM 中地址是 31H 的单元,结果如下图所示
下一步执行下面这条指令:
完成第一次压栈操作,先将堆栈指针 SP——0x07H 进行加一操作,得到 0x08H,然后将 RAM 中地址是 30H 的单元的内容——0x0CH 推入以 SP 此时值——0x08H 为地址的 RAM 单元,结果如下图所示
紧接着执行下面这条指令:
完成第二次压栈操作,先将堆栈指针 SP——0x08H 进行加一操作,得到 0x09H,然后将 RAM 中地址是 31H 的单元的内容——0x17H 推入以 SP 此时值——0x09H 为地址的 RAM 单元,结果如下图所示
倒数第 2 条指令被执行:
开始进行出栈,先将以 SP 此时值——0x09H 为地址的 RAM 单元内容——0x17H 弹出到 RAM 中地址是 30H 的单元,然后堆栈指针 SP——0x09H 进行减一操作,得到 0x08H,结果如下图所示
最后一条指令被执行:
实现第二次出栈,先将以 SP 此时值——0x08H 为地址的 RAM 单元内容——0x0CH 弹出到 RAM 中地址是 31H 的单元,然后堆栈指针 SP——0x08H 进行减一操作,得到 0x07H,结果如下图所示
从上图中的“Data Memory”可以看到,最后 RAM 单元 30H 地址的内容是 0x17H——十进制的 23,RAM 单元 31H 地址的内容是 0x0CH——十进制的 12,也就是说执行完上面的 6 条指令,RAM中地址为 30H、31H 单元的内容进行了交换。 |