文档库 最新最全的文档下载
当前位置:文档库 › 第八讲 算术运算类指令

第八讲 算术运算类指令

第八讲  算术运算类指令
第八讲  算术运算类指令

第八讲算术运算类指令

教学方法:讲授法

教学目的:

1、熟悉数据运算类指令的操作方式特点

2、理解二-十进制调整指令的含义

3、熟练掌握加法指令

教学重点、难点:

加法、减法指令、二-十进制调整指令

无条件转移指令的应用

主要教学内容(提纲):

一、数据运算类指令的操作方式特点

二、算术运算类指令

三、逻辑运算类指令

复习:

direct、@Ri、@DPTR、Rn、#data、(x)、((x))的含义?

讲授要点

§3-3 算术运算类指令

包括:加、减、乘、除;加一、减一。

一、加法指令

ADD A,Rn ;(A)(A)+ (Rn)以下类同。

ADD A,direct

ADD A,@Ri

ADD A,#data

无符号数相加时:若C = 1,说明有溢出(其值> 255)。

带符号数相加时:若OV = D7c⊕D6c = 1,说明有溢出。

ADDC A,Rn ;(A)(A)+(Rn)+(C),以下类同。ADDC A,direct

ADDC A,@Ri

ADDC A,#data

上述四条指令多用于多字节数相加。

INC A ;(A)(A)+1 ,以下类同。

INC Rn

INC direct

INC @Ri

INC DPTR

例1、设(R0)= 7FH;(7EH)= 40H

执行:INC @R0

INC R0

INC @R0 后,

(R0)= 7FH; (7EH)= 00H; (7FH)= 41H.

DA A ;二——十进制调整指令。

执行过程中,CPU能根据加法运算后,累加器中的值和PSW中的AC及C标志位的状况自动选择一个修正值(00H、06H、60H、66H)与原运算结果相加,进行二——十进制调整。

选择修正值的规则:

(A3 ~ 0)> 9时或(AC)= 1时,(A3 ~ 0)(A3 ~ 0)+6

(A7 ~ 4)> 9 或(C) = 1时,(A7 ~ 4)(A7 ~ 4)+ 6

例2、设(A)= 56H 为56的压缩的BCD码数,(R3)= 67H,(CY)=1

执行ADDC A,R3

DA A

结果为:124

注意:1)DA指令只能跟在加法指令后面使用;

2)调整前参与运算的两数是BCD码数;

3)DA指令不能与减法指令配对使用,但可以实现对A中压缩BCD

减一操作。

例3、设(A)=30H(压缩BCD码数),执行:

ADD A,#99H

DA A

后,便实现了30 -1 = 29的操作。

例4、两个4位BCD码相加,一个存放在(31H)(30H);另一个存放在

(33H)(32H);和数拟回存在(31H)(30H)中,试编程实现之。

解:MOV R0,#30H

MOV R1,#32H

MOV A,@R0

ADD A,@R1

DA A

MOV @R0,A

INC R0

INC R1

MOV A,@R0

ADDC A,@R1

DA A

MOV @R0,A

二、减法指令

SUBB A,Rn ;(A)(A)-(Rn)-(C),以下类同。

SUBB A,direct

SUBB A,@Ri

SUBB A,#data

注意:减法之前先清零C。

DEC A ;(A)(A)-1 ,以下类同。

DEC Rn

DEC @Ri

DEC direct

例5、设(R0)=7FH,在内RAM中,(7EH)=00H,(7FH)=40H 执行:DEC @R0

DEC R0

DEC @R0

结果为:(R0)= 7EH,(7EH)=0FFH,(7FH)=3FH。

三、乘法和除法指令

乘法:

MUL AB ;(A)×(B),积的低8位在A中,积的高8位在B中;

C总为0。

除法:

DIV AB ;(A)÷(B),商在A中,余数在B中。

若(B)= 0 ,则结果不定,(OV)= 1,(C)= 0。

例6、试将A中的二进制数转换为3位BCD码,其中,百位数存放于31H单元,十位数和个位数压缩后存于30H单元中。

解;MOV B,#100

DIV AB

MOV 31H,A

MOV A,#10

XCH A,B

DIV AB

SWAP A

ADD A,B

MOV 30H,A

§3-4 逻辑操作类指令

共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。

一、单字节逻辑操作指令

CLR A ;(A)0

CPL A A中8位按位求反。

循环左移、右移指令:

RL A

RLC A

RR A

RRC A

注:左移一位相当于乘2;右移一位相当于除2。

二、双字节逻辑操作指令

“与操作”:

ANL A,Rn ;(A)(A)∧(Rn),以下类同。

ANL A,direct

ANL A,@Ri

ANL A,#data

ANL direct,A

ANL direct,#data

例1、(P1)= 35H,使其高4位输出0,低4位不变。

解;ANL P1,#0FH

此做法称为“屏蔽”位。

“或操作”:

ORL A,Rn ;(A)(A)∨(Rn),以下类同。

