二、算术逻辑运算指令

合集下载

常用汇编指令

常用汇编指令

常用汇编指令汇编语言是一种低级机器语言的抽象表示,通过使用汇编指令可以编写出与硬件相关的程序。

在计算机科学领域中,汇编指令是非常重要的,是理解计算机底层原理和实现的关键。

本文将介绍一些常用的汇编指令,以帮助读者更好地理解和应用这些指令。

一、数据传输指令1. MOV指令:MOV指令用于将数据从一个位置复制到另一个位置。

例如,MOV AX, BX将寄存器BX的内容复制到AX中。

2. LEA指令:LEA指令用于将内存地址加载到寄存器中。

例如,LEA BX, [SI+10]将[S1+10]的内存地址加载到寄存器BX中。

3. PUSH指令:PUSH指令用于将数据压入栈中。

例如,PUSH AX将AX中的数据压入栈中。

4. POP指令:POP指令用于从栈中弹出数据。

例如,POP BX将栈中的数据弹出到BX中。

二、算术运算指令1. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。

例如,ADD AX, BX将BX的值加到AX中。

2. SUB指令:SUB指令用于将源操作数的值从目标操作数中减去,并将结果存储在目标操作数中。

例如,SUB AX, BX从AX中减去BX的值。

3. MUL指令:MUL指令用于将源操作数与累加器中的值相乘,并将结果存储在累加器中。

例如,MUL BX将累加器的值与BX相乘。

4. DIV指令:DIV指令用于将累加器的值除以源操作数,并将商存储在累加器中,余数存储在另一个寄存器中。

例如,DIV BX将累加器的值除以BX。

三、逻辑运算指令1. AND指令:AND指令用于对两个操作数进行逻辑与运算,并将结果存储在目标操作数中。

例如,AND AX, BX将AX与BX进行逻辑与操作。

2. OR指令:OR指令用于对两个操作数进行逻辑或运算,并将结果存储在目标操作数中。

例如,OR AX, BX将AX与BX进行逻辑或操作。

3. NOT指令:NOT指令用于对操作数进行逻辑非运算,并将结果存储在目标操作数中。

微机原理常用命令

微机原理常用命令

一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

1. 通用数据传送指令MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加.( 结果在第一个操作数里)XLAT 字节查表转换.── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为"0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.七、处理机控制指令:标志处理指令CLC(进位位置0指令)CMC(进位位求反指令)STC(进位位置为1指令)CLD(方向标志置1指令)STD(方向标志位置1指令)CLI(中断标志置0指令)STI(中断标志置1指令)NOP(无操作)HLT(停机)WAIT(等待)ESC(换码)LOCK(封锁)。

汇编语言指令详解

汇编语言指令详解

汇编语言指令详解汇编语言是一种低级语言,它直接操作计算机的硬件。

与高级语言相比,汇编语言更具操作性,可以更精确地控制计算机的执行过程。

在编写汇编语言程序时,我们需要使用指令来完成各种操作,并且对不同的指令进行详细的了解。

本文将详细介绍一些常用的汇编语言指令及其功能。

一、数据传输指令数据传输指令用于在寄存器间传输数据或将数据从寄存器传送到内存中。

常用的数据传输指令包括MOV、LDA、STA等。

MOV指令用于将数据从一个寄存器传送到另一个寄存器。

例如,MOV AX, BX表示将寄存器BX中的数据传送到寄存器AX中。

LDA指令用于将一个内存单元的数据传送到累加器中。

例如,LDA 1000H将内存单元1000H中的数据传送到累加器中。

STA指令用于将累加器的数据传送到一个内存单元中。

例如,STA 2000H将累加器中的数据传送到内存单元2000H中。

二、算术运算指令算术运算指令用于对数据进行加、减、乘、除等运算操作。

常用的算术运算指令包括ADD、SUB、MUL、DIV等。

ADD指令用于将两个操作数相加,并将结果存储在目的操作数中。

