文档详情

IBMPC汇编程序设计第3章.ppt

发布:2019-03-21约2.59万字共146页下载文档
文本预览下载声明
例:MOV BX,offset table ; (BX)=0040H MOV AL,3 XLAT 指令执行后 (AL)=33H 逻辑左移SHL(Shift Logical Left)和逻辑右移SHR(Shift Logical Right)。 它们的指令格式如下: SHL/SHR OPR, CL/Imm 受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。 逻辑左移/右移指令只有它们的移位方向不同,移位后空出的位都补0。 CF OPR 0 CF OPR 0 逻辑左移 逻辑右移 逻辑移位指令常用于无符号数*2或/2 循环移位指令有: 循环左移ROL(Rotate Left)和循环右移ROR(Rotate Right)。 指令的格式:ROL/ROR OPR, CL/Imm 受影响的标志位:CF和OF 循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位。 CF OPR CF OPR 循环左移 循环右移 带进位的循环移位指令有:带进位的循环左移RCL(Rotate Left Through Carry)和带进位的循环右移RCR(Rotate Right)。 指令的格式:RCL/RCR OPR, CL/Imm 受影响的标志位:CF和OF 带进位的循环左移/右移指令只有移位的方向不同,它们都用原CF的值填补空出的位,移出的位再进入CF。 CF OPR CF OPR 带进位循环左移 带进位循环右移 2. 移位指令 例:移位指令可实现乘法功能 MOV SI,AX SHL SI,1 ;SI←2×AX ADD SI,AX ;SI←3×AX MOV DX,BX MOV CL,03H SHL DX,CL ;DX←8×BX SUB DX,BX ;DX←7×BX ADD DX,SI ;DX←7×BX+3×AX 注:(1)逻辑左移一位相当于无符号数乘以2, (2)逻辑右移一位相当于无符号数除以2。 3.3.4 串处理指令 字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的。字符串操作指令可对内存单元按字节或字进行处理,并能根据操作对象的字节数使变址寄存器SI(和DI)增减1或2。具体规定如下: (1)当DF=0时,变址寄存器SI(和DI)增加1或2; (2) 当DF=1时,变址寄存器SI(和DI)减少1或2。 在后面各指令中,有关变址寄存器都按上述规定进行增减,不再一一说明。 1. 与 REP 配合工作的 MOVS / STOS / LODS的指令 重复前缀指令REP 重复前缀指令是重复其后的字符串操作指令,重复的次数由CX来决定。其一般格式为: REP  MOVS / STOS / LODS 重复前缀指令的执行步骤如下: (1)判断:CX=0; (2)如果CX=0,则结束重复操作,执行程序中的下一条指令; (3)否则,CX=CX-1(不影响有关标志位),并执行其后的字符串操作指令,在该指令执行完后,再转到步骤(1)。 字符串传送指令(Move String Instruction) 功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。即: ①(DS:[SI])→ES:[DI]。 ② 当DF=0时,(SI)和(DI)增量。 当DF=1时,(SI)和(DI)减量。 指令的格式: MOVS? DST,SRC (需在操作数中表明数据格式) MOVSB (字节) MOVSW (字) 注 字节操作:(SI)←(SI)±1, (DI)←(DI)±1 字 操 作: (SI)←(SI)±2, (DI)←(DI)±2 REP MOVS:将数据段中的整串数据传送到附加段中。 源串(数据段)→ 目的串(附加段) 执行 REP MOVS 之前,应先做好: (1) 源串首地址(末地址)→ SI (2) 目的串首地
显示全部
相似文档