文档库 最新最全的文档下载
当前位置:文档库 › 8051单片机指令系统

8051单片机指令系统

8051单片机指令系统
8051单片机指令系统

8051 单片机指令系统
难点

MCS-51 单片机的寻址方式 数据传送指令和算术运算指令的使用 位操作和控制转移类指令的使用
要求
掌握:

MCS-51 单片机的寻址方式 指令系统的基本格式 指令系统的操作功能
了解:

指令系统的基本格式 操作数的使用方法 指令系统的操作过程
2.7.1
MCS-51 单片机指令格式
计算机的指令系统是表征计算机性能的重要指标,每种计算机都有自己的指令系统. MCS—51 单片机的指令系统是一个具有 255 种代码的集合,绝大多数指令包含两个基本部 分:操作码和操作数.操作码表明指令要执行的操作的性质;操作数说明参与操作的数据或 数据所存放的地址. MCS—51 指令系统中所有程序指令是以机器语言形式表示,可分为单字节,双字节, 三字节 3 种格式. 用二进制编码表示的机器语言由于阅读困难, 且难以记忆. 因此在微机控制系统中采用 汇编语言指令来编写程序.本章介绍 MCS—51 指令系统就是以汇编语言来描述的.
表 1 汇编指令与指令代码
代码字节 单字节 单字节 双字节 三字节
指令代码 84 A3 7410 B440 rel
汇编指令 DIV AB INC DPTR MOV A,#10H CJNE A,#40H,LOOP
指令周期 四周期 双周期 单周期 双周期

一条汇编语言指令中最多包含 4 个区段,如下所示: 标号: 操作码 目的操作数,源源操作数 ;注释
标号与操作码之间": "隔开; 操作码与操作数之间用"空格"隔开; 目的操作数和源源操作数之间有", "分隔; 操作数与注释之间用"; "隔开. 标号是由用户定义的符号组成,必须用英文大写字母开始.标号可有可无,若一条指令 中有标号,标号代表该指令所存放的第一个字节存储单元的地址,故标号又称为符号地址, 在汇编时,把该地址赋值给标号. 操作码是指令的功能部分,不能缺省.MCS—51 指令系统中共有 42 种助记符,代表了 33 种不同的功能.例如 MOV 是数据传送的助记符. 操作数是指令要操作的数据信息.根据指令的不同功能,操作数的个数有 3,2,1 或没 有操作数.例如 MOV A,#20H,包含了两个操作数 A 和#20H,它们之间用","隔开. 注释可有可无, 加入注释主要为了便于阅读, 程序设计者对指令或程序段作简要的功能说明, 在阅读程序或调试程序时将会带来很多方便.
2.7.2
寻址方式
所谓寻址方式,通常是指某一个 CPU 指令系统中规定的寻找操作数所在地址的方式, 或者说通过什么的方式找到操作数.寻址方式的方便与快捷是衡量 CPU 性能的一个重要方 面,MCS—51 单片机有七种寻找方式.
1
立即数寻址
立即寻址方式是操作数包括在指令字节中,指令操作码后面字节的内容就是操作数本 身,其数值由程序员在编制程序时指定,以指令字节的形式存放在程序存储器中.立即数只 能作为源操作数,不能当作目的操作数. 例如: MOV A,#52H ;A←52H MOV DPTR,#5678H ;DPTR←5678H 立即寻址示意图如 1 所示.
图 1 立即寻址示意图

2
直接寻址
在指令中含有操作数的直接地址, 该地址指出了参与操作的数据所在的字节地址或位地址. 例如: MOV A,52H ;把片内 RAM 字节地址 52H 单元的内容送累加器 A 中. MOV 52H,A ;把 A 的内容传送给片内 RAM 的 52H 单元中. MOV 50H,60H ;把片内 RAM 字节地址 60H 单元的内容送到 50H 单元中. MOV IE,#40H ;把立即数 40H 送到中断允许寄存器 IE.IE 为专用功能寄存器,其字
节地址为 0A8H.该指令等价于 MOV 0A8H,#40H.
INC
60H
;将地址 60H 单元中的内容自加 1.
图 2 直接寻址方式示意图
在 MCS-51 单片机指令系统中,直接寻址方式可以访问 2 种存储空间: (1)内部数据存储器的低 128 个字节单元(00H~7FH) (2)80H~FFH 中的(SFR)特殊功能寄存器. 这里要注意,指令 MOV A,#52H 与 MOV A,52H 指令的区别,后者表示把片内 RAM 字节地址为 52H 单元的内容传送到累加器(A) .
3
寄存器寻址
由指令指出某一个寄存器中的内容作为操作数,这种寻址方式称为寄存器寻址.寄存器 一般指累加器 A 和工作寄存器 R0~R7.例如: MOV A,Rn ;A←(Rn) 其中 n 为 0~7 之一,Rn 是工作寄存器. MOV Rn,A ;Rn←(A) MOV B,A ;B←(A) 寄存器寻址方式的寻址范围包括: 寄存器寻址的主要对象是通用寄存器,共有 4 组 32 个通用寄存器,但寄存器寻址只能 使用当前寄存器组.因此指令中的寄存器名称只能是 R0~R7.在使用本指令前,需通过 对 PSW 中 RS1,RS0 位的状态设置,来进行当前寄存器组的选择. 部分专用寄存器.累加器 A,B 寄存器以及数据指针 DPTR 等.
4
寄存器间接寻址方式
由指令指出某一个寄存器的内容作为操作数,这种寻址方式称为寄存器间接寻址.这里 要注意,在寄存器间接寻址方式中,存放在寄存器中的内容不是操作数,而是操作数所在的 存储器单元地址. 寄存器间接寻址只能使用寄存器 Ro 或 Rl 作为地址指针, 来寻址内部 RAM(00H~FFH)

中的数据.寄存器间接寻址也适用于访问外部 RAM,可使用 R0,Rl 或 DPTR 作为地址指 针.寄存器间接寻址用符号"@"表示.例如: MOV R0,#60H ;R0←60H MOV A, @R0 ;A ← ((R0)) MOV A ,@R1 ;A ← ((R1)) 指令功能是把 Ro 或 R1 所指出的内部 RAM 地址 60H 单元中的内容送累加器 A. 假 定(60H)=3BH,则指令的功能是将 3BH 这个数送到累加器 A. 例如, MOV DPTR,#3456H ;DPTR←3456H MOVX A,@DPTR ;A ←( (DPTR) ) 是把 DPTR 寄存器所指的那个外部数据存储器(RAM)的内容传送给 A,假设 (3456H)=99H,指令运行后(A)=99H. 同样,MOVX @DPTR,A;MOV @R1,A;也都是寄存器间接寻址方式.寄存 器间接寻址方式的示意图如图 3 所示.
图 3 寄存器间接寻址方式示意图
5
位寻址
MCS-51 单片机中设有独立的位处理器.位操作指令能对内部 RAM 中的位寻址区 (20H~2FH)和某些有位地址的特殊功能寄存器进行位操作.也就是说可对位地址空间的 每个位进行位状态传送,状态控制,逻辑运算操作.例如指令 SETB TR0 ;TR0←1 CLR 00H ; (00H)←0 MOV C,57H ;将 57H 位地址的内容传送到位累加器 C 中 ANL C,5FH ;将 5FH 位状态与进位位 C 相与,结果在 C 中
6
基址寄存器加变址寄存器间接寻址
这种寻址方式用于访问程序存储器中的数据表格,它以基址寄存器(DPTR 或 PC)的 内容为基本地址,加上变址寄存器 A 的内容形成 16 位的地址,访问程序存储器中的数据表 格.例如;

