微机原理串讲
- 格式:ppt
- 大小:1015.00 KB
- 文档页数:89
逻辑运算和移位指令包括逻辑运算、移位和循环移位指令¾逻辑运算指令包括AND、TEST、OR、XOR、NOT 五条指令(1)NOT OPRD9求反并将结果送回。
9操作数可以是8位或16位的寄存器或存贮器。
9对标志位不产生影响。
例:NOT AL(2)AND指令9一般格式:AND OPRD1,OPRD29功能:对操作数进行按位相“与”的逻辑运算。
9操作数可以是字节或字。
9目的操作数、源操作数的类型与加法指令相同。
9应用场合:使操作数若干位不变而某些位为09标志位:CF=0,OF=0PF、SF、ZF反映操作的结果,AF未定义例:AND AL,0FHAND AX,BXAND SI,BPAND AX,DATA_WORDAND DX,BUFFER[SI+BX]AND DATA_WORD,00FFHAND BLOCK[BP+DI],DX(3) TEST指令9一般格式:TEST OPRD1,OPRD29功能与AND指令相同,但不影响操作数,反映在标志位上9场合:常用于位测试,常与条件转移指令一起使用例:IN AL,PORTTEST AL,00101010BJNZ NEXT …NEXT:…(4) OR指令9一般格式: OR OPRD1,OPRD2 9操作数类型以及标志位均与AND指令相同9操作数的若干位不变,某些位置1例:OR AL,30HOR AX,00FFHOR BX,SIOR BX,DATA_WORDOR BUFFER,SIOR BUFFER[BX+SI],8000H(5) XOR指令9一般形式为XOR OPRD1,OPRD2 9操作数类型以及标志位均与AND指令相同9使操作数若干位维持不变,而某些位取反的情形。
例:XOR AL,0FHXOR AX,BXXOR DX,SIXOR CX,CONNT_WORDXOR BUFFER,DIXOR BUFFER[BX+SI],AXXOR AX,AXXOR SI,SI¾移位指令移位指令:逻辑左移SHL、算术左移SAL、逻辑右移SHR、算术右移SAR移位指令的操作对象:8位或16位的寄存器或存储器可以移一位,可以移多位,移多位时,移动位数必须放在寄存器CL中逻辑左移与算术左移完全相同(1) SAL/SHL指令9每移位一次在右面最低位补0 9左面的最高位移入标志位CF标志位的影响:若移动一位,则移位后,若操作数的最高位与CF不相等,则OF=1,否则OF=0,即若移位使得符号位发生变化,则OF=1 ;若移动多位,OF不确定。
实验四串操作指令程序实验一、实验目的1. 熟悉五种串操作指令的功能,会编写常用的串操作应用程序。
2. 会使用DEBUG 命令查看串操作运行的结果。
二、实验环境1. 硬件:PC 微机2. 软件:Masm for Windows 汇编集成开发环境三、实验讲义串指连续存放在存储器中的一些数据字节、字或者双字。
串操作允许对程序连续存放的数据块进行操作。
这是唯一一种可以从存储器到存储器的指令。
源串一般存放在数据段,偏移地址由SI 指定;目标串必须在附加段,偏移地址由DI 指定。
在每次进行串操作后,SI 和DI 两个指针会自动修改。
修改的是增量方向还是减量方向由标志位DF 决定,DF=0 为增量操作,DF=1 为减量操作。
CX 中存放的是数据块的长度,可在CX 前加重复前缀标志,对串进行连续操作。
执行串指令之前,一般先进行如下操作:源串首地址(末地址)→ SI目的串首地址(末地址)→ DI串长度→ CX建立方向标志DF1. 重复前缀标志助记符判断条件说明REP CX 0 CX=CX-1,若CX 0 则重复REPE 或REPZ CX 0 且ZF=1 CX=CX-1,若CX 0 且ZF=1 则重复REPNE 或REPNZ CX=0 且ZF=0 EX=CX-1,若CX 0 且ZF=0 则重复2. 方向标志指令方向标志由标志位DF 决定,有CLD 和STD 两种指令。
CLD 将DF 置0,地址为增量操作。
STD 将DF 置1,地址为减量操作。
3. 串传送指令格式: [REP] MOVS DESTS, SRCS[REP] MOVSB/ MOVSW / MOVSD功能:将DS:SI 中的源串数据传送到ES:DI 规定的目的串单元中。
加重复前缀REP 可实现连续存放的数据块的传送。
例1:将源串中前三个字节的数据传送到目的串。
源串在数据段(DATAS)中,存放在SRC 单元中;目的串在附加数据段(EDATAS)中,存放在DEST 单元中。
¾程序控制指令主要指程序转移指令,转移类指令可改变CS与IP的值(段间转移)或仅改变IP 的值(段内转移),以改变指令执行的顺序。
1.无条件转移、调用和返回指令2.条件转移指令3.循环控制指令4.软中断指令及中断返回指令1.无条件转移、调用和返回指令转移有段内转移和段间转移段内转移:CS不变,IP改变段间转移:CS、IP均改变(1)无条件转移指令JMP9指令的一般格式为JMP OPRD 其中OPRD是转移的目的地址9包括直接转移和间接转移9直接转移指令直接给出转移目的地址,包括短程(SHORT)、近程(NEAR)和远程(FAR)3种形式9间接转移指令的目的地址由存储器或寄存器给出,包括段内间接转移和段间间接转移9直接转移的3种形式•短程转移JMP SHORT NEXT其中目的地址与JMP指令所处地址的距离位于范围-128~127NEXT是本段内的一个标号。
如果段内标号定义在前,并且目的地址与JMP指令所处地址的距离位于范围-128~127内,则SHORT 可以省略。
•近程转移JMP NEAR PTR LOOP1或JMP LOOP1其中目的地址与JMP指令应处于同一地址段范围之内,NEAR往往予以省略。
•远程转移JMP FAR PTR LOOP2远程转移是段间转移,目的地址与JMP指令所在地址不在同一段内,执行该指令时要修改CS和IP的内容。
9间接转移指令的两种形式•段内间接转移JMP CXJMP WORD PTR[BX]指令的操作是一个16位的寄存器或存储器地址。
•段间间接转移JMP DWORD PTR[BX]该指令指定的双字指针的第一个字单元内容送入IP,第二个字单元内容送入CS。
所定义的单元必须是双字单元。
(2)调用和返回指令9CALL指令调用一个过程或子程序,调用过程或子程序结束后,使用返回指令RET返回主程序。
9过程或子程序有段间(即远程FAR)和段内调用(即近程NEAR)之分,CALL、RET也有FAR和NEAR之分。