例如,ADD AX, BX表示将寄存器AX和寄存器BX的数据相加,并将结果存储在寄存器AX中。

SUB指令用于将目的操作数减去源操作数,并将结果存储在目的操作数中。

例如,SUB AX, BX表示将寄存器AX减去寄存器BX的数据,并将结果存储在寄存器AX中。

MUL指令用于执行无符号整数乘法运算。

例如,MUL AX, BX表示将寄存器AX和寄存器BX的数据相乘,并将结果存储在寄存器AX 中。

DIV指令用于执行无符号整数除法运算。

例如,DIV AX, BX表示将寄存器AX的数据除以寄存器BX的数据,并将商存储在寄存器AX 中,余数存储在寄存器DX中。

三、逻辑运算指令逻辑运算指令用于对数据进行逻辑操作,如与、或、非、位移等。

常用的逻辑运算指令包括AND、OR、NOT、SHL等。

AND指令用于对两个操作数执行位与操作,并将结果存储在目的操作数中。

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

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

实验二算术逻辑运算及移位操作一.实验任务1.实验程序段及结果表格如表:分析:程序段1:MOV AX, 1018H ;AX←1018HMOV SI, 230AH ;SI←230AHADD AX, SI ;AX=3322H,低8位为00100010B,1的个数;为偶数,PF=1,同时D3向D4有进位发生,AF=1 ADD AL, 30H ;AX=3352H,低8位1个个数为奇数,PF=0 MOV DX, 3FFH ;DX←3FFHADD AX,BX ;AX=3352H,MOV [20H], 1000H ;[20H]←1000HADD [20H], AX ;[20H]=4352HPUSH AX ;POP BX ;BX=3352H程序段2:MOV AX, 0A0AH ;AX←0A0AHADD AX, 0FFFFH ;AX=0A09H,最高位进位CF=1,低8位1的;个数为偶数PF=1;D3向D4进位AF=1 MOV CX, 0FF00H ;CX←0FF00HADC AX, CX ;AX=090AH,最高位进位CF=1,低8位1的个;数为偶数PF=1SUB AX, AX ;AX=0,运算结果为零ZF=1INC AX ;AX=1HOR CX, 0FFH ;CX=0FFFFH,最高位为1,ZF=1,低8位1的;个数为偶数PF=1AND CX, 0F0FH ;CX=0F0FH,低8位1的个数为偶数PF=1MOV [10H], CX ;[10H]←0F0FH程序段3:MOV BL, 25H ;BL←25HMOV BYTE PTR[10H], 4 ;[10H]←04HMOV AL, [10H] ;AL←04HMUL BL ;AL=94H程序段4:MOV WORD PTR[10H],80H ;[10H]←0080HMOV BL, 4 ;BL←04HMOV AX, [10H] ;AX←0080HDIV BL ;AX=0020H程序段5:MOV AX, 0 ;AX←0000HDEC AX ;AX=0FFFFH,最高位为1,SF=1,低8;位1的个数为偶数PF=1,最高位向前、;D3向D4有借位,CF=1,AF=1 ADD AX, 3FFFH ;AX=3FFEH,D3向D4有进位,AF=1 ADD AX, AX ;AX=7FFCH,低8位1的个数为偶数,PF=1;D3向D4有进位,AF=1NOT AX ;AX=8003HSUB AX, 3 ;AX=8000H,低8位1的个数为偶数,PF=1;最高位为1,SF=1OR AX, 0FBFDH ;AX=0FBFDH,最高位为1,SF=1AND AX, 0AFCFH ;AX=0ABCDH,最高位为1,SF=1SHL AX,1 ;AX=579AH,低8位1的个数为偶数,PF=1,;算数结果溢出OF=1,最高位进位CF=1 RCL AX,1 ;AX=0AF35H,低8位1的个数为偶数,;PF=1,算数结果溢出OF=12.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。

汇编语言2-4逻辑移位指令