MOVC A,@A + DPTR MOVC A,@A + PC JMP @A+DPTR MOVC A,@A+DPTR
图 4 变址寻址方式示意图
7
相对寻址
相对寻址以程序计数器 PC 的当前值作为基地址,与指令中给出的相对偏移量 rel 进 行相加,把所得之和作为程序的转移地址.这种寻址方式用于相对转移指令中,指令中的相 对偏移量是一个 8 位带符号数,用补码表示.可正可负,转移的范围为-128~+127.使用中 应注意 rel 的范围不要超出.例如: JZ LOOP DJNE R0,DISPLAY
2.7.3 1
指令系统
指令分类
MCS-51 指令系统有 42 种助记符,代表了 33 种功能,指令助记符与各种可能的寻址方 式相结合,共构成 111 条指令.在这些指令中,单字节指令有 49 条,双字节指令有 45 条, 三字节指令有 17 条;从指令执行的时间来看,单周期指令有 64 条,双周期指令有 45 条, 只有乘法,除法两条指令的执行时间是 4 个机器周期. 按指令的功能,MCS-51 指令系统可分为下列 5 类: (1)数据传送类指令(29 条) (2)算术运算类指令(24 条) (3)逻辑运算及移位类指令(24 条) (4)位操作类指令(17 条) (5)控制转移类指令(17 条) 在分类介绍指令前,先把描述指令的一些符号的意义作一简单介绍. Rn―当前选定的寄存器区中的 8 个工作寄存器R0~R7,即n=0~7. Ri―当前选定的寄存器区中的 2 个寄存器 R0,R1,i=0,1. Direct—8 位内部 RAM 单元的地址,它可以是一个内部数据区 RAM 单元(00H~7FH) 或特殊功能寄存器地址(I/O 端口,控制寄存器,状态寄存器 80H~0FFH) . #data—指令中的 8 位常数.

#data16—指令中的 16 位常数. addr16—16 位的目的地址, 用于 LJMP, LCALL, 可指向 64KB 程序存储器的地址空间. addr11—11 位的目的地址,用于 AJMP,ACALL 指令.目的地址必须与下一条指令的 第一个字节在同一个 2KB 程序存储器地址空间之内. rel—8 位带符号的偏移量字节,用于 SJMP 和所有条件转移指令中.偏移量相对于下一 条指令的第一个字节计算,在—128~+127 范围内取值. bit—内部数据 RAM 或特殊功能寄存器中的可直接寻址位. DPTR—数据指针,可用作 16 位的地址寄存器. A—累加器 B—寄存器,用于 MUL 和 DIV 指令中. C—进位标志或进位位. @—间接寄存器或基址寄存器的前缀,如@Ri,@DPTR. /—位操作的前缀,表示对该位取反. (X)—X 中的内容. ( (X) )—由 X 寻址的单元中的内容. ←—箭头左边的内容被箭头右边的内容所替代.
2
数据传送类指令
数据传送类指令一般的操作是把源操作数传送到指令所指定的目标地址.指令执行后, 源操作数保持不变,目的操作数为原操作数所替代 数据传送类指令用到的助记符有: MOV, MOVX, MOVC, XCH, XCHD, PUSH, POP, SWAP. 数据一般传送指令的助记符"MOV"表示 格式: MOV [目的操作数],[源操作数] 功能:目的操作数←(源操作数中的数据) 源操作数可以是:A,Rn,direct,@Ri,#data 目的操作数可以是:A,Rn,direct,@Ri 数据传送指令一般不影响标志,只有一种堆栈操作可以直接修改程序状态字 PSW,这 样,可能使某些标志位发生变化. ①以累加器为目的操作数的内部数据传送指令 MOV MOV MOV MOV A,Rn A,direct A,@Ri A,#data
;A←(Rn) ;A←(direct) ;A←( (Ri) ) ;A←data
这组指令的功能是:把源操作数的内容送入累加器 A.例如:MOV A,#10H,该指令 执行时,将立即数 10H(在 ROM 中紧跟在操作码后)送入累加器 A 中. ② 数据传送到工作寄存器 Rn 的指令 MOV MOV MOV Rn,A Rn,direct Rn,#data
;Rn←(A) ;Rn←(direct) ;Rn←data

这组指令的功能是: 把源操作数的内容送入当前工作寄存器区的 R0~R7 中的某一个寄 存器. 指令中 Rn 在内部数据存储器中的地址由当前的工作寄存器区选择位 RS1, RS0 确定, 可以是 00H~07H,08H~0FH,10H~17H,18H~1FH.例如:MOV R0,A,若当前 RS1, RS0 设置为 00(即工作寄存器 0 区) ,执行该指令时,将累加器 A 中的数据传送至工作寄存 器 R0(内部 RAM 00H)单元中. ③ 数据传送到内部 RAM 单元或特殊功能寄存器 SFR 的指令 direct,A ;direct←(A) MOV direct,Rn ;direct←(Rn) MOV direct1,direct2 ;direct1←(direct2) MOV direct,@Ri ;direct←( (Ri) ) MOV direct,#data ;direct←#data MOV @Ri,A ; (Ri←(A) MOV @Ri,direct ; (Ri)←(direct) MOV @Ri,#data ; (Ri)←data MOV DPTR,#data16 ;DPTR←data16 MOV 这组指令的功能是:把源操作数的内容送入内部 RAM 单元或特殊功能寄存器.其中第 三条指令和最后一条指令都是三字节指令. 第三条指令的功能很强, 能实现内部 RAM 之间, 特殊功能寄存器之间或特殊功能寄存器与内部 RAM 之间的直接数据传送. 最后一条指令是 将 16 位的立即数送入数据指针寄存器 DPTR 中. 片内数据 RAM 及寄存器的数据传送指令 MOV,PUSH 和 POP 共 18 条,如图 5 所示.
图 5 片内RAM及寄存器的数据传送指令
④累加器 A 与外部数据存储器之间的传送指令 A,@DPTR ;A←(DPTR) MOVX A,@Ri ;A←( (Ri) ) MOVX @DPTR,A ; (DPTR)←A MOVX @Ri,A ; (Ri)← A MOVX 这组指令是: 在累加器 A 与外部数据存储器 RAM 单元或 I/O 口之间进行数据传送前两 条指令执行时,P3.7 引脚上输出有效信号,用作外部数据存储器的读选通信号;后两条指

