第三章计算机指令系统 3-1指令格式 3-2指令寻址方式 3-3状态标志 34MCS51指令系统
第三章 计算机指令系统 3-1 指令格式 3-2 指令寻址方式 3-3 状态标志 3-4 MCS-51指令系统
指令格式 汇编语言指令格式 [标号:]操作码操作数1,操作数2[;注释] 换行表示一条指令结束。 例:L0OP:MOVA,#40H;取参数 1.标号:指令的符号地址 MOV move传送 2.操作码:指明指令功能。 XCH exchange交换 3.操作数:指令操作对象 ANL and logic-与逻辑运算 xclusive or 异或运算 数据、地址、寄存器名及约蒲种号p乘法 4.注释行:说明指令在程序邮的作闹 bright,右循环 操作码和操作数是指令主体! P short jump短跳转 RET return子程序返回
一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释] 换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数 1.标号:指令的符号地址 2.操作码:指明指令功能。 3.操作数:指令操作对象 数据、地址、寄存器名及约定符号。 4.注释行:说明指令在程序中的作用。 操作码和操作数是指令主体。 MOV__move传送 XCH__exchange交换 ANL__and logic与逻辑运算 XRL__exclusive or异或运算 MUL__Multiply乘法 RR__rotate right右循环 SJMP__short jump短跳转 RET__return 子程序返回 3-1 指令格式
二,机器语言指令格式 操作码[操作数1][操作数2] 有单字节、双字节和三字节指令。 汇编语言指令中操作码和操作数是指令主体,称为 指令可执行部分,指令表中可查出对应指令代码。 举例: 汇编语言: 机器语言 Mov A, RO e8H 101000 MOV R6, #32H 7E32H 01110101 合01101 MOV 40H, #100H 754064H0160000 01100100
二. 机器语言指令格式 操作码 [操作数1] [操作数2] 有单字节、双字节和三字节指令。 汇编语言指令中操作码和操作数是指令主体,称为 指令可执行部分,指令表中可查出对应指令代码。 举例: 汇编语言: 机器语言: MOV A,R0 E8H MOV R6,#32H 7E 32H MOV 40H,#100H 75 40 64H 11101000 01111110 00110010 01110101 01000000 01100100
3-2指令寻址方式 3-2-1操作数类型 位(b)一位寻址区中的一位二进制数据 字节(B)一8位二进制数据 字(W)一16位双字节数据 3-2-2寻址方式 立即寻址方式 指令中给出实际操作数据(立即数),一般用于为 寄存器或存储器赋常数初值 举例: 8位立即数:MoVA,#40H A<40H 16位立即数: MOV DPTR,#2100H;DPTR2100H
3-2 指令寻址方式 3-2-1 操作数类型 位(b)─ 位寻址区中的一位二进制数据 字节(B)─ 8位二进制数据 字(W)─ 16位双字节数据 3-2-2 寻址方式 一.立即寻址方式 指令中给出实际操作数据(立即数),一般用于为 寄存器或存储器赋常数初值。 举例: 8位立即数: MOV A,#40H ;A40H 16位立即数: MOV DPTR,#2100H ;DPTR2100H
直接寻址方式 指令操作数是存储器单元地址,数据在存储器单元中。 MOV A, 40H A<(40H 例:设存储器两个单元的内容如图所示, 执行指令MOWA,40H后A=56H? 41H[78H 直接寻址方式对数据操作时,地址是40H56H 固定值,而地址所指定的单元内容为 变量形式。 思考题:直接寻址方式指令和立即寻址方式指令的形 式有什么不同?
二.直接寻址方式 指令操作数是存储器单元地址,数据在存储器单元中。 MOV A,40H ;A(40H) 直接寻址方式对数据操作时,地址是 固定值,而地址所指定的单元内容为 变量形式。 41H 78H 40H 56H 56H 例:设存储器两个单元的内容如图所示, 执行指令 MOV A,40H后 A = ? 思考题:直接寻址方式指令和立即寻址方式指令的形 式有什么不同?
寄存器寻址方式 指令操作数为寄存器名,数据在寄存器中。 例:MOVA,RO;A←=RO01000000 设指令执行前A=20H,R0=40H,A RO 执行指令后,A=40H,R0=40H 四.寄存器间接寻址方式 指令的操作数为寄存器名,寄存器中为数据地址。 存放地址的寄存器称为间址寄存器或数据指针。 例:MOVA,@R0;A<(R0 设指令执行前A=20H,R0=40H,地址为40H存储器 单元内容如图所示。执行指令后, 41H67H A=34H,RO=40H(40H)=34HR0→40H34H
三.寄存器寻址方式 指令操作数为寄存器名,数据在寄存器中。 例: MOV A,R0;AR0 设指令执行前 A=20H,R0=40H, 执行指令后,A= ?,R0= ? 四.寄存器间接寻址方式 指令的操作数为寄存器名,寄存器中为数据地址。 存放地址的寄存器称为间址寄存器或数据指针。 例: MOV A,@R0;A(R0) 设指令执行前 A=20H,R0=40H,地址为40H存储器 单元内容如图所示。执行指令后, A= ? ,R0 = ? , (40H)= ? 41H 67H 40H 34H 34H 40H 34H 40H 40H 0100 0000 A 0010 0000 R0 0100 0000 R0→
五.变址间接寻址方式 数据在存储器中,指令给出的寄存器中为数据的 基地址和偏移量。 数据地址=基地址+偏移量。 9: MOVC A, @A+DPTR; A<(A+DPTR) 设指令执行前A=09H,DPTR=2000H,存储器单元内容 如图所示。执行指令后,A=12H 位寻址区 DPTR= 2000H 288H116040 位寻址方式 299H110DH1 指令给出位地址。一位数据在存储器位寻址区。 例:MOVC,40H;Cy<(位地址40H 设指令执行前Cy=1,位地址40H存储器单元如图, 执行指令后,Cy=0
五.变址间接寻址方式 数据在存储器中,指令给出的寄存器中为数据的 基地址和偏移量。 数据地址 = 基地址 + 偏移量。 例: MOVC A,@A+DPTR;A(A+DPTR) 设指令执行前 A=09H,DPTR=2000H,存储器单元内容 如图所示。执行指令后,A= ? DPTR= ? 12H 2000H 六.位寻址方式 指令给出位地址。一位数据在存储器位寻址区。 例: MOV C,40H;Cy(位地址40H) 设指令执行前 Cy=1,位地址40H存储器单元如图, 执行指令后,Cy= ? 28H 01100010 29H 11010111 位寻址区 0 2008H 89H 2009H 12H
3-4MCS-51指令系统分析 指令功能分类: 数据传送、数据操作、布尔处理、程序控制。 3-4-1数据传送指令 实现寄存器、存储器之间的数据传送。 内部传送指令:片内数据存储器数据传送。 外部传送指令:片外数据存储器数据传送。 交换指令: 片内数据存储器数据传送。 四.堆栈操作指令:片内数据存储器数据传送。 五.查表指令: 程序存储器数据传送
3-4 MCS-51指令系统分析 指令功能分类: 数据传送、数据操作、布尔处理、程序控制。 3-4-1 数据传送指令 实现寄存器、存储器之间的数据传送。 一. 内部传送指令: 片内数据存储器数据传送。 二. 外部传送指令: 片外数据存储器数据传送。 三. 交换指令: 片内数据存储器数据传送。 四. 堆栈操作指令: 片内数据存储器数据传送。 五. 查表指令: 程序存储器数据传送
(一)内部传送指令:实现片内数据存储器中数据传送。 指令格式:M0V目的操作数,源操作数 寻址方式:立即寻址、直接寻址、寄存器寻址、寄存 器间址。 MOV A, Rn: A 指令机器码: +Rn, Rn=RoN 1110lrrr E8-EF MOV A,n 11100101nE5n MOVA,@Ri;A←(Ri),Ri=R0、R1 1110011iE6、E7 MOVA,#d;A←d, 01110100d74d MOV Rn.n Rn←(n) 1010lrrr n MOV@Ri,n;(Ri)←(n) 1010011in MOVn1,n2;(n1)←(n2) 85n1n2 MOV DPTR, #d1d2: DPTR+d1d2 90 d1 d2 题:找出配对指令,实现反向传送
(一)内部传送指令:实现片内数据存储器中数据传送。 指令格式: MOV 目的操作数,源操作数 寻址方式:立即寻址、直接寻址、寄存器寻址、寄存 器间址。 习题1:找出配对指令,实现反向传送。 指令机器码: 11101rrr E8~EF 11100101 n E5 n 1110011i E6、E7 01110100 d 74 d 10101rrr n 1010011i n 85 n1 n2 90 d1 d2 MOV A,Rn ;A←Rn,Rn=R0 ~R7 MOV A,n ;A←(n), MOV A,@Ri ;A←(Ri),Ri=R0、R1 MOV A,#d ;A←d, MOV Rn,n ;Rn←(n) MOV @Ri,n ;(Ri)←(n) MOV n1,n2 ;(n1)←(n2) MOV DPTR,#d1d2 ;DPTR←d1d2
例3-4-1:顺序执行下列指令序列,求每一步执行结果 MoV A,#30H ;A=30H MOV 4FH, A (4FH)=30H MOV RO, #20H R0= 20H MOV @RO, 4FH ;(20H=30H MOV 21H, 20H ;(21H=30H 习题2:用两种寻址方式实现,将片内RAM60H单元的数 据传送给累加器A。 地址内容 MOV RO, B0AH 解:MVA,86H Mov A, ORO 60H32H 32H58H
例3-4-1:顺序执行下列指令序列,求每一步执行结果。 MOV A,#30H MOV 4FH,A MOV R0,#20H MOV @R0,4FH MOV 21H,20H 地址 内容 … 60H 32H … 32H 58H 习题2:用两种寻址方式实现,将片内RAM 60H单元的数 据传送给累加器A。 解: MOV A,#60H MOV R0,#60H MOV A,@R0 ;A= 30H ;(4FH)= 30H ;R0= 20H ;(20H)= 30H ;(21H)= 30H MOV R0,60H 解: MOV A,@R0 MOV A,60H