汇编语言2-4逻辑移位指令
第 2章
8086指令系统
一、数据传送类; 二、算术运算类; 三、位操作指令(逻辑运算和移位类); 四、串操作类; 五、控制转移类; 六、处理器控制类;
第 2章
8086指令系统
位操作指令,它们都是按位进行操作的包含逻辑运
算类指令和移位指令。 位操作类指令以二进制位为基本单位进行数据的操 作;这是一类常用的指令,都应该特别掌握 注意这些指令对标志位的影响 要求:全面而准确地理解每条指令的功能和应用 重点掌握以下指令:
第 2章
2、逻辑或指令OR
功能:对两个操作数执行按位逻辑或运 算,结果送到目的操作数
OR reg,imm/reg/mem ;reg←reg∨imm/reg/mem OR mem,imm/reg ;mem←mem∨imm/reg
说明:(1)按位逻辑或运算; (2)OR指令对操作数的限制和对标志位的影响; 思考: (1)某一个操作数自己和自己相逻辑或? 置某些位 (2)OR指令主要用在什么场合?
RCR reg/mem,1/CL
;带进位循环左移
;带进位循环右移
演示
第 2章
说明:循环移位指令
对操作数:同移位指令。 对标志的影响:
(1)按照指令功能设置进位标志CF (2)不影响SF、ZF、PF、AF (3)对于OF,同移位指令。如果进行一位移动, 则按照操作数的最高符号位是否改变,相应设置 溢出标志OF:如果移位前的操作数最高位与移位 后操作数的最高位不同(有变化),则OF = 1; 否则OF = 0。当移位次数大于1时,OF不确定
第 2章
例:移位指令
mov cl,4 mov al,0f0h ;al=f0h shl al,1 ;al=e0h ;CF=1,SF=1、ZF=0、PF=0,OF=0 shr al,1 ;al=70h ;CF=0,SF=0、ZF=0、PF=0、OF=1 sar al,1 ;al=38h ;CF=0,SF=0、ZF=0、PF=0、OF=0 sar al,cl ;al=03h ;CF=1,SF=0、ZF=0、PF=1 、OF=0

51单片机汇编程序设计之算数运算指令

51单片机汇编程序设计之算数运算指令

1) 逻辑“与”指令
汇编指令格式 机器指令格式
操作
ANL A,Rn
58H~5FH
A ← (A)∧(Rn)
ANL A,direct 55H direct
A ← (A)∧(direct)
B←(A)÷(B)的余数
注意:若除数(B)=00H,则结果无法确定,OV置1。 CY总是 被清0。该操作也影响标志位P。
3 加1、减1指令
1) 加1指令 汇编指令格式 INC A INC Rn INC direct INC @Ri INC DPTR
机器代码 04H 08H~0FH 05H direct 06H~07H A3H
操作 A ← (A)-1 Rn ← (Rn)-l direct←(direct)-1 (Ri) ← ((Ri))-1
注意:1.该操作不影响PSW标志位。 2. 51单片机无DEC DPTR指令。
4 十进制调整指令
汇编指令格式 机器码格式 操 作
DA A
D4H
对A进行BCD调整
注意:这条指令一般跟在ADD或ADDC指令后,对累 加器A中的结果进行BCD调整。 该操作影响标志位P。
2 乘法、除法指令
1) 乘法指令
汇编指令格式 机器指令格式
操作
MUL AB
A4H
BA ← (A)×(B)
注意:若乘积大于0FFH,则OV置1,否则清0(此时B的内容为 0)。CY总是被清0。该操作也影响标志位P。
2) 除法指令
汇编指令格式 机器指令格式
操作
DIV AB
84H
A←(A)÷(B)的商,
【例2】 试编程计算5678H – 1234H的值,结果保存在R6、 R5中。
解:减数和被减数都是16位二进制数,计算时要先进行低8 位的减法,然后再进行高8位的减法,在进行低8位减

单片机指令一览