令执行时,P3.6 引脚上输出有效信号,用作外部数据存储器的写选通信号.DPTR 所包含的 16 位地址信息由 P0(低 8 位)和 P2(高 8 位)输出,而数据信息由 P0 口传送,P0 口作分 时复用的总线.由 Ri 作为间接寻址寄存器时,P0 口上分时 Ri 指定的 8 位地址信息及传送 8 位数据,指令的寻址范围只限于外部 RAM 的低 256 个单元. ⑤程序存储器内容送累加器 MOVC A,@A+PC MOVC A,@A+DPTR 这是两条很有用的查表指令, 可用来查找存放在外部程序存储器中的常数表格. 第一条 指令是以 PC 作为基址寄存器,A 的内容作为无符号数和 PC 的内容(下一条指令的起始地 址) 相加后得到一个 16 位的地址, 并将该地址指出的程序存储器单元的内容送到累加器 A. 这条指令的优点是不改变特殊功能寄存器 PC 的状态, 只要根据 A 的内容就可以取出表格中 的常数.缺点是表格只能放在该条指令后面的 256 个单元之中,表格的大小受到了限制,而 且表格只能被一段程序所利用. 第二条指令是以 DPTR 作为基址寄存器,累加器 A 的内容作为无符号数与 DPTR 内容 相加,得到一个 16 位的地址,并把该地址指出的程序存储器单元的内容送到累加器 A.这 条指令的执行结果只与指针 DPTR 及累加器 A 的内容有关,与该指令存放的地址无关,因 此,表格的大小和位置可以在 64KB 程序存储器中任意安排,并且一个表格可以为各个程序 块所公用. ⑥ 堆栈操作指令 PUSH direct POP direct 在 MCS-51 单片机的内部 RAM 中,可以设定一个先进后出,后进先出的区域,称其为 堆栈.在特殊功能寄存器中有一个堆栈指针 SP,它指出栈顶的位置.进栈指令的功能是: 首先将堆栈指针 SP 的内容加 1,然后将直接地址所指出的内容送入 SP 所指出的内部 RAM 单元;出栈指令的功能是:将 SP 所指出的内部 RAM 单元的内容送入由直接地址所指出的 字节单元,接着将 SP 的内容减 1. 例如:进入中断服务程序时,把程序状态寄存器 PSW,累加器 A,数据指针 DPTR 进 栈保护.设当前 SP 为 60H.则程序段 PUSH PSW PUSH ACC PUSH DPL PUSH DPH 执行后,SP 内容修改为 64H,而 61H,62H,63H,64H 单元中依次栈入 PSW,A,DPL, DPH 的内容,当中断服务程序结束之前,如下程序段(SP 保持 64H 不变) POP DPH POP DPL POP ACC POP PSW 指令执行之后,SP 内容修改为 60H,而 64H,63H,62H,61H 单元的内容依次弹出到 DPH,DPL,A,PSW 中. MCS-51 提供一个向上的堆栈,因此 SP 设置初值时,要充分考虑堆栈的深度,要留出 适当的单元空间,满足堆栈的使用.

⑦ 字节交换指令 数据交换主要是在内部 RAM 单元与累加器 A 之间进行,有整字节和半字节两种交换. (1) 整字节交换指令 XCH XCH XCH A,Rn A,direct A,@Ri
; (A) (Rn) ; (A) (direct) ; (A) ( (Ri) )
(2)半字节交换指令 字节单元与累加器 A 进行低 4 位的半字节数据交换.只有一条指令. XCHD A,@Ri
(3)累加器高低半字节交换指令 只有一条指令: SWAP A
【例 1】 (R0)=30H, (A)=65H, (30H)=8FH 执行指令:XCH A,@R0 ; (R0)=30H, (A)=8FH, (30H)=65H XCHD A,@R0 ; (R0)=30H, (A)=6FH, (30H)=85H SWAP A ; (A)=56H

数据交换指令 XCH,XCHD,和 SWAP 共 5 条,如图 6 所示.
图6
数据交换指令
3
算术运算类指令
算术运算类指令共有 24 条,包括加,减,乘,除 4 种基本算术运算指令,这 4 种指令 能对 8 位的无符号数进行直接运算,借助溢出标志,可对带符号数进行补码运算;借助进位 标志,可实现多精度的加,减运算,同时还可对压缩的 BCD 码进行运算,其运算功能较强. 算术指令用到的助记符共有 8 种:ADD,ADDC,INC,SUBB,DEC,DA ,MUL,DIV. 算术运算指令执行结果将影响进位标志 (Cy) 辅助进位标志 , (Ac) 溢出标志位 , (Ov) . 但是加 1 和减 1 指令不影响这些标志.对标志位有影响的算术运算指令见表 3-10 中,×表 示指令运算的结果使该标志位置位或复位. 1. 加法指令 加法指令分为普通加法指令,带进位加法指令和加 1 指令. (1)普通加法指令 A,Rn ;A←(A)+(Rn) ADD A,direct ;A←(A)+(direct) ADD A,@Ri ;A←(A)+( (Ri) ) ADD A,#data ;A←(A)+ data ADD 这组指令的功能是将累加器 A 的内容与第二操作数相加,其结果放在累加器 A 中.相 加过程中如果位 7(D7)有进位,则进位标志 Cy 置"1" ,否则清"0" ;如果位 3(D3)位 有进位,则辅助进位标志 Ac 置"1" ,否则清"0" . 对于无符号数相加,若 Cy 置"1" ,说明和数溢出(大于 255) .对于带符号数相加时, 和数是否溢出(大于+127 或小于-128) ,则可通过溢出标志 OV 来判断,若 OV 置为"1" , 说明和数溢出. 【例 2】 (A)=85H,R0=20H, (20H)=0AFH,执行指令: ADD A,@R0
结果: (A)=34H;Cy=1;AC=1;OV=1. 对于加法,溢出只能发生在两个加数符号相同的情况.在进行带符号数的加法运算时,

