一.数据传送类指令
作用:把数据、地址或立即数传送到寄存器或存储单元中
(1)通用传送指令
格式:MOV DST(目的操作数),SRC(源操作数)
mov D←S;(D)==(S)
功能:将源操作数的(S)内容传送给目的操作数(D),源操作数不变
注:MOV指令不改变标志位。
两个操作数的位数需要匹配。即8位配8位,16位配16位
例子
MOV AX, 1010H
MOV BL, 58H
MOV BYTE PTR [BX], 10H
MOV WORD PTR [BX], 2255H
MOV BYTE PTR [SI+20H], 10H
mov指令用法格式:
①数据→寄存器(mov reg ,data)
如:mov ax,1010H
②数据→存储单元(mov mem,data)
如: mov ds:[0],4c20H
③寄存器→寄存器(mov reg1,reg2)
(互传:reg1→reg2,reg2→reg1)
如:mov bx,ax; mov ax,bx
④存储单元→寄存器(mov reg,mem)
(互传:mov mem,reg;mov reg,mem)
如:mov ds:[0],bx; mov bx,ds:[0]
⑤段寄存器→寄存器
(mov segreg,reg)
(互传: mov segreg,reg;mov reg,segreg)
如:mov ds,bx;mov bx,ds
⑥段寄存器→存储单元
(mov segreg,mem)
(互传:mov segreg,mem; mov mem,segreg)
⑦累加器→存储器((mov ac,mem)
(互传:mov ac,mem;mov mem,ac)
格式:movsx DST,SRC.
执行操作:(DST)←符号扩展(SRC)
movsx:有两种格式:
mov reg1,reg2;
mov reg,mem;
该指令SRC可以是8位或16位的reg或mem的内容,而DST必须是16位或32位。8位→16位or32位,16位→32位
movsx不影响标志位。
格式:movsx DST,SRC.
执行操作:(DST)←零扩展(SRC)
movsx:有两种格式:
mov reg1,reg2;
mov reg,mem;
该指令SRC可以是8位或16位的reg或mem的内容,而DST必须是16位或32位。8位→16位or32位,16位→32位
movzx不影响标志位。
movsx与movzx的SRC<DST的位长。
格式:push SRC
执行操作:
16位指令:(SP)←(SP-2)
((SP)+1,(SP))←(SRC)
32位指令:(ESP)←(ESP-4)
( (ESP)+3,(ESP)+2,(ESP)+1,(ESP))←(SRC)
格式:pop DST
执行操作:
16位指令:
(DST)←((SP)+1,(SP))
(SP)←(SP+2)
32位指令:
(DST)←( (ESP)+3,(ESP)+2,(ESP)+1,(ESP))
(ESP)←(ESP+4)
堆栈:后进先出。用SS:SP定位(16位用SP,32位用ESP)。
push指令四种格式:
push reg;
push mem;
push data;//不允许使用立即数寻址
push segreg.
pop指令四种格式:
pop reg;
pop mem;
pop segreg. //不允许用CS
联系客服