1.加法指令
ADD
P44
ADDA,Rn
ADDA,direct
ADDA,@Ri
ADDA,#data
1.不带进位的加法指令
ADDC
P45
ADDCA,Rn
ADDCA,direct
ADDCA,@Ri
ADDCA,#data
2.带进位的加法指令
INC
P46
INCA
INCRn
INCdirect
INC@Ri
INCDPTR
MOV@R0,70H
MOV@R1,#78H
4.以寄存器间接地址为目的地址的指令
MOVDPTR,#data
5.16位数据传送指令
MOVX
P42
片外数据存储器(或扩展I/O口)与累加器A之间的传送指令
MOVXA,@DPTR
MOVXA,@Ri(0,1)
MOXX@DPTR,A
MOVX@Ri,A
MOVC
P42
JB
P53
JB bit,rel
JNB
P53
JNB bit,rel
JBC
P53
JBC bit,rel
CJNE
P53
CJNE A,direct,rel
CJNE A,#data,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
2.比较不相等转移指令
DJNZ
P53
DJNZ Rn,rel
3.增量指令
2.减法指令
SUBB
P47
SUBBA,Rn
SUBBA,direct
SUBBA,@Ri
SUBBA,#data
1.带进位的减法指令
DEC

二算术逻辑运算指令


三、逻辑运算指令
⑵移位指令
• 累加器A循环左移指令: • RL A ; • 累加器A连同进位位循环左移指令: • RLC A ; • 累加器A循环右移指令: • RR A ; • 累加器A连同进位位循环右移指令 • RRC A ;
三、逻辑运算指令
• 例3-18:若(A)=10111101B=BDH, Cy=0
• 注:执行结果只影响PSW的奇偶校验位P (以A为操 作数时 )
二、算术运算指令
3.乘、除法指令
• MUL AB ; (A)←[(A)×(B)]7-0

(B)←[(A)×(B)]15-8
• 如果积大于255(FFH),则溢出标志OV置1,否则清0。进
位标志位Cy总为0。
二、算术运算指令
• 例3-17:设(A)=50H(80),(B) =0AH(160) 执行指令:MUL AB;
• 执行“ RLC A”的结果为 • (A)=01111010B=7AH,Cy=1 • A的内容扩大2倍
三、逻辑运算指令
2 .双操作数的逻辑运算指令
• ⑴逻辑“与”指令
• ANL A,Rn ;(A) ←(A)∧(Rn) • ANL A,direct ;(A) ←(A)∧(direct) • ANL A,@Ri ;(A) ←(A)∧((Ri)) • ANL A,#data ;(A) ←(A)∧data • ANL direct, A ;(direct)←(direct)∧(A) ANL direct,#data;(direct)←(direct)∧data
• 本指令不能简单的把累加器A中的16进制数变换成 BCD码
二、算术运算指令
• 例3-13:设累加器A内容为压缩BCD码56 (即01010110B),寄存器R3的内容为 压缩BCD码67(即01100111B),Cy内 容为1。执行下列的指令:

单片机指令的算术和逻辑运算

单片机指令的算术和逻辑运算在计算机科学与电子工程领域,单片机指令的算术和逻辑运算是非常重要的内容。

本文将深入探讨单片机指令的算术和逻辑运算,介绍其基本原理、应用场景以及相关的编程技巧。

一、算术运算算术运算主要包括加法、减法、乘法和除法。

在单片机中,这些运算由相应的指令来实现。

以加法为例,单片机通常使用ADD指令来执行此操作。

ADD指令可以将两个操作数相加,并将结果存储在目标寄存器中。

类似地,SUB指令用于减法运算,MUL指令用于乘法运算,DIV指令用于除法运算。

除了基本的算术运算指令,单片机还提供了其他相关的指令,如累加指令(INC)和累减指令(DEC)。

这些指令用于对寄存器或内存中的数值进行自增或自减操作。

通过结合这些指令,开发者可以灵活地进行各种复杂的算术运算。