溢出标志 OV 是一个重要的编程标志,利用它可以判断两个带符号数相加,和数是否溢出. (2)带进位加法指令 A,Rn ;A←(A)+(Rn)+(Cy) ADDC A,direct ;A←(A)+(direct)+(Cy) ADDC A,@Ri ;A←(A)+( (Ri) )+(Cy) ADDC A,#data ;A←(A)+ data+(Cy) ADDC 这组指令的功能与普通加法指令类似,唯一的不同之处是,在执行加法时,还要将上一 次进位标志 Cy 的内容也一起加进去,对于标志位的影响也与普通加法指令相同. 【例 3】 (A)=85H, (20H)=0FFH,Cy=1 执行指令: ADDC A,20H
结果: (A)=85H;Cy=1;AC=1;OV=0. (3)增量指令
;A←(A)+1 INC A ;Rn ←(Rn)+1 INC Rn ;direct ←(direct)+1 INC direct ;(Ri)←( (Ri))+1 INC @Ri ;DPTR ←(DPTR)+1 INC DPTR 这组指令的功能是:将指令中指出的操作数的内容加 1.若原来的内容为 0FFH,则加 1 后将产生溢出,使操作数的内容变成 00H,但不影响任何标志.最后一条指令是对 16 位 的数据指针寄存器 DPTR 执行加 1 操作,指令执行时,先对低 8 位指针 DPL 的内容加 1, 当产生溢出时就对高 8 位指针 DPH 加 1,但不影响任何标志. 【例 4】 (A)=12H, (R3)=0FH, (35H)=4AH, (R0)=56H, (56H)=00H 执行如下指令:INC A ;执行后(A)=13H INC R3 ;执行后(R3)=10H INC 35H ;执行后(35H)=4BH INC @R0 ;执行后(56H)=01H (4)十进制调整指令
DA A 这条指令对累加器 A 参与的 BCD 码加法运算所获得的 8 位结果进行十进制调整, 使累 加器 A 中的内容调整为二位压缩型 BCD 码的数.使用时必须注意,它只能跟在加法指令之 后,不能对减法指令的结果进行调整,且其结果不影响溢出标志位. 执行该指令时,判断 A 中的低 4 位是否大于 9,若满足大于则低 4 位做加 6 操作; 同样,A 中的高 4 位大于 9 则高 4 位加 6 操作. 例如:有两个 BCD 数 36 与 45 相加,结果应为 BCD 码 81,程序如下: MOV A,#36H ADD A,#45H DA A 这段程序中,第一条指令将立即数 36H(BCD 码 36H)送入累加器 A;第二条指令进 行如下加法:

得结果 7BH;第三条指令对累加器 A 进行十进制调整,低 4 位(为 0BH)大于 9,因 此要加 6,最后得到调整的 BCD 码 81. 2. 减法指令 (1)带进位减法指令 A,Rn ;A←(A)-(Rn)-(Cy) SUBB A,direct ;A←(A)-(direct)-(Cy) SUBB A,@Ri ;A←(A)-(Ri)-(Cy) SUBB A,#data ;A←(A)-data-(Cy) SUBB 这组指令的功能是:将累加器 A 的内容与第二操作数及进位标志相减,结果送回到累 加器 A 中. 在执行减法过程中, 如果位 7 (D7) 有借位, 则进位标志 Cy 置 "1" 否则清 , "0" ; 如果位 3(D3)有借位,则辅助进位标志 AC 置"1" ,否则清"0" .若要进行不带借位的减 法操作,则必须先将 Cy 清"0" (2)减 1 指令
;A←(A)-1 A DEC ;Rn←(Rn)-1 DEC Rn ;direct←(direct)-1 DEC direct ;(Ri)←( (Ri))-1 DEC @Ri 这组指令的功能是:将指出的操作数内容减 1.如果原来的操作数为 00H,则减 1 后将 产生溢出,使操作数变成 0FFH,但不影响任何标志.
3. 乘法指令 乘法指令完成单字节的乘法,只有一条指令: MUL AB 这条指令的功能是:将累加器 A 的内容与寄存器 B 的内容相乘,乘积的低 8 存放在累加 器 A 中,高 8 位存放于寄存器 B 中,如果乘积超过 0FFH,则溢出标志 OV 置"1" ,否则清 "0" ,进位标志 Cy 总是被清"0" . 【例 5】 (A)=50H, (B)=0A0H,执行指令: MUL AB 结果: (B)=32H, (A)=00H(即乘积为 3200H) ,Cy=0,OV=1. 4. 除法指令 除法指令完成单字节的除法,只有一条指令: DIV AB
这条指令的功能是:将累加器 A 中的内容除以寄存器 B 中的 8 位无符号整数,所得商 的整数部分放在累加器 A 中, 余数部分放在寄存器 B 中, 清进位标志 Cy 和溢出标志 OV 为 "0" 若原来 B 中的内容为 0, . 则执行该指令后 A 与 B 中的内容不定, 并将溢出标志置 "1" , 在任何情况下,进位标志 Cy 总是被清"0" . 算术运算类指令包括:ADD,ADDC,SUBB,MUL,DIV,INC,DEC 和 DA,如图 7

所示.
图7
算术运算类指令
4
逻辑运算指令
逻辑运算指令共有 24 条,分为简单逻辑操作指令,逻辑与指令,逻辑或指令和逻辑异 或指令.逻辑运算指令用到的助记符有 CLR,CPL,ANL,ORL,XRL,RL,RLC,RR, RRC. 1. 简单逻辑操作指令 CLR CPL RL RLC RR RRC A A A A A A
;对累加器 A 清"0" ;对累加器 A 按位取反 ;累加器 A 的内容向左循环移 1 位 ;累加器 A 的内容带进位标志向左循环移 1 位 ;累加器 A 的内容向右循环移 1 位 ;累加器 A 的内容带进位标志向右循环移 1 位
循环左移指令示意图:RL
A

循环右移指令示意图:RR A
带进位的循环左移指令示意图:RLC A
带进位的循环右移指令示意图:RRC A
这组指令的功能是:对累加器 A 的内容进行简单的逻辑操作除了带进位的移位指令外, 其他都不影响 Cy,AC,OV 等标志.示意图可以帮助我们进一步理解循环移位指令. 2.逻辑与指令 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 ANL 这组指令的功能是: 将两个操作数的内容按位进行逻辑与操作, 并将结果送回目的操作数 的单元中. 【例 6】 (A)=37H, (R0)=0A9H 执行指令: ANL A,R0 结果: (A)=21H 3. 逻辑或指令 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 ORL 这组指令的功能是:将两个操作数的内容按位进行逻辑或操作,并将结果送回目的操 作数的单元中. 【例 7】 (A)=37H, (P1)=09H 执行指令: ORL P1,A 结果: (A)=3FH

4. 逻辑异或指令 XRL XRL XRL XRL XRL XRL A,Rn A,direct A,@Ri A,#data direct,A direct,#data
;A←(A)⊕(Rn) ;A←(A)⊕(direct) ;A←(A)⊕( (Ri)) ;A←(A)⊕ data ;direct ←(direct)⊕(A) ;direct ←(direct)⊕data
这组指令的功能是:将两个操作数的内容按位进行逻辑异或操作,并将结果送回目的 操作数的单元中.
图8
逻辑运算类指令
5
控制转移类指令
控制转移指令共有 17 条,不包括按布尔变量控制程序转移指令.其中有 64K 范围的长 调用,长转移指令;2KB 范围的绝对调用和绝对转移指令;有全空间的长相对转移和一页 范围内的短相对转移指令;还有多种条件转移指令.由于 MCS-51 提供了较丰富的控制转移 指令, 因此在编程上相当灵活方便. 这类指令用到的助记符共有 10 种: AJMP, LJMP, SJMP, JMP,ACALL,LCALL,JZ,JNZ,CJNE,DJNZ. 1. 无条件转移指令
(1)绝对转移指令 AJMP addr11 这是 2KB范围内的无条件跳转指令,执行该指令时,先将PC+2,然后将addr11 送入 PC10~PC0,而PC15~PC11保持不变.这样得到跳转的目的地址.需要注意的是,目标地址 与AJMP后一条指令的第一个字节必须在同一个 2KB区域的存储器区域内.这是一条二字节 指令,其指令格式为: A10 A9 A8 0 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0

