通用数据传送指令MOV
格式:MOV DEST, SRC
功能:把SRC中的数据传输到DEST中
DEST与SRC不能同为存储器寻址(考虑到运算速度)
目的操作数与源操作数的关系,箭头指向的方向为目的操作数(dest)的可用类型,立即数只能用作源操作数(src),存储器,通用寄存器(BX,AX,DX,CX,SI,DI,BP,SP),段寄存器(DS,SS,ES,CS),在指令中的位置可以相互转换;
注意:可以将存储单元(存储器)和通用寄存器的数据送到段寄存器,但不允许向代码段寄存器(CS)传送,因为这样会改变CS的值引起混乱
在日常学习的过程中,只需要将上面这张图记住(知识晶体)就可以很好地判断指令的格式和操作数存储类型是否正确
如:MOV SEG, IMM
其中SEG代表段寄存器,IMM代表立即数,此条指令的含义是将立即数传输到段寄存器中,由上图可知,立即数只能传输到存储器和通用寄存器,而无法直接抵达段寄存器
还有一种错误类型和数据进制有关(低八位和高八位)
MOV AL, 050H
此条指令错误的原因是,AL代表的是低八位的寄存器,是字节,而050H显然是字,所以是非法指令
由于指定的寄存器有明确的字或字节类型,所以对应的立即数也必须是字或字节
在涉及存储单元时,指令中的立即数可以理解为是字,也可以理解为是字节,需要使用
WORD PTR[寄存器] 字
BYTE PTR[寄存器] 字节
进行指定
交换指令XCHG
格式:XCHG REG, REG/MEM
功能:将存储在其中的数据交换, MEM代表存储器,REG代表寄存器
用交换指令实现寄存器和存储器之间的数据交换
XCHG AX, [2000H] 也可以表示为 XCHG [2000H], AX
XCHG AL, [2000H] XCHG [2000H], AL
[2000H] 有方括号,代表传输该存储位置上的内容,可理解为存储器
换码指令XLAT(查表指令)
XLAT LABEL 或 XLAT
使用方法:将BX指定的缓冲区中,由AL指定的位移量处的值取出,送到AL
在做地址计算时,首地址会存储一个数据,后面从1开始逐个加和
十六进制异或前,把它转为二进制数进行计算
能够影响标志寄存器内容的指令是( )
- A
传送类指令 #MOV XCHG XLAT 该类指令除标志寄存器传送指令外,均不影响标志位
- B
I/O类指令 #IN/OUT 输入输出指令
- C
减法类指令 #影响CF , AF, ZF, PF, SF, OF
- D
转移类指令 #该类指令不影响标志位
下列哪一种计算不属于RISC技术( )
- A
指令条数少
- B
寻址方式少
- C
指令格式简单
- D
采用微程序控制器
RISC技术:1.指令条数较少;2.指令格式规整;3.面向寄存器操作;4采用组合逻辑控制器;5.适合流水线技术;6支持编译器优化;7.可在CPU中集中更多的功能
RISC的最大特点:指令系统简单,指令执行速度快,设计实现容易;
CISC技术:1.指令系统庞大;2.指令结构复杂;3.指令的执行时间不均衡;4.CPU结构复杂;5.采用微程序控制
减法指令
减法指令包含: SUB,SBB(无符号数双字长减法运算),DEC(对操作数减1),NEG(求补运算),CMP(compare 比较指令)
格式:当目标操作数是寄存器时,源操作数可以是寄存器,存储器和立即数;
当目标操作数是存储器时,源操作数只能是寄存器和立即数
符合通用数据传送指令MOV中所绘制的脑图关系
乘法指令
无符号乘法指令MUL,有符号乘法指令IMUL
乘法指令被乘数,默认存放在AL或AX中,乘数可以是寄存器,存储器
对CF和OF没有影响,可以判断相乘的结果中高一半是否为有效值,若没有有效值,CF=OF=0
对于IMUL若CF=OF=0,则高一半是低一半的符号扩展位
乘法指令对其他标志位的影响没有定义,即不可预测;并不是没有影响,没有影响是指不改变原来的状态
计算前先把十六进制转为二进制
设BL=05H,要使BL=0AH,应该执行的指令是( )
- A
NOT BL #NOT取反码 FAH
- B
AND BL,BL #逻辑与 相与的两位都是1,结果才是1,否则与的结果为0 05H
- C
XOR BL,0FH #异或,相同为0,不同为1 0AH
- D
OR BL,0FH #逻辑或,相或的两位,有1即为1 0FH