ORL A,direct

ORL A,@Ri

ORL A,#data

ORL direct,A

ORL direct,#data

例2、将A中的低3位送入P1中,并且保持P1中高5位不变。

ANL A,#07H

ANL P1,#0F8H

ORL P1,A ;(P1)= P17P16P15P14P13A2A1A0

这称为“数位组合”。

“异或操作”:

XRL A,Rn ;(A)(A)⊕(Rn),以下类同。

XRL A,direct

XRL A,@Ri

XRL A,#data

XRL direct,A

XRL direct,#data

例3、设(P1)= 0B4H = 10110100B,执行:

XRL P1,#00110001B

结果按# 0 0 1 1 0 0 0 1 取反,即:

(P1)= 1 0 0 0 0 1 0 1 B = 85H

这称为“指定位取反”。

在上述ANL、ORL、XRL操作中,用于端口操作时,无论P0 ~ P3是第一,还是第二操作数,都遵循“读—修改—写”端口锁存器的操作。

小结:算术运算类指令都有哪些类型?

逻辑操作分为哪两类操作?

循环移位指令每执行一次,移几位?ANL、ORL、XRL指令有哪些使用技巧

3算术运算指令实验

2.3 算术运算指令实验 一、实验目的 ·掌握单字节的加减法指令的使用。 ·掌握单字节的乘除法指令的使用。 ·掌握用Keil调试汇编源程序的方法。 ·掌握用Proteus调试汇编源程序的方法。 二、实验预备知识 算术运算指令对程序状态寄存器PSW中的相关位会产生不同的影响。具体如下:◇执行加法指令时,当和的第3位或第7位有进位时,分别将AC、CY标志位置1;否则为O。如果第6位向第7位有进位而第7位没有向前进位,或者如果第7位向前有进位而第6位没有向第7位进位,OV=1,否则OV-O。该操作也影响标志位P。 ◇执行减法指令时,如果第7位有借位,则CY置1,否则清O。若第3位有借位,则 AC置1;否则清O。两个带符号数相减,还要考查OV标志,若OV为1,表示差数溢出,即破坏了正确结果的符号位。该操作也影响标志位P。 ◇执行乘法指令时,若乘积大子OFFH,则OV置1,否则清o(此时B的内容为0)。 CY总是被清O。该操作也影响标志位p。 ◇执行除法指令时,若除数(B) -OOH.则结果无法确定,OV置l。CY总是被清O。该操作也影响标志位P。 三、实验内容 将算术运算指令分成两类,分别编写两个小程序,以完成数据的加减法、乘除法运算。 1.参考程序i-hn减法运算 (1)将立即数# B5H、#36H、#89H分别传送至内部RAM区40H、R2、A中。 (2)将内部RAM区40H中的内容与A中的内容相加,然后再与R2中的内容相加,结果存放至内部RAM区50H中。 (3)将A中的内容与内部RAM区40H中的内容相减,结果存放至内部RAM区60H中。 2.参考程序2——乘除法运算 (1>将立即数#75H、#31H分别传送至内部RAM区15H、33H中。 (2)将内部RAM区15H单元的内容与33H单元的内容相乘。 (3)将乘积的高8位和低8位分别传送至内部RAM区31H、30H中。 (4)将内部RAM区15H单元的内容除以33H单元的内容。 (5)将商和余数分别传送至内部RAM区41H、40H中。四、实验参考程序

实验二 算术运算实验

实验二算术运算实验 一、实验目的 1、掌握MASM for Windows 环境下的汇编语言编程环境使用; 2、掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 3、掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志 位的影响及测试方法; 4、掌握无符号数和有符号数运算区别及编程方法; 5、掌握BCD 码调整指令的使用方法 二、软硬件实验环境 1、硬件环境:惠普64 位一体化计算机及局域网; 2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。 三、实验基本原理 算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。 1) 标志位 在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。 表1标志名和状态符号的对照表参照表 2) 加减法指令 ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。 3) 乘除法指令

MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV 表示带符号数除法指令。 4) 符号位扩展指令 CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。 5) BCD码的调整指令 在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。 组合的BCD码加法调整指令DAA; 组合的BCD码减法调整指令DAS; 非组合的BCD码加法调整指令AAA; 非组合的BCD码减法调整指令AAS; 乘法的非组合BCD码调整指令AAM; 除法的非组合BCD码调整指令AAD。 8088/8086指令系统提供了实现加、减、乘、除运算指令,可参照表2所示内容。 表2数据类型的数据运算表 四、实验步骤与内容 1)对于表格中三组无符号数,试编程求这三组数的指定运算结果,并考虑计算结果对标志寄存器中状态标志位的影响: ①实验分析 本实验要求简单,仅对指定三组数进行基本运算。只需使用ADD、SUB、MUL、DIV四个运算命令,并以MOV命令作为数值转移的手段即可。运算结果和状态标志的情况可以通过debug调试中的T命令进行逐步查看。 需要注意的主要有以下几点: 1.在进行加法和乘法运算时,会出现对高位的进位扩展。因此,在记录结