操作过程可表示为:PC←(PC)+2 PC10~0←addr11 例如程序存储器的 2070H 地址单元有绝对转移指令: 2070H AJMP 16AH(00101101010B) 因此指令的机器代码为: 0 0 0 1 1 1 0 0 0 0 1 0 0 1 1 0
程序计数器Pc当前=PC+2=2070H+02H=2072H,取其高 5 位 00100 和指令机器代码给出的 11 位地址 00101101010 最后形成的目的地址为:0010 0001 0110 1010B=216AH. (2)相对转移指令 SJMP rel 执行指令时,先将 PC+2,再把指令中带符号的偏移量加到 PC 上,得到跳转的目的地址 送入 PC. 目标地址=源地址+2+rel 源地址是 SJMP 指令操作码所在的地址.相对偏移量 rel 是一个用补码表示的 8 位带符 号数,转移范围为当前 PC 值的-128~+127 共 256 个单元. 若偏移量 rel 取值为 FEH(-2 的补码) ,则目标地址等于源地址,相当于动态停机,程 序终止在这条指令上,停机指令在调试程序时很有用.MCS-51 没有专用的停机指令,若要 求动态停机可用 SJMP 指令来实现: HERE:SJMP HERE; 动态停机(80H,FEH) 或写成:HERE SJMP $ ; "$"表示本指令首字节所在单元的地址,使用它可省略 标号. (3)长跳转指令 LJMP addr16 ;PC ←addr16 执行该指令时,将 16 位目标地址 addr16 装入 PC,程序无条件转向指定的目标地址. 转移指令的目标地址可在 64KB 程序存储器地址空间的任何地方,不影响任何标志. (4)间接转移指令(散转指令) JMP @A+DPTR ;PC ←(A)+(DPTR) 这条指令的功能是把累加器A中的 8 位无符号数与数据指针DPTR的 16 位数相加(模 16 2 ) ,相加之和作为下一条指令的地址送入PC中,不改变A和DPTR的内容,也不影响标志. 间接转移指令采用变址方式实现无条件转移,其特点是转移地址可以在程序运行中加以改 变.例如,当把DPTR作为基地址且确定时,根据A的不同值就可以实现多分支转移,故一 条指令可完成多条条件判断转移指令功能. 这种功能称为散转功能, 所以间接指令又称为散 转指令. 2. 条件转移指令
; (A)=0 转移 JZ rel ; (A)≠0 转移 JNZ rel 这类指令是依据累加器 A 的内容是否为 0 的条件转移指令.条件满足时转移(相当于 一条相对转移指令) ,条件不满足时则顺序执行下面一条指令.转移的目标地址在以下一条 指令的起始地址为中心的 256 个字节范围之内(-128~+127) .当条件满足时, PC←(PC)+2+ rel,其中(PC)为该条件转移指令的第一个字节的地址. 3. 比较转移指令

在 MCS-51 中没有专门的比较指令,但提供了下面 4 条比较不相等转移指令; A,direct,rel ;(A)≠(direct)转移 CJNE A,#data,rel ;(A)≠ data 转移 CJNE Rn,#data,rel ;(Rn)≠ data 转移 CJNE @Ri,#data,rel ;((Ri))≠ data 转移 CJNE 这组指令的功能是:比较前面两个操作数的大小,如果它们的值不相等则转移.转移地 址的计算方法与上述两条指令相同.如果第一个操作数(无符号整数)小于第二个操作数, 则进位标志 Cy 置"1" ,否则清"0" ,但不影响任何操作数的内容. 4. 减 1 不为 0 转移指令
DJNZ Rn,rel ;Rn←(Rn)-1≠0 转移 DJNZ direct,rel ;direct ←(direct)-1≠0 转移 这两条指令把源操作数减 1,结果回送到源操作数中去,如果结果不为 0 则转移. 5. 调用及返回指令
在程序设计中,通常把具有一定功能的公用程序段编成子程序,当子程序需要使用子 程序时用调用指令, 而在子程序的最后安排一条子程序返回指令, 以便执行完子程序后能返 回主程序继续执行. (1)绝对调用指令 ACALL addr11 这是一条 2KB 范围内的子程序调用指令,其指令格式为; A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 执行该指令时,PC ←PC+2 SP←(SP)+1, (SP)←(PC)7~0 SP←(SP)+1, (SP)←(PC)15~8 PC10~0←addr11 (2)长调用指令 LCALL addr16 这条指令无条件调用位于 16 位地址 addr16 的子程序.执行该指令时,先将 PC+3 以获 得下条指令的首地址,并把它压入堆栈(先低字节后高字节) ,SP 内容加 2,然后将 16 位 地址放入 PC 中,转去执行以该地址为入口的程序.LCALL 指令可以调用 64KB 范围内任 何地方的子程序.指令执行后不影响任何标志.其操作过程如下: PC ←PC+3 SP←(SP)+1, (SP)←(PC)7~0 SP←(SP)+1, (SP)←(PC)15~8 PC10~0←addr16 (3)子程序返回指令 RET 子程序返回指令是把栈顶相邻两个单元的内容弹出送到 PC,SP 的内容减 2,程序返回 PC 值所指的指令处执行.RET 指令通常安排在子程序的末尾,使程序能从子程序返回到主 程序. (4)中断返回指令

RETI 这是指令的功能与 RET 指令相类似.通常安排在中断服务程序的最后. (5) 空操作指令 NOP ;PC ←PC+1 空操作也是 CPU 控制指令,它没有使程序转移的功能.只消耗一个机器周期的时间.常 用于程序的等待或时间的延迟.
图 9 条件转移类指令
6
位操作指令
MCS-51 单片机内部有一个性能优异的位处理器,实际上是一个一位的位处理器,它有 自己的位变量操作运算器,位累加器(借用进位标志 Cy)和存储器(位寻址区中的各位) 等.MCS-51 指令系统加强了对位变量的处理能力,具有丰富的位操作指令.位操作指令的 操作对象是内部 RAM 的位寻址区,即字节地址为 20H~2FH 单元中连续的 128 位(位地址 为 00H~7FH) ,以及特殊功能寄存器中可以进行位寻址的各位.位操作指令包括布尔变量 的传送,逻辑运算,控制转移等指令,它共有 17 条指令,所用到的助记符有 MOV,CLR, CPL,SETB,ANL,ORL,JC,JNC,JB,JNB,JBC 共 11 种. 在布尔处理机中,进位标志 Cy 的作用相当于 CPU 中的累加器 A,通过 Cy 完成位的传 送和逻辑运算.指令中位地址的表达方式有以下几种: (1)直接地址方式:如 0A8H; (2)点操作符方式:如 IE.0; (3)位名称方式:如EX0 (4)用户定义名方式;如用伪指令 BIT 定义: WBZD0 BIT EX0 经定义后,允许指令中使用WBZD0 代替EX0 以上 4 种方式都是指允许中断控制寄存器IE中的位 0(外部中断 0 允许位EX0) ,它的 位地址是 0A8H,而名称为EX0,用户定义名为WBDZ0. ①位数据传送指令 C,bit ;Cy←(bit) MOV bit,C ;bit←(Cy) MOV 这组指令的功能是: 把源操作数指出的布尔变量送到目的操作数指定的位地址单元, 其

