90 likes | 305 Views
算术运算类指令. 一、 指令特点 二、 不带进位的加法指令 三、 带进位的加法指令 四、 带借位的减法指令 五、 加 1 指令 六、 减 1 指令 七、 乘、除法指令 八、 十进制调整指令. 主讲:吴政江. 一、指令特点. 1 、包括加、减、乘、除基本运算共 24 条指令; 2 、除加 1 、减 1 指令外,对 PSW 中的 Cy 、 Ac 、 Ov 、 P 四个标志位都有影响; 3 、助记符: ADD 、 ADDC 、 SUBB 、 INC 、 DEC 、 DA 、 MUL 和 DIV 等 8 种。. 二、 不带进位的加法指令.
E N D
算术运算类指令 一、指令特点 二、不带进位的加法指令 三、带进位的加法指令 四、带借位的减法指令 五、加1指令 六、减1指令 七、乘、除法指令 八、十进制调整指令 主讲:吴政江
一、指令特点 1、包括加、减、乘、除基本运算共24条指令; 2、除加1、减1指令外,对PSW中的Cy、Ac、Ov、P四个标志位都有影响; 3、助记符:ADD、ADDC、SUBB、INC、DEC、DA、MUL和DIV等8种。
二、不带进位的加法指令 • ADD A,#data;A←(A)+ data • ADD A,Rn ;A←(A)+ (Rn) • ADD A,@Ri ;A←(A)+(( Ri)) • ADD A,direct ; A←(A)+ (direct) • 功能:把源操作数和A中的数相加,其结果仍存在A中。 • 对PSW中各位的影响: • 若D7位有进位,则Cy=1,否则Cy=0; • 若D3位有进位,则Ac =1,否则Ac =0; • 若D6和D7中有且只有一个有进位,则Ov=1,否则Ov=0,即Ov=D6 CyD7Cy; • 若结果A中1的个数为奇数,则P=1,否则P=0。 • 例3-16
三、带进位的加法指令 • ADDC A,#data;A←(A)+ data+ Cy • ADDC A,Rn ;A←(A)+ (Rn)+ Cy • ADDC A,@Ri ;A←(A)+(( Ri))+ Cy • ADDC A,direct ; A←(A)+(direct)+ Cy • 功能:把源操作数和A中的内容及Cy中的值相加,其结果仍存在A中。 • 对PSW中各位的影响:与ADD指令相同。 • 作用:一般用于多字节数的加法运算,低字节相加时可能产生进位,可以通过带进位加法指令将低字节的进位加到高字节上去。高字节求和时必须使用带进位的加法指令。 • 例3-17、例3-18
四、带借位的减法指令 • SUBB A,#data;A←(A)- data- Cy • SUBB A,Rn ;A←(A)-( Rn) - Cy • SUBB A,@Ri ;A←(A)-(( Ri)) - Cy • SUBB A,direct ; A←(A)-(direct)- Cy • 功能:把A中的内容减去源操作数所指出的内容和进位位标志Cy的值,差存入A中。 • 对PSW中各位的影响: • 若D7位有进位(借位),则Cy=1,否则Cy=0; • 若D3位有进位(借位) ,则Ac =1,否则Ac =0; • 若D6和D7中有且只有一个有进位(借位) ,则Ov=1,否则Ov=0; • 若结果A中1的个数为奇数,则P=1,否则P=0。 • 例3-19
五、加1指令 • INC A ;A←(A)+1 • INC Rn ; Rn ←( Rn )+1 • INC @Ri ;( Ri)←(( Ri))+1 • INC direct ; direct←( direct)+1 • INC DPTR ;DPTR←(DPTR)+1 • 功能:将源操作数所指定的单元或寄存器中的内容加1,其结果仍送回原操作单元中。前四条是8位数加1指令,最后一条是唯一的16位数加1指令。只有第一条指令对PSW中的奇偶标志位P产生影响,其余指令不会对PSW的任何标志位产生影响。 • 例3-20
六、减1指令 • DEC A ;A←(A)-1 • DEC Rn ; Rn ←( Rn )-1 • DEC @Ri ;( Ri)←(( Ri))-1 • DEC direct ; direct←( direct)-1 • 功能:将源操作数所指定的单元或寄存器中的内容减1,其结果仍送回原操作单元中。对PSW的影响同INC指令。 • 例3-21
七、乘、除法指令 • 1、乘法指令 • MUL AB;BA←(A)X(B) • 功能:把A和B中两个8位无符号数相乘,得到16位积,低8位存放在A中,高8位存放在B中。 • 对PSW中各位的影响:若积大于255(FFH),即B的内容不为0时,则Ov=1,否则Ov=0;Cy总是清零;P由A中1的个数的奇偶性确定;对Ac位无影响。(例3-21) • 2、除法指令 • DIV AB;A(商)…B(余数)←A/B • 功能:把A中的8位无符号整数除以B中的8位无符号整数,结果商存放在A中,余数存放在B中。 • 对PSW中各位的影响: Cy总是清零; Ac位无影响; P由A中1的个数的奇偶性确定;若除数为0(B=0),此时Ov=1,说明除法溢出,否则Ov=0。(例3-23)
八、十进制调整指令 • DA A;若Ac=1或A3~0>9,则A3~0← A3~0+6(A←A+06H);若Cy=1或A7~4>9,则A7~4← A7~4+6(A←A+60H)(由CPU自动判断并执行) • 功能:在进行BCD码加法运算时,用来对BCD码的加法运算结果自动进行修正。一般跟在ADD或ADDC指令之后,用来对加法结果进行修正。 • 为什么要进行修正?在计算机中,十进制数字0~9是用BCD码来表示的。而计算机在进行运算时是按二进制规则进行的(只有ADD、ADDC两条二进制加法指令)。对于4位二进制数有16种状态,对应16个数字,而十进制只用其中的10种状态来表示0~9,因而按二进制规则运算就可能导致错误的结果。因此,必须用DA A指令进行调整。 • 例3-24、例3-25