第八讲 算术运算类指令

第八讲算术运算类指令 教学方法:讲授法 教学目的: 1、熟悉数据运算类指令的操作方式特点 2、理解二-十进制调整指令的含义 3、熟练掌握加法指令 教学重点、难点: 加法、减法指令、二-十进制调整指令 无条件转移指令的应用 主要教学内容(提纲): 一、数据运算类指令的操作方式特点 二、算术运算类指令 三、逻辑运算类指令 复习: direct、@Ri、@DPTR、Rn、#data、(x)、((x))的含义? 讲授要点 §3-3 算术运算类指令 包括:加、减、乘、除;加一、减一。 一、加法指令 ADD A,Rn ;(A)(A)+ (Rn)以下类同。 ADD A,direct ADD A,@Ri ADD A,#data 无符号数相加时:若C = 1,说明有溢出(其值> 255)。 带符号数相加时:若OV = D7c⊕D6c = 1,说明有溢出。 ADDC A,Rn ;(A)(A)+(Rn)+(C),以下类同。ADDC A,direct ADDC A,@Ri ADDC A,#data 上述四条指令多用于多字节数相加。 INC A ;(A)(A)+1 ,以下类同。 INC Rn INC direct INC @Ri INC DPTR 例1、设(R0)= 7FH;(7EH)= 40H

执行:INC @R0 INC R0 INC @R0 后, (R0)= 7FH; (7EH)= 00H; (7FH)= 41H. DA A ;二——十进制调整指令。 执行过程中,CPU能根据加法运算后,累加器中的值和PSW中的AC及C标志位的状况自动选择一个修正值(00H、06H、60H、66H)与原运算结果相加,进行二——十进制调整。 选择修正值的规则: (A3 ~ 0)> 9时或(AC)= 1时,(A3 ~ 0)(A3 ~ 0)+6 (A7 ~ 4)> 9 或(C) = 1时,(A7 ~ 4)(A7 ~ 4)+ 6 例2、设(A)= 56H 为56的压缩的BCD码数,(R3)= 67H,(CY)=1 执行ADDC A,R3 DA A 结果为:124 注意:1)DA指令只能跟在加法指令后面使用; 2)调整前参与运算的两数是BCD码数; 3)DA指令不能与减法指令配对使用,但可以实现对A中压缩BCD 减一操作。 例3、设(A)=30H(压缩BCD码数),执行: ADD A,#99H DA A 后,便实现了30 -1 = 29的操作。 例4、两个4位BCD码相加,一个存放在(31H)(30H);另一个存放在 (33H)(32H);和数拟回存在(31H)(30H)中,试编程实现之。 解:MOV R0,#30H MOV R1,#32H MOV A,@R0 ADD A,@R1 DA A MOV @R0,A INC R0 INC R1 MOV A,@R0 ADDC A,@R1 DA A MOV @R0,A 二、减法指令 SUBB A,Rn ;(A)(A)-(Rn)-(C),以下类同。 SUBB A,direct SUBB A,@Ri SUBB A,#data

算术运算符练习题2 阅读程序写结果

算术运算符练习题2 阅读程序写结果 题1: #include using namespace std; int main() { int x; cin>>x; cout<<"10x="<<10*x< using namespace std; int main() { int x; scanf("%d",&x); printf("8x=%d\n",8*x); return 0; } 输入:4 输出: 题3: #include using namespace std; int main() { int x; cin>>x; y=13*x; cout<<"y="< using namespace std; int main() { int a,b,c; scanf("%d%d",&a,&b); c=2*a+3*b; printf("c=%d",c); return 0; } 输入:2 3 输出: 题5: #include using namespace std; int main() { int m,n; m=7775; n=m%100; cout< using namespace std; int main() { int m,n; m=567; n=m/10%10; printf("%d",n); return 0; } 输出:

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移;

练习(算术运算及逻辑移位指令3题目)

练习 算术运算与逻辑移位指令 1、若AX=0ABCDH,BX=7F8FH,CF=1。分别执行0886 CPU指令 (1)ADD AX,BX (2)ADC AX,BX (3)SBB AX,BX (3)NEG AX (5)AND AX,BX (6)OR AX,BX (7)XOR AX,BX (8)IMUL BL 后,AX寄存器中的内容,并指出标志寄存器SF、ZF、AF、PF、CF及OF的状态。 2、若CX=6700H,DX=78FFH,CF=1,求分别执行指令 (1)ADD CX,DX (2)ADC CX,DX (3)SUB CX,DX (4)SBB CX,DX (5)AND CX,DX (6)OR CX,DX (7)XOR CX,DX 后,CX和DX中的内容。并指出标志寄存器SF、ZF、AF、PF、CF和OF的状态。 3、X,Y分别为下列各组数,当它们分别进行加、减、AND、OR、XOR运算后,其标志位,SF、OF、CF、PF、ZF的状态如何? (1)X=21H;Y=43H (2)X=9AH;Y=0BCH (3)X=48H;Y=8DH (2)X=54H;Y=54H 4、若AX=98ABH,BX=A8BCH,求执行指令ADD AX,BX后,AX与BX中的内容,并指出SF、ZF、AF、PF、CF和OF的状态。 5、针对下列各条指令执行后的结果,填入目的操作数的值及标志位的状态。 6、若AX=FFF8H,BX=FFFAH,求执行IMUL BX后,DX与AX中的内容,并指出标

