数据传送是最基本、最重要的一种操作实际程序中,使用的比例最高汇编子程例:PROCchangeLEASInum+2MOVCL,num+1MOVCH, 0寄存器、寄存器MOVAX,0MOVDL,10寄存器←内存单元DIMULnext:MOVBH,0寄存器←HO端口MOVBL,[SI]ANDBL,OFH设置寄存器、内存单元的初始值ADDBXAX,SIINCLOOPnextMOVBX, AXzero:RETENDPchange
▲ 数据传送是最基本、最重要的一种操作 实际程序中,使用的比例最高 change PROC LEA SI, num+2 MOV CL, num+1 MOV CH, 0 MOV AX, 0 MOV DI, 10 next: MUL DI MOV BH, 0 MOV BL, [SI] AND BL, 0FH ADD AX, BX INC SI LOOP next zero: MOV BX, AX RET change ENDP 汇编子程例: 寄存器 寄存器 寄存器 内存单元 寄存器 I/O端口 设置寄存器、内存单元的初始值
按传送内容,可分为四类:1.通用数据传送MOV, PUSH, POP, XCHG, XLAT2.地址传送 LEA, LDS, LES3.标志传送PUSHE, POPF, LAHE, SAHF4.输入输出传送IN,OUT在第五章介绍)特点:1.除POPF、SAHF外,其他传送指令对标志位均无影响2.唯一允许以段寄存器做操作数的指令且只有MOV、PUSH、POP这三条允许
▲ 按传送内容,可分为四类: 1. 通用数据传送 MOV, PUSH, POP, XCHG, XLAT 2. 地址传送 LEA, LDS, LES 3. 标志传送 PUSHF, POPF, LAHF, SAHF 4. 输入输出传送 IN, OUT (在第五章介绍) ▲ 特点: 1. 除POPF、SAHF外,其他传送指令对标志位均无影响 2. 唯一允许以段寄存器做操作数的指令 且只有MOV、PUSH、POP这三条允许
1.通用传送指令 MOV、PUSH、POP、XCHG、XLAT1)MOV传送指令格式MOVdst, src执行(dst)←一(src)reg/mem/segreg <一 regreg/segreg1mem可实现reg/memsegregdatareg/mem
1. 通用传送指令 MOV、PUSH、POP、XCHG、XLAT reg/mem/segreg ← reg reg/segreg ← mem reg/mem ← segreg reg/mem ← data 可实现 1)MOV传送指令 格式 MOV dst,src 执行 ( dst ) ← ( src )
例:Dreg/mem/segreg一reg通用寄存器/存储器/段寄存器一通用寄存器MOVAL,BLMOV[BX 1,ALMOVDS,AX②reg/segreg + mem通用寄存器/段寄存器一存储器MOVAL,「BXIMOV DS,[BX+SI]③reg/mem←通用寄存器/存储器一段寄存器segregMOV BX,CSMOV IBXI,DS④reg/mem←data通用寄存器/存储器←一立即数Al, 9MOVMOVBX, OFFSETbufferMOV[value l, 0MOVWORD PTR 「BX1,1
例 : ①reg/mem/segreg ← reg 通用寄存器/存储器/段寄存器←通用寄存器 MOV AL , BL MOV [ BX ] , AL MOV DS , AX ②reg/segreg ← mem 通用寄存器/段寄存器← 存储器 MOV AL , [ BX ] MOV DS , [ BX+SI ] ③reg/mem ← segreg 通用寄存器/存储器 ← 段寄存器 MOV BX , CS MOV [ BX ] , DS ④reg/mem ← data 通用寄存器/存储器 ←立即数 MOV Al , 9 MOV BX , OFFSET buffer MOV [ value ] , 0 MOV WORD PTR [ BX ] , 1
MOV指令特点及注意事项:双操作数指令(注意双操作指令的特点)可进行字节或字传送不允许存储器传送到存储器MOV[BX],valueMOV[D]],[S]MOVAX,valueMOV[BXI, AXMOVAL,[SI]MOV[DI],AL
MOV指令特点及注意事项: ⚫ 双操作数指令 (注意双操作指令的特点) ⚫ 可进行字节或字传送 ⚫ 不允许存储器传送到存储器 MOV [ BX ] , value MOV [DI], [SI] MOV AX ,value MOV [ BX ] ,AX MOV AL ,[SI] MOV [ DI ] ,AL