指出下列各指令中寻址方式的错误,并说明错误的原因
(2) MOV [CX] , AH (6) POP CL
(3) ADD AX , BL (7) ADD AX , [DL]
(4) MOV [BX+BP] , AL 展开
1、MOV 100H , AX ,立即数不能当做目的地。
2、MOV AH , 1000,AH 容纳不下1000。
3、MOV [CX] , AH CX,不能当做地址指针。
4、 ADD AX , BL 参加加法运算的数字位数,必须相同,现在AX、BL位数不同。
如:MOV AX,#5678H 注意:立即数只能作为源操作数,不能作为目的操作数。
指令的地址字段指出的不是操作数的地址,而是操作数本身,这种寻址方式称为立即寻址。立即寻址方式的特点是指令执行时间很短,因为它不需要访问内存取数,从而节省了访问内存的时间。
扩展资料:
各指令中寻址方式的原理:
1、顺序寻址方式
由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令地顺序进行。也就是说,从存储器取出第1条指令,然后执行这条指令;接着从存储器取出第2条指令,再执行第二条指令;接着再取出第3条指令。
这种程序顺序执行的过程,称为指令的顺序寻址方式。为此,必须使用程序计数器(又称指令计数器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。
2、跳跃寻址方式
当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
注意是否跳跃可能受到状态寄存器的操作数的控制,而跳跃到的地址分为绝对地址(由标记符直接得到)和相对地址(对于当前指令地址的偏移量),跳跃的结果是当前指令修改PC程序计数器的值,所以下一条指令仍是通过程序计数器PC给出。
参考资料来源:百度百科-寻址方式
(5) MOV AH , 1000 AH 容纳不下 1000
(2) MOV [CX] , AH CX 不能当做地址指针
(6) POP CL 堆栈操作是16位数的,CL仅有8位数
(3) ADD AX , BL 参加加法运算的数字位数,必须相同,现在AX、BL位数不同
(7) ADD AX , [DL] 用DL指出地址,不可,应该用16位数的,如DX。
(4) MOV [BX+BP] , AL BX、BP,不可合用