除了整数运算外,单片机还支持浮点数运算。

浮点数是一种表示实数的方法,包括小数部分和指数部分。

单片机中的浮点数运算通常由相应的指令库来实现。

这些指令库提供了一系列的浮点数运算指令,如浮点数加法指令、浮点数乘法指令等。

通过使用这些指令,单片机可以高效地进行复杂的浮点数计算,满足各种实际应用的需求。

二、逻辑运算逻辑运算主要包括与、或、非、异或等操作。

在单片机中,逻辑运算由相应的指令来实现。

以与运算为例,单片机通常使用AND指令来执行此操作。

AND指令可以将两个操作数的对应位进行与运算,并将结果存储在目标寄存器中。

类似地,OR指令用于或运算,NOT指令用于非运算,XOR指令用于异或运算。

逻辑运算在单片机编程中被广泛应用。

它们可以用于条件判断、位操作、数据处理等多个方面。

例如,在某些应用场景下,我们需要对某个输入信号进行判断,并根据判断结果来执行相应的操作。

这时,我们可以利用逻辑运算指令来进行条件判断,并根据判断结果来选择不同的执行路径。

此外,逻辑运算还可以用于位操作。

位操作主要涉及对数据的位进行开关操作,如位与、位或、位取反等。

通过逻辑运算指令,我们可以实现对数据位的精确控制,提高程序的效率和可靠性。

算术与逻辑运算指令


[D]:KnY、KnM、KnS、T、C、D、V,Z
❖ 梯形图
X0
[S1] [S2] [D]
MUL D0 D2 D4
X1
[S1] [S2] [D]
DDIV D10 D12 D14
被乘数 乘数 (D0)×(D2)
积 (D5D4)
被除数
除数