志位OF与CF的状态。 7、若AX=FFFEH,BX=FFFDH,求执行指令IMUL BX后,DX与AX中的内容。指出标志位OF与CF的状态。 8、设AL=85H,BL=2AH,均为带符号数,求指令 IMUL BL的执行结果。 9、若AL=78H,BL=87H, (1)求执行指令 ADD AL,BL DAA 之后,AL=?标志位AF=?CF=?并说明BCD码调整情况。 (2)若执行指令SUB AL,BL与DAS后,情况又如何? 10、若AL=75H,BL=48, (1)求执行指令 ADD AL,BL DAA 之后,AL=?标志位AF=?CF=?并说明BCD码调整情况。 (2)若执行指令SUB AL,BL与DAS后,情况又如何? 11、若有一个4字节数,放在寄存器BX间址的内存中(低地址对应低字节),要求这个4字节整数整个左移一位如何实现?右移一位又如何实现? 12、若有一个四字节数,放在寄存器DX与AX中(DX放高16位),要求这个四字节数整个左移一位如何实现?右移一位又如何实现? 13、分别编写一程序使 (1)AX寄存器高3位清0; (2)BX寄存器高3位置1; (3)CX寄存器高4位取反; (4)DX寄存器高3位不变,其余位清0。

熟悉并使用算术逻辑操作类指令

微处理器原理课实验日志 一、实验题目:熟悉并使用算术逻辑操作类指令 二、实验结果 本次实验的目的是为了让我们熟悉算术运算类指令,熟悉逻辑运算类指令,掌握算术运算类指令对标志位的影响。本次实验分为验证性和操作性,对于验证性实验要求在自己理解程序的基础上去运行程序,查看运行结果。操作性实验要求自己编写程序实现相关要求,最后运行查看结果。 第一个程序是验证性(加法减法指令),代码为: MOV A,#12H MOV R0,#24H MOV 21H,#56H ADD A,#12H MOV DPTR,#4316H ADD A,DPH ADD A,R0 CLR C SUBB A,DPL SUBB A,#25H INC A SETB C ADDC A,21H

INC R0 SUBB A,R0 MOV 24H,#16H CLR C ADD A,@R0 此程序的功能为:熟悉加法减法指令,尤其是ADD与ADDC、还有就是在SUBB中注意什么时候Cy标志位清零的运用;DPH、DPL 的运用等。最后在没有运行程序之前对程序进行简单的运算,累加器A中的数据是0xE0=#83H,程序运算结果如下: 按照实验要求第二个程序代码为: MOV 30H,#34H MOV 31H,#2AH MOV 32H,#0FAH MOV 33H,#48H MOV R0,#30H MOV A,@R0 INC R0 MOV B,@R0 MUL AB MOV R1,A MOV R2,B MOV A,@R0 INC R0 MOV B,@R0 DIV AB MOV R3,A MOV R4,B

本程序的重点是分析乘法中高八位存在B寄存器中和低八位存在累加器A中,除法运算A累加器中存放的是商,B寄存器中存放的余数。所以,分析得到乘法运算中A累加器中存放的是88H,B寄存器中存放是08H;除法运算中A累加器存放的是00H,B寄存器中存放的是2AH.程序运算的结果如下: 按照第三个程序是移位指令代码为: MOV A,#39H CPL A RL A CLR C RRC A SETB C RLC A SWAP A 此程序的运行结果应该是:0C6H、8DH、46H、8DH、D8H。 操作性实验,按照要求书写代码如下:

8051单片机常用指令

3.2.1数据传送与交换类指令 共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指 9.堆栈操作 3.2 分类指令 在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。Rn:当前指定的工作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。 Ri:当前指定的工作寄存器组中的RO,R1(其中i=0,1)。 (Ri):Ri间址寻址指定的地址单元。 ((Ri)):Ri间址寻址指定地址单元中的内容。 dir:8位直接字节地址(在片内RAM和SFR存储空间中)。 #data8:8位立即数。 #datal6:16位立即数。 addrl6:16位地址值。 addrll:11位地址值。 bit:位地址(在位地址空间中)。 rel:相对偏移量(一字节补码数)。 下面介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。 3.2.1数据传送与交换类指令

共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指 令;数据交换指令以及准栈操作指令。

