第三章_[3-1]指令的机器码表示方法(自学)
微机原理 宋志平 第三章课件
011
100 101
[BP]+[DI]
[SI] [DI]
[BP]+[DI]+D8
[SI]+D8 [DI]+D8
[BP]+[DI]+D16
[SI]+D16 [DI]+D16
110
111
D16(直接地址)
[BX] 15 1 0 0 0 1 0 操作码
[BP]+D8
[BX]+D8 8 D W 7
[BP]+D16
微机原理与接口技术
例: MOV CX , 36H[BX] MOV -20[BP] , AL
11
6、基址加变址寻址(Based Indexed addressing) 它的EA是由三部分组成的,基址寄存 器BX或BP的内容加上变址寄存器的内容 再加位移量。物理地址由基址寄存器按规 则选择段寄存器,也可以使用段超越。
01 11 00 10
CS DS ES SS
210 R/M
MOD
0:数据从寄存器传出 1:数据传至寄存器
24
MOD R/M 000 001 010
微机原理与接口技术 11 00 [BX]+[SI] [BX]+[DI] [BP]+[SI] 01 [BX]+[SI]+D8 [BX]+[DI]+D8 [BP]+[SI]+D8 10 [BX]+[SI]+D16 [BX]+[DI]+D16 [BP]+[SI]+D16 W=0 AL CL DL BL AH CH DH BH 210 R/M W=1 AX CX DX BX SP BP SI DI
第3章80C51的指令系统
另一类直接寻 址是转移目标地 址的寻址。如: LJMP ADDR16
操作数 在50H单元
50H
3AH
E5H 50H
MOV A,50H
RAM
3AH
ACC
ROM
SFR
2021/6/23
15
❖ 定义:将操作数的地址直接存放在指令中,这种 寻址方式称为直接寻址。
❖ 特点:指令中含有操作数的地址。该地址指出了 参与操作的数据所在的字节单元地址或位地址。 计算机执行它们时便可根据直接地址找到所需要 的操作数。
第3章 80C51的指令系统
3.1 指令格式及常用符号
3.2 80C51的寻址方式
3.3 数据传送指令
(29条)
3.4 算数运算指令
(24条)
3.5 逻辑运算与循环类指令(24条)
3.6 控制转移类指令
) 3.7 位操作类指令
(17条 (17条)
2021/6/23
1
❖ 指令:CPU按照人们的意图来完成某种操作的命令。
24
❖ 定义:将程序计数器PC的当前值(取出本条指令后的PC 值)与指令第二个字节给出的偏移量(rel)相加,形成 新的转移目标地址。称为相对寻址方式。
❖ 特点:相对寻址方式是为实现程序的相对转移而设计的, 为相对转移指令所使用,其指令码中含有相对地址偏移量, 能生成浮动代码。
❖ 如: SJMP rel
寻址范围:只能对程序存储器ROM进行寻址,主要用于 查表性质的访问。
2021/6/23
22
注意:累加器A中存放的操作数地址相对基地址的 偏 移 量 的 范 围 为 00H ~ FFH ( 无 符 号 数 ) 。 MCS-51单片机共有以下三条变址寻址指令:
3-1指令格式
8、 @ DPTR :表示以DPTR为数据指针的间接寻址,
用于对外部64K RAM/ROM寻址 9、(×) :表示 × 地址单元或寄存器中的内容 10、$:当前指令的地址。
• 作业
• • • • • • • • • • • 1、指令的一般格式是什么 2、操作码和操作数的功能是什么 3、汇编语言的定义是什么,由哪些部分组成 4、常用指令格式是什么 5、标号的定义是什么 6、注释的含义是什么 7、操作数与操作数之间用什么符号隔开 8、注释的前面需要加什么符号 9、标号与操作码之间用什么符号隔开 10、操作码与操作数之间用什么符号隔开 11、指令的分类有哪些
• 单周期指令 64条、双周期指令45条、四周期指令,乘除各
有1条 • 3、按其功能分类
• 数据传送 28条、算术运算 24条、逻辑运算和环移指令 25条
• 位操作指令 12条、控制转移指令 22条
指令的存放空间
• 指令是单片机执行某种操作的指令,用户若
要单片机完成一件事情,必须先编写指令,再
转成机器码形式,从键盘等设备输入程序存储
令时不予考虑。注释的前面需加分号“;”
ORG 1000H MOV R0,#0 ;清零,保存和的高位字节 MOV R1,#0 ;清零,保存和的低位字节 MOV R3,#16 ;R3用作计数器 L1:MOV P1,#0FFH ;置P1为输入口 MOV A,P1 ;读入采样值 ADD A,R1 ;累加 JNC L2 ;若无进位,转L2 INC R0 ;进位加到高位字节 L2:MOV R1,A DJNZ R3,L1 ;16次采样值是否累加完? MOV R4,#4 ;R4←右移次数4 L3:MOV A,R0 RRC A ;高位字节右移1位 MOV R0,A MOV A,R1 RRC A ;低位字节右移1位 MOV R1,A DJNZ R4,L3 ;循环4次完成除以16 HERE:SJMP HERE
第3章 51单片机指令系统
3.1.3 堆栈操作指令
(1)入栈指令:
PUSH direct; SP ← SP+1, (SP) ← (direct)
入栈操作:栈指针SP+1指向栈顶的上 一个空单元,将直接地址direct寻址的单元 内容压入当前SP所指示的堆栈单元中。 (本操作不影响标志位)
例3-3 在中断响应时,SP=09H,数据 指针DPTR的内容为0123H。执行下列指令 后:
MOV @Ri , A ; (Ri)←A MOV @Ri , direct ; (Ri)←(direct) MOV @Ri , data ; (Ri)←#data 上述指令将累加器A,直接地址单元内 容或立即数送到Ri间接寻址单元中。由于内 容较多,下面需要说明:
累加器A是个使用最多的寄存器,MCS-51单 片机以A为中心体系结构。绝大部分指令均需通 过A送到ALU进行运算,结果存于A中,有些指令 仅在A中进行。 直接地址direct ,8位直接地址可寻址0~255个 单元。对于8051则直接寻址内部RAM0~127地址 空间的单元及128~255地址空间的特殊功能寄存 器。这里需注意128~255地址空间很多单元开始 时无定义,对无定义单元进行读/写,则读数不定, 欲写入的数将丢失。 间接寻址@Ri,@间接寻址的符号,是以Ri 的内容作为地址进行寻址,亦即Ri的内容不是操 作数,而是地址。此地址所对应的单元内容才是 所要找的操作数。间接寻址的寻址范围与直接寻 址相同(0~255)。直接寻址单元在编程时就已 明确,而间接寻址单元是在程序运行中明确。
第3章 MCS-51指令系
单片机技术及应用
3.3.2 数据传送类指令 • 数据传送类指令一般的操作是把源操作数传送到
单片机技术及应用
3.2.5 变址寻址
• 这种寻址方式用于访问程序存储器中的数据表格, 它把基址寄存器(DPTR或PC)和变址寄存器A的内 容作为无符号数相加形成16位的地址,访问程序
存储器中的数据表格。操作时是以某个寄存器的
内容为基础,然后在这个基础上再加上地址偏移
量,形成真正的操作数地址。需要特别指出的是, 用来作为基础的寄存器可以是PC或是DPTR,地 址偏移量存储在累加器A中。例如:
要操作数,因此在使用操作数的过程中就存在一个寻找存储 单元的问题。 MCS-51指令系统的寻址方式有下列几种: • ① 直接寻址。 • ② 立即数寻址。 • ③ 寄存器寻址。 • ④ 寄存器间接寻址。 • ⑤ 变址寻址。 • ⑥ 位寻址。 • ⑦ 相对寻址。
单片机技术及应用
3.2.1 直接寻址 • 在指令中含有操作数的直接地址,该地址指出了参与操作
单片机技术及应用
单片机技术及应用
第3章 MCS-51指令系
单片机技术及应用
教学提示 • 本章重、难点在于理解单片机MCS-51指令系统
的寻址方式,以及数据传送类指令、算术运算类 指令、逻辑操作类指令、位操作指令和控制转移 类指令操作的含义和具体使用方法。 教学目标 • 掌握指令系统的寻址方式。 • 掌握汇编语言指令的格式。 • 掌握汇编语言指令的功能及应用。 • 掌握伪指令的格式及应用。
第3章MCS-51指令系统
第3章 MCS-51指令系统 4. 伪指令 在汇编语言源程序中,除了包含可以转化为特定计算机系 统的机器语言指令所对应的汇编语言指令外,还可能包含一些 伪指令,如“ORG 2000H”、“END”等。“伪”者,假也,尽 尽 管它不是计算机系统对应的指令,汇编时也不产生机器码,但 管它不是计算机系统对应的指令,汇编时也不产生机器码, 汇编语言程序中的伪指令并非可有可无。伪指令的作用是指导 汇编语言程序中的伪指令并非可有可无。 源程序的汇编过程, 源程序的汇编过程,例如“ORG 2000H”伪指令,指示汇编程序 将该伪指令后的汇编语言指令对应的机器码从2000H单元开始存 放。
第3章 MCS-51指令系统
· 52/54子系列内部RAM后128字节(即地址编码为80~FFH) 各单元之间不能直接传送。原因是高128字节内部RAM只能使 用寄存器间接寻址方式,而一条指令中,最多只允许一个操作 数使用寄存器间接寻址方式。 数据传送指令一般不会影响程序状态字寄存器PSW中的标 志位,但当数据传送到累加器A时,PSW中的奇偶标志位P会改 变,原因是奇偶标志位P总是体现累加器A中“1”的个数的奇偶 性。
第3章 MCS-51指令系统 1. 内部 内部RAM与特殊功能寄存器之间的数据传送 与特殊功能寄存器之间的数据传送 表3-1 内部RAM与特殊功能寄存器之间的数据传送指令
指令名称 指令格式 MOV A,Rn 以累加器A作为 目的操作数 MOV A,direct MOV A,@Ri MOV A,#data 机器码 11101rrr 11100101 direct 1110011i 01110100 data 功能 A←Rn A←(direct) A←(Ri) A←data 指令周期 1 1 1 1
MOV 90H,0F0H ; 将特殊功能寄存器0F0H单元(即寄存器B) 内容传送到特殊功能寄存器90H ; 单元(即P1口锁存器)中
机器码的三种表示方法
机器码的三种表示方法
机器码是计算机语言中最基本的形式,它是由0和1组成的二进制数列。
在计算机中,所有的指令、数据都以机器码的形式存在。
机器码的表示方法有三种:
1. 二进制表示法:机器码最基本的表示方法就是二进制数列。
每个二进制数位代表一种状态,0表示通断或低高电平,1表示反之。
2. 十进制表示法:将二进制数列转换成十进制数列,就可以用十进制数表示机器码。
一般情况下,每个十进制数位对应二进制数列中的一个二进制数位,所以,十进制数位也代表一种状态。
3. 十六进制表示法:将二进制数列按照每四位一组分组,然后将每组数字转换成十六进制数,就可以用十六进制数表示机器码。
这种表示法更加简洁,方便人们直接观察和记忆。
总之,机器码是计算机语言中最基本的形式,它有三种表示方法:二进制表示法、十进制表示法和十六进制表示法。
这些表示方法在计算机编程和调试中都有重要的应用。
- 1 -。
微机原理第3章指令
第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。
为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。
第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。
个别指只有操作码没有操作数。
由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。
8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。
指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。
段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。
生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。
确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。
立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。
这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。
段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。
第三章指令系统(可编辑修改word版)
第三章指令系统习题参考答案(三)1、 80C51 系列单片机的指令系统有何特点?答:80c51 的指令系统的特点有:(1)执行时间短。
一个机器周期指令有64 条,2 个时间周期指令有45 条,而4 个机器周期指令仅有2 条(即乘法和除法指令);(2)指令编码字节少。
单字节的指令有49 条,双字节的指令有45 条,三字节的指令仅有17 条;(3)位操作指令丰富。
这是80c51 单片机面向控制特点的重要保证。
2、 80C51 单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?答:(1)寄存器寻址。
对应的寄存器有:·工作寄存器 R0~R7·累加器 A·寄存器 B·数据指针 DPTR(2)直接寻址。
对应的存储空间有:·片内 RAM 低 128 字节(以地址形式表示)·SFR(以地址形式或 SFR 符号形式表示,但符号将转换为相应的SFR 地址)(3)寄存器间接寻址。
对应的空间有:·片内 RAM(采用@R0,@R1 或 SP);·片外 RAM(采用@R0,@R1 或@DPTR)(4)变址寻址。
对应的空间有:·ROM 空间(采用@A+DPTR,@A+PC)(5)相对寻址。
·ROM 空间(采用 JC rel)(6)位寻址。
·片内 RAM 的 20H~2FH 单元的 128 可寻址位·SFR 的可寻址位3、访问特殊功寄存器SFR 可以采用哪些寻址方式?答:直接寻址、位寻址4、访问内部RAM 单元可以采用哪些寻址方式?答:寄存器寻址、直接寻址、寄存器间接寻址5、访问外部RAM 单元可以采用哪些寻址方式?答:寄存器间接寻址6、访问外部程序存储器可以采用哪些寻址方式?答:立即寻址、变址寻址、相对寻址7、为什么说布尔处理功能是80C51 单片机的重要特点?答:布尔处理功能是MCS-51 系列单片机的一个重要特征,在物理结构上,MCS-51 单片机有一个布尔(位)处理器,对位地址空间具有丰富的位操作指令。
第3章MCS-51单片机指令系统
第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
第三章 8086的寻址方式
8086/8088指令概述
操作数的一般形式: 3、存储器操作数:这类操作数是指定存储单元 的内容或该单元的地址.
例1:MOV DS:[1000H], AL 其意义是将AL的内容送存储器数据段中偏移地址为 1000H的单元中去。
例2: 若指令改写为MOV AL,DS: [1000H]
指令意义为将数据段中偏移地址为 1000H 单元中的 内容送AL寄存器。前者指的是存储单元的地址,后者指 的是存储单元的内容
22
3.1 寻址方式
直接寻址: 符号地址:
8086/8088指令寻址方式
例3 :AREA1 EQU 0867H ; 等值伪指令EQU给常数0867H定义 一个符号AREA1 MOV AX,AREA1 ;AX=0867H 例4:AREA1 DW 0867H ;DW伪指令用来定义变量,
变量用来表示存储器中的数据。变量名AREA1表示内存中 一个数据区的名字,也就是符号地址,该地址单元存放一个字 数据0867H。 MOV AX,AREA1 ;
4、隐含操作数:这类操作数被操作助记符隐含着。 如,对压缩BCD加法结果进行调整的DAA,其操 作数就是隐含操作数AL。
5 、I/O端口操作数:可以作源操作数或目的操作数。 (I/O端口地址,可以直接或寄存器间接给出)
如: IN AL, 44H
OUT 量和常量三个概念:
例如:MOV AX,BX
3
8086/8088指令概述
例如:MOV AX,BX
用 MOV表示进行数据传送的操作码,用 AX、 BX表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。
微型计算机原理与接口技术课件-第三章指令系统和寻址方式
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“ES:”,这里的冒号“:”称为 修改
属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。
例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+
500H。
3.符号地址 在汇编语言中还允许用符号地址代替数值地
MOV CL,AH 注意:源操作数的长度必须与目的操作数一
致,否则会出错。例如,不能将AH寄存器的内 容传送到CX中去,尽管CX寄存器放得下AH的 内容,但汇编程序不知道将它放到CH还是CL中。
这种寻址方式的优点是:寄存器数量 一般在几个到几十个,比存储器单元少很 多,因此它的地址码短,从而缩短了指令 长度,节省了程序存储空间;另一方面, 从寄存器里取数比从存储器里取数的速度 快得多,从而提高了指令执行速度。
用汇编语言(即主要由指令系统组成的语言)编写的程 序称为汇编语言源程序,若直接将它送到计算机,机器
并不认识那些构成程序的指令和符号的含义,还必须由
汇编程序将源程序翻译成计算机能认识的二进制机器语
言指令(机器码)后,才能被计算机识别和执行,得到运算 结果。
8086指令系统采用变长指令,指令的长度可由l~6 字节组成。一字节指令中只包含8位操作码,没有操作数。 如清进位位指令CLC的机器码为1111 1000,可直接从指 令编码表中查到。对于大部分指令来说,除了操作码(不 一定是8位)外,还包含操作数部分,所以要由几个字节组 成。不同的指令,其操作码和寻址方式都是不一样的,
例如:AREA1 EQU 0867H MOV AX,AREA1
例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可
51单片机 第三章指令系统
10
3.2.5 变址寻址方式
1.
变址寻址方式是以程序计数器PC或数据指针 DPTR作为基址寄存器,以累加器A作为变址寄 存器,它们两者内容之和为有效地址。 寻址范围:
程序存储器空间。
2.
3.
变址寻址方式的指令只有3条:
⑴ MOVC A, @A+DPTR ⑵ MOVC A, @A+PC ⑶ JMP @A+DPTR ; 查表指令 ; 查表指令 ; 散转指令
⑴ 低128个存储单元,8-bit二进制数表示地址。 ⑵ 特殊功能寄存器,用直接地址或称号表示。
2.
3.
例如,指令 MOV A, 30H
; A ← (30H)
8
3.2.3 寄存器间接寻址方式
1.
寄存器间接寻址时,指令中给出的寄存器为地 址指针。 寻址范围:
⑴ 片内和片外RAM 256单元,用R0或R1间接寻址。
34
4.
除法
整数部分
DIV AB
A
被除数
X B
除数
商
A
B
余数部分
除数为0,商的A和B内容不确定,且(OV)=1 。 标志Cy总是被清0。 例: 若(A)=FBH(251),(B)=12H (18),执行指令 DIV AB 之后,(A)=0DH, (B)=11H,(OV)=0,(Cy)=0。
35
3.3.3 逻辑运算及移位类指令
例: 若(A)=C3H,(R0)=AAH,执行指令 ANL A, R0 之后,(A)=82H。
37
逻辑或 源操作数与直接地址单元内容相或
ORL direct, A #data
源操作数与累加器A的内容相或
微机原理 第三章1
(2)立即(数)寻址
② MOV AX,1234H
说明:这条指令的功能就是将立即数 1234H传送到寄存器AX中。 执行完该条指令后, AX=1234H
(3)寄存器寻址(Segment Addressing)
当操作数在寄存器中时为寄存器寻址(或称寄 存器直接寻址)。如: ① MOV AL,12H 说明:目的操作数AL即为寄存器寻址。
DS(BX的默认段)值
0000
Memory
ES值
SS(BP的默认段)值
CS值
BP: +)位移量:
0000 0000 0000
…… ××
0100 0000 0000 0000 0000 0000 0000 0010
20 位 物 理 地 址
MOV [SI]10 ,AH ( 设SI原值为008CH)
Bit 19 4 3 0
1、通用数据传送指令
(1)MOV指令 (2)PUSH和POP指令 (3)交换指令XCHG (4)换码指令XLAT
(1)MOV指令
是基本传送类指令,实现字或字节数据的 复制。
指令格式:MOV dst,src
指令功能:将源操作数src,传送到目的操作 数dst中。 如:MOV AL,12H
功能:执行指令就是将立即数12H传送到 AL中,执行完指令后AL=12H。
(6)寄存器相对寻址方式 使用基址寄存器(BX或BP)、并带位移 量的间接寻址。操作数EA=BX或BP值+位 移量。 例:MOV DL,[BP+2] 其它等效写法: MOV DL,[BP] 2 MOV DL,2 [BP]
MOV DL,[BP+2] ( 设BP原值为4000H)
Bit 19 4 3 0
汇编语言 用指令助记符表示机器码,例如对应于机器码 B8H、C3H的助记符为MOV AX,BX 。 CPU不同,机器码不同,助记符也不同。
第三章指令系统总结及课后题
字 节 地 址
10、如何访问SFR,可采用那些寻址方式? 答:用直接寻址,位寻址,寄存器寻址 11、如何访问片外RAM,可使用那些寻址方式? 答:只能采用寄存器间接寻址(用MOVX指令) 12、如何访问片内RAM,可使用那些寻址方式? 答:低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器 寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13、如何访问片内外程序存储器,可使用那些寻址方式? 答:采用变址寻址(用MOVC指令) 14、说明十进制调整的原因和方法? 答:压缩BCD码在进行加法运算时应逢十进一,而计算机只将 其当作十六进制数处理,此时得到的结果不正确。用DA A指令 调整(加06H,60H,66H) 15、说明8951布尔机处理机功能? 答:用来进行位操作
;被减数的低8位→A ;减数低8位→R2 ;被减数减去减数,差→A ;低8位结果→30H ;被减数的高8位→A ;减数高8位→R2 ;被减数减去减数,差→A ;高8位结果→30H
带借位减法指令(四条)
汇编指令格式 SUBB A, Rn; 机器码格式 1001 1rrr 操作 (A)-CY -(Rn) → A 注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中 SUBB A,direct;1001 0101 direct SUBB A,@Ri; 1001 011i (A) -CY -((Ri)) →A (A) -CY -(direct) →A 将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中 将间接寻址(Ri为R0或R1) 所得的片内RAM单元中内 容与CY及累加器A中的数
高128字节RAM区(SFR区,特殊功能寄存器区)
B
F0
ACC
31MCS-51汇编语言指令格式
END
11
第一节 指令格式
P34 二、汇编指令格式 MCS-51单片机汇编语言指令的标准格式如下:
[标号:] 操作码 [目的操作数] [,源操作数] [;注释 ]
①
②
③
④
⑤
MAIN: ADD
A ,#10H
; (A)←(A)+10H
⑤注释部分是用户对该条指令或该段程序功能的说明。 它以分号“;”开头,可以用中文、英文或某些符号来表示。
第三章 89S51单片机指令系统 第一节 指令格式
教学目的 1、掌握MCS-51单片机汇编语言指令的标注
格式和常用符号的意义。 教学重点
汇编语言指令的标注格式和常用符号的意义 。
教学难点 汇编语言指令的标注格式和常用符号的意义 。
1
第一节 指令格式
P34 二、汇编指令格式 MCS-51单片机汇编语言指令的标准格式如下:
2000H 2002H 2004H 2005H 2006H 2007H 2008H
200AH
ORG 2000H START: MOV R0,#30H
MOV R2,#10H CLR A L1: MOV @R0,A INC R0 INC A L2: DJNZ R2,L1
L3: SJMP L3 END
;(R0)←30H
[标号:] 操作码 [目的操作数] [,源操作数] [;注释 ]
①
②
③
④
⑤
MAIN: ADD
A ,#10H
; (A)←(A)+10H
① 标号是用户设定的符号,它实际代表该指令所在的地址。 标号必须以字母开头,其后跟1—8个字母或数字,并以“:”结尾
2
第一节 指令格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
第三章待续 谢谢大家!
There’s always more to learn, and there are always better ways to do what you’ve done before. —DONANLD E. KNUTH
ADC AX, BX ;该指令完成操作数AX、BX和CF位相加。 位相加。 该指令完成操作数 、 和 位相加
4
§3-2 指令的机器码表示方法
二、机器语言指令代码的编制
1、编码格式说明: 编码格式说明:
以寄存器之间或寄存器与存储器之间交换数据的MOV指 指 以寄存器之间或寄存器与存储器之间交换数据的 令,来说明指令的编码格式。 来说明指令的编码格式。
8
§3-2 指令的机器码表示方法
MOD和R/M的编码( 见表 -2:24种不同的编码格式,D8表示 位位移量, 和 的编码( 种不同的编码格式, 表示 位位移量, 表示8位位移量 的编码 见表3- : 种不同的编码格式 D16为16位位移量) 为 位位移量 位位移量)
MOD(右) ( R/M(下) 下 000 001 010 011 100 101 110 111 [BX]+[SI] [BX]+[DI] [BP]+[SI] [BP]+[DI] [SI] [DI] D16(直接地址) 直接地址) 直接地址 [BX] [BX]+[SI]+D8 [BX]+[DI]+D8 [BP]+[SI]+D8 [BP]+[DI]+D8 [SI]+D8 [DI]+D8 [BP]+D8 [BX]+D8 [BX]+[SI]+D16 [BX]+[DI]+D16 [BP]+[SI]+D16 [BP]+[DI]+D16 [SI]+D16 [DI]+D16 [BP]+D16 [BX]+D16 00 01 10 W=0 AL CL DL BL AH CH DH BH 11 W=1 AX CX DX BX SP BP SI DI
汇编语言源程序: 汇编语言源程序:
即主要由指令系统组成的语言)编写的程序。 用汇编语言 (即主要由指令系统组成的语言)编写的程序。
编译程序 执行
源程序 编码特点: 编码特点6指令的二进制编码非常多,很难以一张表实现指令与机器语言的对照。 8086指令的二进制编码非常多,很难以一张表实现指令与机器语言的对照。 指令的二进制编码非常多 为每种基本指令类型给出一个编码格式, 为每种基本指令类型给出一个编码格式,对照格式填上不同的数字表示不同 的寻址方式、数据类型,即可求得每条指令的机器码。 的寻址方式、数据类型,即可求得每条指令的机器码。 8086指令系统采用变长指令,指令的长度可由1 8086指令系统采用变长指令,指令的长度可由1~6字节组成。 指令系统采用变长指令 字节组成。 8086机器指令有零个或多个操作数。 8086机器指令有零个或多个操作数。 机器指令有零个或多个操作数
16
§3-2 指令的机器码表示方法
6、段超越前缀指令的编码 、
例:求指令MOV [BX], DL的机器码 求指令 , 的机器码
指令的功能是将DL寄存器的内容传送到有效地址为 寄存器的内容传送到有效地址为(BX)的字节存储单元。 的字节存储单元。 解:指令的功能是将 寄存器的内容传送到有效地址为 的字节存储单元 该指令(不带段超越前缀)的编码格式为: 该指令(不带段超越前缀)的编码格式为:100010DW MOD 0 REG R/M . 数据从寄存器传出, 数据从寄存器传出,则D=0;传递数据为字节,则W=0;进而,REG=010; ;传递数据为字节, ;进而, ; 另一个操作数是存储器,所以 另一个操作数是存储器,所以MOD=00,而R/M=111 .该指令的编码是在不带段 = , 超越前缀的指令代码为88 17H. 超越前缀的指令代码为 . 在指令代码前加一个8位的段超越的缀代码,代码的格式为 ×× ,其 位的段超越的缀代码 格式为001×× ××110, 在指令代码前加一个 位的段超越的缀代码,代码的格式为 的代码为01,所以指令的第1个字 中××位表明段超越寄存器。由于段寄存器CS的代码为 ,所以指令的第 个字 ××位表明段超越寄存器。由于段寄存器 的代码为 位表明段超越寄存器 节的编码为00101110,即 2EH. , 节的编码为 所以,该指令的机器码为 所以,该指令的机器码为2E 88 17H。 。
REG 000 011 001 010 100 111 101 110 W=1( W=1(字) AX BX CX DX SP DI BP SI W=0(字节) W=0(字节) AL BL CL DL AH BH CH DH
7
REG 01 11 00 10
段寄存器 CS DS ES SS
§3-2 指令的机器码表示方法
微型计算机原理与接口技术
第三讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done before. —DONANLD E. KNUTH
10
§3-2 指令的机器码表示方法
例:求指令MOV SP,BX的机器码 求指令 , 的机器码
11
§3-2 指令的机器码表示方法
3、寄存器与存储器间传送指令的编码 、
例:求指令MOV CL, [BX+l234H]的机器码 求指令 , 的机器码 解:指令的功能是将有效地址为(BX+1234H)存储单元中的数据字 指令的功能是将有效地址为 存储单元中的数据字 节传送到CL中 节传送到 中。 该指令的编码格式为: 数据. 该指令的编码格式为:100010DW MOD REG R/M 数据. 第1、2字节可通过查表得到;第3字节存放 位位移量的低字节 、 字节可通过查表得到; 字节存放16位位移量的低字节 字节可通过查表得到 字节存放 34H; 第4字节存放高字节 ; 字节存放高字节12H 。 字节存放高字节 所以该指令的4字节编码为8A 所以该指令的 字节编码为 8F 34 12H 。 字节编码为
第三章 8086的寻址方式和指令系统 8086的寻址方式和指令系统
内容提要
8086的寻址方式 的寻址方式 微机系统指令的机器码表示方法(自学) 微机系统指令的机器码表示方法(自学) 8086的指令系统 的指令系统
2
§3-2 指令的机器码表示方法(自学) 指令的机器码表示方法(自学)
一、机器语言指令的编码目的和特点
3
§3-2 指令的机器码表示方法
一、机器语言指令的编码目的和特点
1、零操作数指令 、
CLC ;机器码为F8H 机器码为
2、单操作数指令 、
INC AX INC BX ;机器码为40H 机器码为 ;机器码为43H 机器码为
3、双操作数指令 、
MOV AL, 04 ;机器码为B004H 机器码为
4、三操作数指令 、
其中,第一个字节: 高6位是操作码100010; 位 W位说明传递数据的类型是字(W=l)还是字节(W=0); 位 D位标明数据传送的方向:D=0,数据从寄存器传出 位 传出; 传出 D=1,数据传至寄存器;
6
§3-2 指令的机器码表示方法
其中,第二个字节:
REG字段 字段:寄存器号,用3位编码寻址8种不同的寄存器,再根据第一字节中 字段 W位,选择8位或16位寄存器。如表3-l所示。(对使用段寄存器的指令,REG字 对使用段寄存器的指令, 对使用段寄存器的指令 字 段占2位 段占 位) 8086寄存器编码表 寄存器编码表
12
§3-2 指令的机器码表示方法
例:求指令MOV CL, [BX+l234H]的机器码 求指令 , 的机器码
13
§3-2 指令的机器码表示方法
4、立即数寻址指令的编码 、
例:求指令MOV [BX+2100H], 0FA50H的机器码 求指令 , 的机器码 解:指令的功能是将16位立即数送到指定有效地址的字存储单元 指令的功能是将 位立即数送到指定有效地址的字存储单元 送列[BX+2100H]单元,高字节 单元, 中;其中低字节50H送列 其中低字节 送列 单元 高字节FAH送到 送到 (BX+2101H)单元。 单元。 单元 该指令的编码格式为: 该指令的编码格式为:110011W MOD 000 R/M 数据 数据 (若W=1). ) 指令中不但有16位立即数,还有 位位移量 位位移量; 指令中不但有 位立即数,还有16位位移量; 位立即数 字节编码为 所以,该指令的 字节编码为C7 87 00 21 50 FA H。 所以,该指令的6字节编码为 。
14
§3-2 指令的机器码表示方法
例:求指令MOV [BX+2100H], 0FA50H的机器码 求指令 , 的机器码
15
§3-2 指令的机器码表示方法
5、包含段寄存器的指令的编码 、
例:求指令MOV DS, AX的机器码 求指令 , 的机器码 寄存器的内容传送到数据段寄存器DS。 解:指令的功能是将AX寄存器的内容传送到数据段寄存器 。 指令的功能是将 寄存器的内容传送到数据段寄存器 该指令的编码格式为: 该指令的编码格式为:10001110 MOD 0 REG R/M . 段寄存器DS的编码为 ,即REG字段为 ;另一个操作数也是 字段为11; 段寄存器 的编码为11, 的编码为 字段为 寄存器,所以MOD=11,而R/M字段应填上AX的三位代码 寄存器,所以 = , 字段应填上 的三位代码000 . 字段应填上 的三位代码 所以,该指令的 字节编码为8E 字节编码为 所以,该指令的2字节编码为 D8H。 。
15 11 10 9 8 7 6 5 4 3 2 1 0