中一个操作数必须为进位标志 Cy, 另一个操作数可以是任何可直接寻址位. ②位变量修改指令
;Cy ←0 CLR C CLR bit ;bit ←0 CPL C ;Cy ←(Cy) CPL bit ;bit ←(bit) SETB C ;Cy ←1 SETB bit ;bit ←1 这组指令对操作数所指出的位进行清"0" ,取反,置"1"的操作,不影响其它标志.
③ 位变量逻辑与指令 ANL C,bit ANL C,/bit ④ 位变量逻辑或指令 ORL C,bit ;Cy ←(Cy)∨(bit) ORL C,/bit ;Cy ←(Cy)∨(/bit) 位操作类指令如图 10 所示.
;Cy ←(Cy)∧(bit) ;Cy ←(Cy)∧(/bit)
图 10 位操作类指令
⑤位变量条件转移指令
;若(Cy)=1,则转移 PC←(PC)+2+rel rel JC ;若(Cy)=0,则转移 PC←(PC)+2+rel JNC rel bit,rel ;若(bit)=1,则转移 PC←(PC)+3+rel JB bit,rel ;若(bit)=0,则转移 PC←(PC)+3+rel JNB bit,rel ;若(bit)=1,则转移 PC←(PC)+3+rel,并 bit←0 JBC 这组指令的功能是:当某一特定条件满足时,执行转移操作指令(相当于一条相对转移 指令) ;条件不满足时,顺序执行下面的一条指令.前面 4 条指令在执行中不改变条件位的 布尔值,最后一条指令,在转移时将 bit 清"0" .

图 11 位条件转移指令
以上介绍了 MCS-51 指令系统,理解和掌握本章内容,是应用 MCS-51 单片机的一个重 要前提. 【例 8】指出下列程序段的每条指令的源操作数是什么寻址方式,并写出每步运算的结果. (相关单元的内容)设程序存储器(1050H)=5AH:
MOV A,#0FH ;A=0FH ,立即寻址
MOV 30H,#0F0H MOV MOV MOV R2,A R1,#30H A,@R1
;(30H)=F0H,立即寻址 ;R2=0FH ,寄存器寻址
;R1=30H ,立即寻址 ;A=F0H ,寄存器间接寻址 ;DPTR=1000H,立即寻址 ;A=50H,立即寻址 ;A=5AH,基址变址寻址 ;PC 目标=105AH,基址变址寻址 ;C=0,寄存器寻址 ; (20H)=0,寄存器寻址
MOV DPTR,#1000H MOV MOVC A,#50H A,@ A+ DPTR
JMP @A+DPTR CLR MOV C 20H,C
【例 9】用数据传送指令实现下列要求的数据传送. (1)R0 的内容输出到 R1. (2)内部 RAM 20H 单元的内容传送到 A 中. (3)外部 RAM 30H 单元的内容送到 R0. (4)外部 RAM 30H 单元的内容送内部 RAM20H 单元. (5)外部 RAM 1000H 单元的内容送内部 RAM 20H 单元. (6)程序存储器 ROM 2000H 单元的内容送 R1. (7)ROM 2000H 单元的内容送内部 RAM 20H 单元. (8)ROM 2000H 单元的内容送外部 RAM 30H 单元. (9)ROM 2000H 单元的内容送外部 RAM 1000H 单元. 解: (1) MOV A,R0 MOV R1,A (2) MOV A,20H (3) MOV R0,#30H 或 MOV R1,#30H

AT89C51单片机的基本结构和工作原理

AT89C51单片机的主要工作特性: ·内含4KB的FLASH存储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器; ·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口; ·具有一个数据指针DPTR; ·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位; AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz. AT89C51各部分的组成及功能: 1.单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

(1)运算器 运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。 ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。 暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。 累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。 B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB寄存器中。 (2)控制器 控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容是0000H. (3)存储器 单片机内部的存储器分为程序存储器和数据存储器。AT89C51单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。 (4)外围接口电路 AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。 AT89C51的工作原理: 1.引脚排列及功能 AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。 (1)I/O口线 ·P0口 8位、漏极开路的双向I/O口。 当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置1。P0口可驱动8个TTL负载。 ·P1口 8位、准双向I/O口,具有内部上拉电阻。 P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。 ·P2 8位、准双向I/O口,具有内部上拉电阻。 当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,P2口接收高字节地址和某些控制信号。 ·P3 8位、准双向I/O口,具有内部上拉电阻。 P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL负载。 (2)控制信号线

单片机汇编指令大全

单片机汇编指令一览表 作者:乡下人 助记符指令说明字节数周期数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2 MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR,#data16 16 位常数加载到数据指针 3 1 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交换 2 1 XCH A, @Ri 间接RAM 和累加器交换 1 1 XCHD A, @Ri 间接RAM 和累加器交换低4 位字节 1 1 (算术运算类指令) INC A 累加器加1 1 1 INC Rn 寄存器加1 1 1 INC direct 直接地址加1 2 1 INC @Ri 间接RAM 加1 1 1 INC DPTR 数据指针加1 1 2 DEC A 累加器减1 1 1 DEC Rn 寄存器减1 1 1 DEC direct 直接地址减1 2 2

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

8051单片机的内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器(CPU)是整个单片机的核心 部件,是8位数据宽度的处理器,能处理 8位二进制数据或代码,CPU负责控制、 指挥和调度整个单元系统协调的工作,完 成运算和控制输入输出功能等操作。 ·数据存储器(RAM): 8051内部有128个8位用户数据存储 单元和128个专用寄存器单元,它们是统 一编址的,专用寄存器只能用于存放控制 指令数据,用户只能访问,而不能用于存 放用户数据,所以,用户能使用的的RAM 只有128个,可存放读写的数据,运算的 中间结果或用户定义的字型表。 ·程序存储器(ROM): 8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM): 8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 ·并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。 ·全双工串行口: 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以 用作异步通信收发器,也可以当同步移位器使用。 ·中断系统: 8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可 满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路: 8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051 单片机需外置振荡电容。

【EN】单片机汇编指令讲解

2-71 Microcontroller Instruction Set For interrupt response time information, refer to the hardware description chapter. Note: 1.Operations on SFR byte address 208 or bit addresses 209-215 (that is, the PSW or bits in the PSW) also affect flag settings. Instructions that Affect Flag Settings (1) Instruction Flag Instruction Flag C OV AC C OV AC ADD X X X CLR C O ADDC X X X CPL C X SUBB X X X ANL C,bit X MUL O X ANL C,/bit X DIV O X ORL C,bit X DA X ORL C,/bit X RRC X MOV C,bit X RLC X CJNE X SETB C 1 The Instruction Set and Addressing Modes R n Register R7-R0 of the currently selected Register Bank. direct 8-bit internal data location’s address. This could be an Internal Data RAM location (0-127) or a SFR [i.e., I/O port, control register, status register, etc. (128-255)]. @R i 8-bit internal data RAM location (0-255) addressed indirectly through register R1or R0. #data 8-bit constant included in instruction.#data 1616-bit constant included in instruction. addr 1616-bit destination address. Used by LCALL and LJMP . A branch can be anywhere within the 64K byte Program Memory address space. addr 11 11-bit destination address. Used by ACALL and AJMP . The branch will be within the same 2K byte page of program memory as the first byte of the following instruction. rel Signed (two’s complement) 8-bit offset byte. Used by SJMP and all conditional jumps. Range is -128 to +127 bytes relative to first byte of the following instruction. bit Direct Addressed bit in Internal Data RAM or Special Function Register.