9.堆栈操作 PUSH dir ;SP十1-6P,(dir)一(SP) POP dir ;((SP))一dir,SP-1--P , 例1 SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。 例2 SP=13H,(13H)= 1FH,指令POP 25H执行后,1FH压入25H地址单元,SP此时为12H。 综合例把片内RAM中50H地址单元中的内容与40H地址单元中的内容互换。方法一(直接地址传送法): MOV A ,50H

《计算机基础》练习及答案

《计算机基础》练习及答案 一、单选题 1.能够准确反映现代计算机的主要功能是 B 。 A.计算机可以实现高速运算 B.计算机是一种信息处理机 C.计算机可以存储大量信息 D.计算机可以代替人的脑力劳动 2.按照计算机的用途分类,可将计算机分为 D 。 A.通用计算机、个人计算机 B.数字计算机、模拟计算机 C.巨型计算机、微型计算机 D.通用计算机、专用计算机 3.工业上的自动机床属于 C 。 A.科学计算方面的计算机应用 B.数据处理方面的计算机应用 C.过程控制方面的计算机应用 D.人工智能方面的计算机应用 4.如果(52)(2A)16,则x为 B 。

A.2 B.8 C.10 D.16 5.下列数中最大的数是 D 。 A.(1000101)2 B.(107)8 C.(73)10 D.(4B)16 6.已知:3×4=14,则4×5= A 。 A.24 B.26 C.30 D.36 7.字节是数据处理的基本单位,1= C 。 A.1 B.4 C.8 D.16 8.存储器容量大小是以字节数来度量,1= B 。 A.1000B B.1024B C.1024× 1024B D.1048576B 9.假设某计算机的字长为8位,则十进制数(-66)10的反码表示 为 C 。 A.01000010 B.11000010

C.10111101 D.10111110 10.假设某计算机的字长为8位,则十进制数(+75)10的补码表示为 A 。 A.01001011 B.11001011 C.10110100 D.10110101 11.假设某计算机的字长为8位,则十进制数(-75)10的补码表示为 D 。 A.01001011 B.11001011 C.10110100 D.10110101 12.我国信息交换用汉字编码字符集-基本集是 C 。 5 2312 13.在下面关于字符之间大小关系的说法中,正确的是 B 。 A.6>b>B B.6>B>b >B>6 >b>6 14.已知:“B”的码值是66,则码值为1000100的字符为 B 。

数学四则运算练习题

数学四则运算练习题 一、填空题 1、()—56+72= 2169 4 ()=108 54 () 5=135 2、将38+53=91,91 13=7,86+7=93这3个算式合并成一个综合算式是: 3、0在除法算式中不能为()。 二、判断题 1、算式180—(92+72)去掉小括号后,计算结果没有变化。() 2、甲数是72,比乙数的2倍少12,求乙数的算式是72。() 3、算式168—(68 2) 3中的.小括号可以省略。() 三、脱式计算 1、5600— 8168 78 20 2、46 (587+962 74) 3、84—4200 (850 17) 4、(765+274) 6—5894 5、613+764+387 6、33+58+77+42—164 四、解决问题 1、小刚和小强赛跑,两人同时起跑,6分钟后,小刚跑了1200米,小强跑了1188米,平均每分钟小刚比小强多跑了多少米?(用两种方法解答) 2、小丽敲一份稿子,前6分钟每分钟敲80个字,由于赶时间,她加快了 速度,后四分钟共敲了400个字,这份稿子她平均每分钟敲多少个字? 3、某机械厂要加工一批小零件,计划每天加工180个,15天完工。为了 提前完成任务,实际每天比计划多加工90个,可以提前几天完成任务? 4、老师让同学们10人一排站队,可同学们错站成了11人一排,结果站了 18排还多了2人。如果按老师的指令站,应站几排? 5、李伯伯从商店购买了20袋饲料,共用了820元,他上网查,这种产品到厂家直接购买每袋32元。李伯伯购买这些饲料比从网上购买多花了多少钱?

6、某摩托车厂9月份生产了570辆摩托车,其中有10辆不合格。合格的产品用大卡车运往各销售网点。一辆大卡车一次可以运35辆,需要运费485元。这些摩托车需要多少辆大卡车才能运完?共需要多少运费? 感谢您的阅读,祝您生活愉快。

Maple 常用计算命令

