文档详情

汇编,ASM,MASM,计算机,编程第3章.ppt

发布:2017-06-19约2.94万字共140页下载文档
文本预览下载声明
1、与REP配合工作的 MOVS/STOS/LODS/INS/OUTS 格式: REP MOVS / STOS / LODS /INS/OUTS 执行操作: (1) 如(CX/ECX)= 0则退出REP,否则转(2)       (2) (CX /ECX) ? (CX /ECX) -1 (3) 执行MOVS / STOS / LODS/INS/OUTS       (4) 重复(1) ~ (3) MOVS 串传送指令 MOVS DST, SRC 须指明传送的是字节、字、双字 MOVSB (字节) MOVSW (字) MOVSD (双字) 例:MOVS ES: BYTE PTR [DI], DS: [SI] 执行操作:(1) ((DI)) ← ((SI)) (2) 字节操作:(SI)←(SI)±1, (DI)←(DI)±1 字操作: (SI)←(SI)±2, (DI)←(DI)±2 双字操作:(SI)←(SI)±4, (DI)←(DI)±4 方向标志DF=0时用 +,DF=1时用 - 。 REP MOVS:将数据段中的整串数据传送到附加段中。 源串(数据段)→ 目的串(附加段) 执行REP MOVS之前,应先做好: (1)首地址(末地址)→ SI (2)目的串首地址(末地址)→ DI (3)串长度 → CX (4)建立方向标志(CLD使DF=0,STD使DF=1) 注意: 源串必须在数据段中,目的串必须在附加段中,但源串可以使用段跨越前缀来修改 (SI)? 低地址 高地址 数据段 附加段 (SI)? ?(DI) ?(DI) DF=0 向前 DF=1 向后 例 datarea segment mess1 db ‘personal_computer’ datarea ends extra segment mess2 db 17 dup (?) extra ends code segment … lea si, mess1 lea di, mess2 mov cx, 17 cld rep movsb … code ends lea si, mess1+16 lea di, mess2+16 mov cx, 17 std rep movsb STOS存入串指令 STOS DST STOSB (字节) STOSW (字) STOSD (双字) 执行操作:字节操作:((DI))←(AL), (DI)←(DI)±1 字操作: ((DI))←(AX), (DI)←(DI)±2 双字操作: ((EDI))←(EAX), (EDI)←(EDI)±4 例:把附加段中的5个字节缓冲区置为20H lea di, mess2 mov al, 20H mov cx, 5 cld rep stosb LODS从串取指令 LODS SRC LODSB (字节) LODSW (字) LODSD(双字) 执行操作: 字节操作:(AL)←((SI)), (SI)←(SI)±1 字操作: (AX)←((SI)), (SI)←(SI)±2 双字操作: (EAX)←((ESI)), (ESI)←(ESI)±2 注意: * LODS指令一般不与REP联用 * 源串必须在数据段中,目的串必须在附加段中, 但源串允许使用段跨越前缀来修改。 * 不影响条件标志位 例:x、y、z 均为双精度数,分别存放在地址为X, X+2; Y, Y+2;Z, Z+2的存储单元中,用指令序列实现
显示全部
相似文档