关于习题二答案-单片机的指令系统

关于习题二答案-单片机的指令系统

1、执行下列3条指令后,30H单元的内容是( C )。 MOV R0,#30H MOV 40H,#0EH MOV @R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时(B)。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向 A 。 A)栈底单元 B)7FH

C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,@A+PC源操作数的寻址方式是 D 。 A)寄存器寻址方式B)寄存器间接寻址方式 C)直接寻址方式D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是 A 。 A)立即寻址方式B)直接寻址方式 C)位寻址方式D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是 C 。

A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是 D 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断 A 中的内容是否为0。 A)A B) B C) C D)PC 9、MOVX A,@DPTR指令中源操作数的寻址方式是(B)

A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区(B) A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是(A) A)位寻址B)直接寻址 C)立即寻址 D)寄存器寻址 1、8051单片机共有7 种寻址方式。访问外部数据存储器应采用寄存器间接寻址方式。 2、访问外部数据存储器应采用寄存器间接寻址方式;查表应使用变址寻址方式。 3、在8051单片机中,堆栈操作的指令有PUSH 和 POP两个。 4、在8051单片机中,子程序调用的指令有ACALL 和 LCALL两个。 5、CJNE指令都是 3字节字节指令。

单片机常用指令

常用单片机汇编指令: 1 MOV A,Rn 寄存器内容送入累加器 2 MOV A,direct 直接地址单元中的数据送入累加器 3 MOV A,@Ri 间接RAM 中的数据送入累加器 4 MOV A,#data 立即数送入累加器 5 MOV Rn,A 累加器内容送入寄存器 6 MOV Rn,direct 直接地址单元中的数据送入寄存器 7 MOV Rn,#data 立即数送入寄存器 8 MOV direct,A 累加器内容送入直接地址单元 9 MOV direct,Rn 寄存器内容送入直接地址单元 10 MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元 11 MOV direct,@Ri 间接RAM 中的数据送入直接地址单元 12 MOV direct,#data 立即数送入直接地址单元 13 MOV @Ri,A 累加器内容送间接RAM 单元 14 MOV @Ri,direct 直接地址单元数据送入间接RAM 单元 15 MOV @RI,#data 立即数送入间接RAM 单元 16 MOV DRTR,#dat16 16 位立即数送入地址寄存器 17 MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器 18 MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器 19 MOVX A,@Ri 外部RAM(8 位地址)送入累加器 20 MOVX A,@DPTR 外部RAM(16 位地址)送入累加器 21 MOVX @Ri,A 累计器送外部RAM(8 位地址) 22 MOVX @DPTR,A 累计器送外部RAM(16 位地址) 23 PUSH direct 直接地址单元中的数据压入堆栈 24 POP direct 弹栈送直接地址单元 25 XCH A,Rn 寄存器与累加器交换 26 XCH A,direct 直接地址单元与累加器交换 27 XCH A,@Ri 间接RAM 与累加器交换 8 XCHD A,@Ri 间接RAM 的低半字节与累加器交换 算术操作类指令: 1 ADD A,Rn 寄存器内容加到累加器 2 ADD A,direct 直接地址单元的内容加到累加器 3 ADD A,@Ri 间接ROM 的内容加到累加器 4 ADD A,#data 立即数加到累加器 5 ADDC A,Rn 寄存器内容带进位加到累加器 6 ADDC A,direct 直接地址单元的内容带进位加到累加器 7 ADDC A,@Ri 间接ROM 的内容带进位加到累加器 8 ADDC A,#data 立即数带进位加到累加器 9 SUBB A,Rn 累加器带借位减寄存器内容

【可直接使用】单片机指令表(最全).doc

单片机指令以A开头的指令有18条,分别为: 1、ACALL addr11 指令名称:绝对调用指令 指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。操作内容: PC←(PC)+2SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addrl0~0 字节数: 2 机器周期:2 使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。 2、ADD A,Rn 指令名称:寄存器加法指令指令代码:28H~2FH 指令功能:累加器内容与寄存器内容相加 操作内容:A←(A)+(Rn),n=0~7 字节数: 1 机器周期;1 影响标志位:C,AC,OV 3、ADD A,direct 指令名称:直接寻址加法指令指令代码:25H 指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 4、ADD A,@Ri ’ 指令名称:间接寻址加法指令指令代码:26H~27H 指令功能:累加器内容与内部RAM低128单元内容相加 操作内容:A←(A)+((Ri)),i=0,1 字节数: 1 机器周期:1 影响标志位:C,AC,OV 5、ADD A,#data 指令名称:立即数加法指令指令代码:24H 指令功能:累加器内容与立即数相加 操作内容:A←(A)+data 字节数: 2 机器周期:1 影响标志位:C,AC,OV 6、ADDC A,Rn 指令名称:寄存器带进位加法指令指令代码:38H~3FH 指令功能:累加器内容、寄存器内容和进位位相加 操作内容:A←(A)+(Rn)+(C),n=0~7 字节数: 1 机器周期:1 影响标志位:C,AC,OV 7、ADDC A,direct 指令名称:直接寻址带进位加法指令指令代码:35H 指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加 操作内容:A←(A)+(direct)+(C) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 8、ADDC A,@Ri 指令名称:间接寻址带进位加法指令指令代码:36H~37H 指令功能:累加器内容, 内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1 字节数: 1 机器周期:1 影响标志位:C,AC,OV 9、ADDC A,#data 指令名称:立即数带进位加法指令指令代码:34H 指令功能:累加器内容、立即数及进位位相加 操作内容:A←(A)+data+(C) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 10、AJMP addr11 指令名称:绝对转移指令 指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不变。操作内容:PC←(PC)+2PCl0~0←addrll 字节数: 2 机器周期:2 使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB。 11、ANL A,Rn 指令名称:寄存器逻辑与指令指令代码:58H~5FH 指令功能:累加器内容逻辑与寄存器内容 操作内容:A←(A)∧(Rn),n=0~7 字节数: 1 机器周期:1 12、ANL A,direct 指令名称:直接寻址逻辑与指令指令代码:55H 指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容 操作内容:A←(A)∧(diret) 字节数: 2 机器周期:1 精选