余数
(D11D10)÷(D13D12) (D15D14)···(D17D16)
一、二进制加减运算指令
❖ 说明 ➢ 该指令可以进行连续/脉冲执行方式。
注意连续与脉冲方式的区别: 连续方式:则每个扫描周期都加/减1; 脉冲方式:当X1=ON时,只加/减一次1.
二、二进制乘除运算指令
乘法 FNC22 MUL
减法 FNC23 DIV
❖ 操作数
[S1]、[S2]:K、H、KnX、KnY、KnM、KnS、T、C、D、 V,Z
FNC29 NEG
算术与逻辑运算指令
一、二进制加减运算指令
加法 FNC20 ADD
减法 FNC21 SUB
❖ 操作数
[S1]、[S2]:K、H、KnX、KnY、KnM、KnS、T、C、D、 V,Z
[D]:KnY、KnM、KnS、T、C、D、V,Z
❖ 梯形图
X0
X1
[S1] [S2] [D]
ADD D0 D2 D4
(D10) ∨ (D12) →(D14)
(D14) →(D14)
四、逻辑运算指令
❖ 说明 ➢ 各数据的对应位进行二进制与、或、异或运算。 ➢ 32位数据运算时,助记符为DAND、DOR、DXOR。 ➢ 指令运算规则如下:
逻辑与 1 ∧1= 1 1 ∧0= 0 0 ∧1= 0 0 ∧0= 0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、算术运算指令
⑵减1 指令 • • • • DEC DEC DEC DEC A ;(A)←(A)-1 Rn ;(Rn)←(Rn)-1 direct ;(direct)←(diect)-1 @Ri ;((Ri))←((Ri))-1
• 注:执行结果只影响PSW的奇偶校验位P (以A为操 作数时 )
二、算术运算指令
三、逻辑运算指令 2 .双操作数的逻辑运算指令
• ⑴逻辑“与”指令
• ANL A,Rn ;(A) ←(A)∧(Rn) • ANL A,direct ;(A) ←(A)∧(direct) • ANL A,@Ri ;(A) ←(A)∧((Ri)) • ANL A,#data ;(A) ←(A)∧data • ANL direct, A ;(direct)←(direct)∧(A) ANL direct,#data;(direct)←(direct)∧data 注:用于屏蔽数据
三、逻辑运算指令
• 例3-20:将累加器A中的低4位由P1口的 低4位输出,P1口的高4位不变。
三、逻辑运算指令
• ANL • MOV • MOV • ANL 变 • ORL • MOV
A,#00001111B 30H,A ;保留A中的低4位 A,P1 A,#11110000B;P1的高4位不 A,30H P1,A
• 结 果 乘 积 为 3200H ( 12800 ) 则 ( A ) =00H,(B)=32H,OV=1,Cy=0
二、算术运算指令
⑵ 除法指令
• DIV AB ;(A)←(A)/ (B)的商
• (B)←(A)/(B)的余数
• 标志位Cy和OV清0(当除数为0时OV置1)
三、逻辑运算指令
• 共25条 • 按操作数个数异或”指令
• • • • • • XRL A,Rn ;(A)←(A) (Rn) XRL A,direct ;(A)←(A) (direct) XRL A,@Ri ;(A)←(A)(Ri)) XRL A,#data ;(A)←(A)data XRL direct,A;(A)←(A)(direct) XRL direct,#data;
二、算术运算指令
包括加、减、乘、除、加1、减1等共24条指令 注:这类指令大都影响标志位。
• 1. 加法指令
带进位加法指令 不带进位加法指令 加1指令 十进制调整指令
二、算术运算指令
⑴不带进位加法指令 • • • • ADD ADD ADD ADD A,Rn ; (A)←(A)+(Rn) A,direct ;(A)←(A)+(direct) A,@Ri ;(A)←(A)+((Ri)) A, #data ;(A)←(A)+data
• 注:对某些位取反,与1相异或; • 判断两个数相等
三、逻辑运算指令
例3-19:将累加器A中压缩BCD码分为二个字节, 形成非压缩BCD码,放入30H和31H单元中。
• • • • • • • MOV ANL MOV MOV ANL SWAP MOV 40H,A ;保存A中的内容 A,#00001111B;清高4位,保留低4位 30H,A A,40H ;取原数据 A,#11110000B;保留高4位,清低4位 A 31H,A
二、算术运算指令
• • • • • • • •
MOV ADD DA MOV MOV ADDC DA MOV
A,50H A,60H A 40H,A A,51H A,61H A 41H,A
;(A)←(50H) ;(A)←(A)+(60H) ;BCD码修正
二、算术运算指令 ⑷加1指令
• • • • • INC INC INC INC INC A Rn direct @Ri DPTR ;(A)←(A)+1 ;(Rn)←(Rn)+1 ;(direct)←(direct)+1 ;((Ri))←((Ri))+1 ;(DPTR)←(DPTR)+1
• 对于PSW的影响: • 执行这组指令将影响标志位Cy、 AC、OV、P。当然, 溢出标志OV只有带符号数运算才有用。
二、算术运算指令
• 例3-10:设(A)=0C3H,(R0)=0AAH, 执行指令“ADD A,R0”
• 结果:所得和为6DH, 标志位Cy=1,OV=1,Ac=0。
二、算术运算指令
三、逻辑运算指令
⑵逻辑“或”指令 • • • • • • • • ORL A, Rn ;(A)←(A)∨(Rn) ORL A,direct ;(A)←(A)∨(direct) ORL A,@Ri ;(A)←(A)∨((Ri)) ORL A,#data ;(A)←(A)∨data ORL direct,A ;direct)←(direct)∨(A) ORL direct,#data ;(direct)←(direct) ∨data 注:可对某些位置位
• 注:执行结果只影响PSW的奇偶校验位P (以A为操 作数时 )
二、算术运算指令 2. 减法指令
• • • • • ⑴带借位减法指令 SUBB A,Rn ;(A)←(A)-(Rn)-(Cy) SUBB A,direct ;(A)←(A)-(diect)-(Cy) SUBB A,@Ri ;(A)←(A)-((Ri))-(Cy) SUBB A,#data ;(A)←(A)-data-(Cy)
单操作数指令 双操作数指令
• 逻辑运算指令包括与、或、异或、循环、 累加器“清零”与“求反”指令,这些 指令的操作数都是8位。 • 逻辑运算指令不影响标志位。
三、逻辑运算指令
1. 单操作数逻辑运算指令
• ⑴累加器A的“清零”与“取反”指令 • CLR A ;(A)←#00H • CPL A ;(A)←( )
二、算术运算指令
例3-11:设(A)=0C3H,(R0)=0AAH,(Cy)=1 执行指令:ADDC A,R0;
二、算术运算指令 例3-12:试编写计算6655H+11FFH的程序 • • • • • • MOV ADD MOV MOV ADDC MOV A,#55H A,#0FFH 50H,A A,#66H A,#11H 51H,A
3.乘、除法指令
• MUL AB ; (A)←[(A)×(B)]7-0
• (B)←[(A)×(B)]15-8

