1.传送指令mov
图1.1 cl←4,字节传送
图1.2 dx←00ffh,字传送
图1.3 si←0200h,字传送
图1.4 ah←al
2.交换指令XCHG
图2 ax=1199h变成ax=9911h
3.换码指令
图3.1 将首地址为400H的表格中的三号数据(假设为46H)取出
图3.2 不知道如何得出的结果后,再输入另一组数据进行验证
图3.3 通过查找主存中的数据,发现规律,原来xlat是由【bx+al】寻址得出
4.堆栈操作
图4 堆栈操作指令push、pop
应注意sp数据的变换,push时sp+2 ,pop时sp-2
5.地址传送指令
图5.1 有效地址的获取
注:bx+si+0f62=139E,lea传送的是地址而非地址中的数据
图5.2 用mov去传送时,传送的是139e中的数据
6.加法和减法指令
图6.1 加法和减法
图6.2 无符号双字加法和减法
图6.3 求补运算
7.符号扩展指令
图7.1 cbw符号扩展,al符号扩展成ax
图7.2 cwd符号扩展,ax符号扩展成dx
8.乘法和除法指令
图8.1 字节数据乘法:A5H*64H
图8.2 字数据除法:40003H/8000H
9.逻辑运算指令
图9 逻辑运算
10.移位指令
图10.1 数据位移
11.控制转移类指令
图11 采用jz指令,避免add指令改变ax
五、分析与讨论
为何先进先出也可以??
通过这次实验,慢慢的可以让自己提出问题来,问题是很多的,通过验证加上自己的理解还是会解决出很多问题。认真看一遍课本是关键,能把基本概念理清楚,一通就百通了。
这次实验就是堆栈的问题,在上图其实没有相通为何堆栈是遵循“先进后出”,可是实验指令执行“先进先出”也能够实现。观察指针sp也遵循加减2原则,这些观察让我对这些指令印象更加深刻。