Maple 常用计算命令 《Maple 指令》7.0版本 第1章章数 1.1 复数 Re,Im - 返回复数型表达式的实部/虚部 abs - 绝对值函数 argument - 复数的幅角函数 conjugate - 返回共轭复数 csgn - 实数和复数表达式的符号函数 signum - 实数和复数表达式的sign 函数5 1.2 MAPLE 常数 已知的变量名称 指数常数(以自然对数为底) I - x^2 = -1 的根 infinity 无穷大 1.3 整数函数 ! - 阶乘函数 irem, iquo - 整数的余数/商 isprime - 素数测试 isqrfree - 无整数平方的因数分解 max, min - 数的最大值/最小值 mod, modp, mods - 计算对 m 的整数模 rand - 随机数生成器 randomize - 重置随机数生成器 1.4 素数 Randpoly, Randprime - 有限域的随机多项式/首一素数多项式ithprime - 确定第i个素数 nextprime, prevprime - 确定下一个最大/最小素数 1.5 数的进制转换 convert/base - 基数之间的转换 convert/binary - 转换为二进制形式 convert/decimal - 转换为 10 进制 convert/double - 将双精度浮点数由一种形式转换为另一种形式convert/float - 转换为浮点数 convert/hex - 转换为十六进制形式 convert/metric - 转换为公制单位 convert/octal - 转换为八进制形式 1.6 数的类型检查 type - 数的类型检查函数 第2章初等数学 2.1 初等函数 product - 确定乘积求和不确定乘积 exp - 指数函数

51单片机指令

3.2 分类指令 在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。 Rn:当前指定的工作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。 Ri:当前指定的工作寄存器组中的RO,R1(其中i=0,1)。 (Ri):Ri间址寻址指定的地址单元。 ((Ri)):Ri间址寻址指定地址单元中的内容。 dir:8位直接字节地址(在片内RAM和SFR存储空间中)。 #data8:8位立即数。 #datal6:16位立即数。 addrl6:16位地址值。 addrll:11位地址值。 bit:位地址(在位地址空间中)。 rel:相对偏移量(一字节补码数)。 下面介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。 3.2.1数据传送与交换类指令 共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指

令;数据交换指令以及准栈操作指令。 9.堆栈操作 PUSH dir ;SP十1-6P,(dir)一(SP)

POP dir ;((SP))一dir,SP-1--P , 例1 SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。 例2 SP=13H,(13H)= 1FH,指令POP 25H执行后,1FH压入25H地址单元,SP此时为12H。 综合例 把片内RAM中50H地址单元中的内容与40H地址单元中的内容互换。方法一(直接地址传送法): MOV A ,50H 数据传送与交换类指令是各类指令中数量最多、使用最频繁的一类指令,编程时应能十分熟练地灵活运用

单片机指令英文全称

51单片机汇编指令集(指令集带英文翻译) 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX(Move External RAM)对外部RAM的数据传送; XCH(Exchange)字节交换; XCHD(Exchange low-order Digit)低半字节交换; PUSH(Push onto Stack)入栈; POP (Pop from Stack)出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC(Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap)低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移; JC (Jump if the Carry flag is set)有进位则转移;

8086指令系统之算术运算类指令

8086 指令系统之算术运算类指令 2007-04-17 07:51 1 加法指令 1.1 加法指令 ADD ADD reg,imm/reg/mem ;reg←reg+imm/reg/mem ADD mem,imm/reg ;mem←mem+imm/reg 2.17a: 例 2.17a:加法运算 mov add mov mov add add al,0fbh ;al=0fbh al,07h ;al=02h word ptr[200h],4652h ;[200h]=4652h bx,1feh ;bx=1feh al,bl ;al=00h word ptr[bx+2],0f0f0h ;[200h]=3742h
ADD 指令按照状态标志的定义相应设置这些标志的 0 或 1 状态。例如 在 07+FBH→02H 运算后:标志为 OF=0、SF=0、ZF=0、AF=1、PF=0、CF=1;用调 试程序单步执行后,上述标志状态依次为 NV、PL、NZ、AC、PO、CY。 同样进行 4652h+f0f0h→3742H 运算后,标志为 OF=0、SF=0、ZF=0、 AF=0、PF=1、CF=1;调试程序依次显示为 NV、PL、NZ、NA、PE、CY。注意,PF 仅反映低 8 位中“1”的个数,AF 只反映 D3 对 D4 位是否有进位。 1.2 带进位加法指令 ADC ADC reg,imm/reg/mem ;reg←reg+imm/reg/mem+CF ADC mem,imm/reg ;mem←mem+imm/reg+CF ;mem←mem+imm/reg+CF 加法运算外, CF, ADC 指令除完成 ADD 加法运算外,还要加进位 CF,其用法及对状态标志的 指令一样。 影响也与 ADD 指令一样。ADC 指令主要用于与 ADD 指令相结合实现多精度 数相加。 数相加。 2.17b: 例 2.17b:无符号双字加法运算 mov ax,4652h ;ax=4652h add ax,0f0f0h ;ax=3742h,CF=1 mov dx,0234h ;dx=0234h adc dx,0f0f0h ;dx=f325h,CF=0 上述程序段完成 DX.AX = 0234 4652H + F0F0 F0F0H = F325 3742H。 1.3 增量指令 INC INC reg/mem ;reg/mem←reg/mem+1 增量)。 INC 指令对操作数加 1(增量)。

算术运算指令