第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节) 1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况? (1)MOV A,#19H ADD A,#66H (2)MOV A,#5AH ADD A,#6BH 2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少? (1)ADDC A,R0, (2)ADDC A,31H (3) ADDC A,@R0, (4) ADDC A,#85H 3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。 4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况? CLR C MOV A,#52H SUBB A,#0B4H 5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况? (1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R1 6.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。 7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。 8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么? (1)MOV A, #0FFH ANL A, R0 (2)MOV A, #0FH ANL A, 30H (3)MOV A, #0F0H ANL A, @R0 (4)MOV A, #80H ANL 30H, A 9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。 10.已知外部RAM30H中有一数AAH令高四位不变,低四位取反,试编出相应的程序。 11.已知:30H单元有一正数X,试编写求(-X)补码的程序。 12.如图所示,若X,Y,Z三个输入信号放在X,Y,Z三个单元中,试编写模拟电路功能的程序,并把电路输出送到F单元。

8051单片机CPU的内部组成及功能介绍

8051单片机CPU的内部组成及功能介绍 一、运算器 运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要用于乘法和除法操作。标志寄存器PSW也是一个八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。其每位的具体含意如下所示。PSW CY AC FO RS1 RS0 OV -P对用户来讲,最关心的是以下四位。 1?进位标志CY(PSW?7)。它表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。 2?辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。 3?溢出标志位OV。MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。 4?奇偶标志P。反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。 PSW的其它位,将在以后再介绍。由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)。其功能在介绍位指令时再说明。 二、控制器 控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP等。这里程序计数器PC是由16位寄存器构成的计数器。要单片机执行一个程序,就必须把该程序按顺序预先装入存储器ROM的某个区域。单片机动作时应按顺序一条条取出指令来加以执行。因此,必须有一个电路能找出指令所

IC8位单片机汇编语言常用指令的识读

PIC单片机指令集简介 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号操作码助记符操作数1,操作数2;注释 指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。 1与MCS-51系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。 书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。 2该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。 3由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。在这里PIC 8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。 指令的操作数项也是可选项。 PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。 4用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。 二、清零指令(共4条) 1 实例:CLRW;寄存器W被清零 说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。 2 实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)

8051单片机汇编指令速查表讲解

8051系列单片机汇编语言指令速查表

说明: 1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定

MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。这里介绍指令助记符及其相关符号的记忆方法。 一、助记符号的记忆方法 1、表格列举法 把44个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。 2、英文还原法 单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。例如: 增量INC-Incremect 减量DNC-Decrement 短转移SJMP-Short jump 长转移LJMP-Long jump 比较转移CJNE-Compare jump not equality 绝对转移AJMP-Absolute jump 空操作NOP-No operation 交换XCH-Exchange 加法ADD-Addition 乘法MUL-Multiplication 除法DIV-Division 左环移RL-Rotate left 进位左环移RLC-Rotate left carry 右环移RR-Rotate right 进位右环移RRC-Rotate right carry 3、功能模块记忆法 单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。这样,化整为零,各个击破,实现快速记忆。 1)数据传送组。2)加减运算组 MOV 内部数据传送ADD 加法 MOVC 程序存储器传送ADDC 带进位加法 MOVX 外部数据传送SUBB 带进位减法 3)逻辑运算组。4)子程序调用组。 ANL 逻辑与LCALL 长调用 ORL 逻辑或ALALL 绝对调用 XRL 逻辑异或RET 子程序返回 二、指令的记忆方法 1、指令操作数的有关符号 MCS-51的寻址方式共有七种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址、位寻址。我们必须掌握其表示的方法。

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

关于习题二答案-单片机的指令系统

1、执行下列3条指令后,30H单元的容是( C )。 MOV R0,#30H MOV 40H,#0EH MOV R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时(B)。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向 A 。 A)栈底单元B)7FH C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,A+PC源操作数的寻址方式是 D 。 A)寄存器寻址方式B)寄存器间接寻址方式 C)直接寻址方式D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是 A 。 A)立即寻址方式B)直接寻址方式 C)位寻址方式D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是 C 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是 D 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断 A 中的容是否为0。 A) A B) B C) C D)PC 9、MOVX A,DPTR指令中源操作数的寻址方式是(B) A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区(B) A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是(A) A)位寻址 B)直接寻址 C)立即寻址 D)寄存器寻址 1、8051单片机共有7 种寻址方式。访问外部数据存储器应采用寄存器间接寻址方式。 2、访问外部数据存储器应采用寄存器间接寻址方式;查表应使用变址寻址方式。 3、在8051单片机中,堆栈操作的指令有PUSH 和 POP两个。 4、在8051单片机中,子程序调用的指令有ACALL 和 LCALL两个。 5、CJNE指令都是 3字节字节指令。 6、指令SJMP $ 的功能是无条件转移到本指令的首地址执行程序,即将本指令的首地址送给PC。

PIC8位单片机汇编语言常用指令的识读

PIC8位单片机汇编语言常用指令的识读(上) 各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC 系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 在这里笔者介绍PIC 8位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号操作码助记符操作数1,操作数2;注释 指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。 1 标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。 书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。 2 操作码助记符该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。 3 操作数由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。在这里PIC 8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。 指令的操作数项也是可选项。 PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。 4 注释用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。 二、清零指令(共4条) 1 寄存器清零指令 实例:CLRW;寄存器W被清零 说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。 2 看门狗定时器清零指令。 实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)

单片机的指令系统练习题

单片机的指令系统习题 一、选择题 1、执行下列3条指令后,30H单元的内容是()。 MOV R0,#30H MOV 40H,#0EH MOV @R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时()。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向()。 A)栈底单元 B)7FH C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,@A+PC源操作数的寻址方式是()。 A)寄存器寻址方式 B)寄存器间接寻址方式 C)直接寻址方式 D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是()。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是()。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是()。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断()中的内容是否为0。 A) B)B C)C D)PC 9、MOVX A,@DPTR指令中源操作数的寻址方式是() A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区() A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是() A)位寻址 B)直接寻址 C)立即寻址 D)寄存器寻址 二、填空题 1、8051单片机共有种寻址方式。访问外部数据存储器应采用寻址方式。 2、访问外部数据存储器应采用寻址方式;查表应使用寻址方式。 3、在8051单片机中,堆栈操作的指令有两个。 4、在8051单片机中,子程序调用的指令有两个。 5、CJNE指令都是字节指令。 6、指令SJMP $ 的功能是。

8051单片机引脚图与引脚功能简介

8051单片机引脚图与引脚功能简介 时间:2009-03-02 12:42 来源:未知作者:牛牛 首先我们来连接一下单片机的引脚图,如果,具体功能在下面都有介绍。 单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 ⒈电源: ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; ⒉时钟: XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 ⒊控制线: 控制线共有4根, ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址 ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 ⑵ PSEN:外ROM读选通信号。 ⑶ RST/VPD:复位/备用电源。 ① RST(Reset)功能:复位信号输入端。 ② VPD功能:在Vcc掉电情况下,接备用电源。 ⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。 ① EA功能:内外ROM选择端。 ② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

⒋ I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。 编辑本段复位电路简介 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。 编辑本段单片机复位电路的类型

相关文档
相关文档 最新文档