如果积大于255(FFH),则溢出标志OV置1,否则清0。进
位标志位Cy总为0。
二、算术运算指令
• 例3-17:设(A)=50H(80),(B) =0AH(160) 执行指令:MUL AB;
二、算术运算指令
• (3) 二-十进制调正指令(BCD码修正指令) DA A ; • 若[(A3~0)>9]或[(AC)=1] 则(A3~0)←(A3~0)+06H; 若[(A7~4)>9]或[(Cy)=1] 则(A7~4)←(A7~4)+60H 注: • 本指令不能单独使用,只能用在加法指令之后 • 本指令不能直接用于十进制数减法的调正 • 本指令不能简单的把累加器A中的16进制数变换成 BCD码
• 功能是将累加器A内容减去源地址单元内容,再减去 进位位Cy的内容,结果放入累加器A中 • 问题:如何应用此指令对两个单字节数相减?
二、算术运算指令
•主要用于多字节数的减法 如果要进行单字节或多字节数低8位数的减法运算,应先 清除进位位Cy。
• 对于PSW的影响CY、AC、OV、P • 例3-15:设累加器A的内容为0C9H,寄存器R2内容为 54H,进位标志Cy=1,执行指令:SUBB A,R2
⑵带进位加法指令 • • • • ADDC ADDC ADDC ADDC A,Rn ; (A)←(A)+(Rn)+(Cy) A,direct ;(A)←(A)+(direct)+(Cy) A,@Ri ;(A)←(A)+((Ri))+(Cy) A,#data ; (A)←(A)+data+(Cy)
• 注:主要用于多字节的加法运算。
三、逻辑运算指令 ⑵移位指令
• • • • • • • • 累加器A循环左移指令: RL A ; 累加器A连同进位位循环左移指令: RLC A ; 累加器A循环右移指令: RR A ; 累加器A连同进位位循环右移指令 RRC A ;
三、逻辑运算指令
• 例3-18:若(A)=10111101B=BDH, Cy=0 • 执行“ RLC A”的结果为 • (A)=01111010B=7AH,Cy=1 • A的内容扩大2倍
二、算术运算指令
• 例3-13:设累加器A内容为压缩BCD码56 (即01010110B),寄存器R3的内容为 压缩BCD码67(即01100111B),Cy内 容为1。执行下列的指令: • ADDC A,R3 • DA A
二、算术运算指令
• 例3-14:设有4个压缩BCD码,分别放在 内部数据存储器50H~51H单元和60H~ 61H单元中,试编写求出两个数的和的 程序,结果存放到40H~41H单元中。
二、算术运算指令
例3-16:试编写计算EE33H-A0E0H的程序
• • • • • • • CLR MOV SUBB MOV MOV SUBB MOV C ;(Cy)←0 A,#33H ;(A)←33H A,#0E0H ;(A)←(A)-E0H 50H,A ;(50H)←(A) A,#0EEH A,#0A0H 51H,A
相关文档
最新文档