算术运算指令 1.ADD A,Rn 将累加器与寄存器的内容相加,结果存回累加器 2.ADD A,direct 将累加器与直接地址的内容相加,结果存回累加器 3.ADD A,@Ri 将累加器与间接地址的内容相加,结果存回累加器 4.ADD A,#data 将累加器与常数相加,结果存回累加器 5.ADDC A,Rn 将累加器与寄存器的内容及进位C相加,结果存回累加器 6.ADDC A,direct 将累加器与直接地址的内容及进位C相加,结果存回累加器 7.ADDC A,@Ri 将累加器与间接地址的内容及进位C相加,结果存回累加器 8.ADDC A,#data 将累加器与常数及进位C相加,结果存回累加器 9.SUBB A,Rn 将累加器的值减去寄存器的值减借位C,结果存回累加器 10.SUBB A,direct 将累加器的值减直接地址的值减借位C,结果存回累加器 11.SUBB A,@Ri 将累加器的值减间接地址的值减借位C,结果存回累加器 12.SUBB A,#data 将累加器的值减常数值减借位C,结果存回累加器 13.INC A 将累加器的值加1 14.INC Rn 将寄存器的值加l 15.INC direct 将直接地址的内容加1 16.INC @Ri 将间接地址的内容加1 17.INC DPTR 数据指针寄存器值加1 说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 18.DEC A 将累加器的值减1 19.DEC Rn 将寄存器的值减1 20.DEC direct 将直接地址的内容减1 21.DEC @Ri 将间接地址的内容减1 22.MUL AB 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 将累加器的值除以B寄存器的值,结果的商存回累加器,余数存回B寄存器 说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0 24.DA A 将累加器A作十进制调整, 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或(C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 25.ANL A,Rn 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器

算术和逻辑运算指令

第5章算术和逻辑运算指令 罗文坚 中国科大计算机学院 https://www.wendangku.net/doc/235426666.html,/~wjluo/mcps/

本章内容 ?加法、减法和比较指令 ?乘法和除法指令 ?BCD码和ASCII码算术运算指令?基本逻辑运算指令 ?移位和循环移位指令 ?串比较指令

加法格式ADD REG/MEM, REG/MEM/IMM 功能源操作数、目的操作数相加,结果存入目的操 作数 标志所有状态标志(ZF、CF、PF、AF、SF 及OF)都受影响 带进位加格式ADC REG/MEM, REG/MEM/IMM 功能源操作数、目的操作数以及进位标志CF相加,结果存入目的操作数 标志所有状态标志(ZF、CF、PF、AF、SF 及OF)都受影响

加1格式INC REG/MEM 功能目的操作数加1 标志除CF标志位,其余状态标志都受影响 交换并相加格式XADD REG/MEM, REG 功能(80486以上)源操作数和目的操作数相交换,并将两者之和存入目的操作数 标志所有状态标志都受影响,根据加法结果设置

?加法指令注意事项: 1.源操作数和目的操作数不能同时为内存单元 (MEM)。 2.不允许与段寄存器(SREG)相关的加法。 3.XADD指令的源操作数在寄存器(REG)中。 4.标志寄存器中状态位随运算结果而变化,但INC 指令不影响CF标志。 5.指令中操作数是带符号数还是无符号数由程序员 解释。 注意:第4章的数据传送指令不改变状态标志。

Example 1 ?例、试用加法指令对两个8位16进制数5EH 和3CH 求和,并分析加法运算指令执行后对标志位的影响。 ?解:MOV AL, 5EH ;AL=5EH (94) MOV BL, 3CH ;BL=3CH (50) ADD AL, BL ;结果AL=9AH 101010011100001111100101 运算后标志:ZF=0, AF=1, CF=0, SF=1, PF=1, OF=1。 ?若程序员认为两个加数是无符号数,则运算结果位9AH ,即154。 ?此时,SF 标志和OF 标志没有意义。 ? 若程序员认为两个加数是有符号数,则运算溢出,结果无效。?此时,CF 标志没有意义。

算术运算指令

◆算数类指令经常会影响标志位,搞清楚以下两个概念: ?对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1) ?对标志没有影响:指令执行不改变标志状态 ◆注意有符号数进行计算是用其补码进行计算的,有符号数在计算机里是以补码的形式 进行存储的!!!!! ◆使用内存地址为寻址方式时,一定要用伪指令指明操作数类型。 ?加法类(带符号数相加要考虑溢出): 1.加法指令ADD(ADD 目的操作数,源操作数;将源与目的操作数相加,结果送到目的操 作数) 目的操作数:reg,mem 源操作数:imm,reg,mem 注意: 1.存储器之间不能相加。 2.根据结果对相应的标志位作出改变,即,影响标志位!!! 2.带进位加法指令ADC(ADD 目的操作数,源操作数;将源、目的操作数与CF标志位相加,结果送到目的操作数) 目的操作数:reg,mem 源操作数:imm,reg,mem 注意: 1. 存储器之间不能相加。 2. 根据结果对相应的标志位作出改变,即,影响标志位!!! 3. ADC指令主要与ADD配合,实现多精度加法运算。 4. CF是本指令执行前的状态 ?多精度加法运算示例 mov ax,4652h ;ax=4652h add ax,0f0f0h ;ax=3742h,CF=1 mov dx,0234h ;dx=0234h adc dx,0f0f0h ;dx=f325h,CF=0 ;DX.AX=0234 4652H +F0F0 F0F0H =F325 3742H 3.增量指令INC(increment;INC指令对操作数加1(增量);INC reg/mem) 操作数:reg/mem 注意: 1.不影响进位CF标志,按定义设置其他状态标志。(仅不影响CF,还会影响其他) 2.主要用于对计数器和地址指针的调整,而不用来做单纯的算术计算。 3.当使用存储器操作数时,不得出现二义性。 ?减法类: 4.减法指令SUB(目的操作数减去源操作数,结果送到目的操作数;sub 目的操作数,源 操作数) 目的操作数:reg,mem 源操作数:imm,reg,mem 注意:

单片机课后习题解答

练习练习练习 第二章单片机结构及原理 1、MCS-51单片机内部包含哪些主要功能部件它们的作用是什么 答:(1)一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。 (2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。 (3)4K ROM程序存贮器:存贮程序及常用表格。 (4)128B RAM 数据存贮器:存贮一些中间变量和常数等。 (5)两个16bit定时器/计数器:完全硬件定时器 (6)32根可编程I/O口线:标准8位双向(4个)I/O接口,每一条I/O线都能独立地作输入或输出。 (7)一个可编程全双工串行口。 (8)五个中断源。 2、什么是指令什么是程序 答:指令是规定计算机执行某种操作的命令。 程序是根据任务要求有序编排指令的集合。 3、如何认识89S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间 答:89S51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 4、开机复位后,CPU使用的是哪组工作寄存器他们的地址是多少CPU如何确定和改变当前工作寄存器组 答:开机复位后,CPU使用的是第0组工作寄存器,地址为00H~07H,CPU通过改变状态字寄存器PSW中的RS0和RS1来确定工作寄存器组。 5、什么是堆栈堆栈有何作用在程序设计时,有时为什么要对堆栈指针SP重新赋值如果CPU在操作中要使用两组工作寄存器,SP应该多大 答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针SP复位后指向07H单元,00H~1FH为工作寄存器区,20H~2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。如果CPU在操作中要使用两组工作寄存器,SP应该至少设置为0FH。 6、89S51/52的时钟周期、机器周期、指令周期是如何分配的当振荡频率为8MHz时,一个单片机周期为多少微秒 答:时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是执行一条指令所需要的时间,由若干个机器周期组成。 若fosc=8MHz,则一个机器周期=1/8×12μs=μs 7、89S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突 答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。 8、程序状态字寄存器PSW的作用是什么常用状态标志有哪些位作用是什么 答:程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下: (C y):进位标志位。 (AC):辅助进位标志位,又称为半进位标志位。

实验二 算术逻辑运算及移位操作

实验二算术逻辑运算及移位操作 一、实验目的 1.熟悉算术逻辑运算指令和移位指令的功能。 2.了解标志寄存器各标志位的意义和指令执行对它的影响。 二、实验预习要求 1.复习8086指令系统中的算术逻辑类指令和移位指令。 2.按照题目要求在实验前编写好实验中的程序段。 三、实验任务 1.实验程序段及结果表格如表1.2: 表1.2 标志位CF ZF SF OF PF AF 程序段1: MOV AX, 1018H MOV SI, 230AH ADD AX, SI ADD AL, 30H MOV DX, 3FFH ADD AX,BX MOV [20H], 1000H ADD [20H], AX PUSH AX POP BX 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 程序段2: MOV AX, 0A0AH ADD AX, 0FFFFH MOV CX, 0FF00H ADC AX, CX SUB AX, AX INC AX 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0

OR CX, 0FFH AND CX, 0F0FH MOV [10H], CX 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 程序段3: MOV BL, 25H MOV BYTE PTR[10H], 4 MOV AL, [10H] MUL BL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 程序段4: MOV WORD PTR[10H],80H MOV BL, 4 MOV AX, [10H] DIV BL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 程序段5: MOV AX, 0 DEC AX ADD AX, 3FFFH ADD AX, AX NOT AX SUB AX, 3 OR AX, 0FBFDH AND AX, 0AFCFH SHL AX ,1 RCL AX ,1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 2.用BX 寄存器作为地址指针,从BX 所指的内存单元(0010H)开始连续存入三个无符号数(10H 、04H 、30H),接着计算内存单元中的这三个数之和,和放 在0013H 单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的 程序段并上机验证结果。 3.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)=? (1) 传送15H 到AL 寄存器; 2题答案 MOV BX.10H MOV CX,BX INC BX MOV SI,BX INC BX MOV AX,[CX] ADD AX,[BX] ADD AX,[SI] MOV [13H],AX MOV AX,[CX] MUL WORDPTR[BX] MUL WORDPTR[SI] MOV [14H],AX F 10H 12H 10H 4H 30H

相关文档