第三章1(寻址方式)
第三章 操作数的寻址方式
2
一、立即数寻址方式(P24)
直接把参与操作的数据写在指令中,是指令的一部分, 该数据称为立即数。操作数可以是各种数制下的数值(8位或16 位二进制数),也可以是带单引号的字符。 例如:MOV AX,2050H MOV AL,05H MOV AL,‘A’ 观察下面指令中的错误: MOV 05H,AL MOV BL,324D MOV CH,2050H 注意:1.立即数永远不能作目的操作数。 2.源操作数和目的作码
操作数
2、说明:
操作码:每条指令必有。 操作数:不同的指令其操作数的个数不同 例如: MOV AX,2050H
在上面的MOV指令中,MOV是操作码,AX和2050H是操作 数。其中: AX是目的操作数, 2050H是源操作数。该指令的 作用是将2050H存入寄存器AX中。
7
四、寄存器间接寻址方式(P27)
把参与操作数的偏移地址写在寄存器中,而操作数在内 存中。物理地址的计算需要利用段寄存器。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器只能为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS) 例1: MOV [BX],2050H 目的操作数[BX]是寄存器间接寻址方式。 例2: MOV AX,[BP] 原操作数[BP]是寄存器间接寻址方式。
答案: ① MOV AX, [ARRAY+8] ② MOV SI, ARRAY+8 MOV AX ,[SI] ③ MOV SI,8 MOV AX ,[ARRAY+SI] ④ MOV BX,ARRAY MOV SI ,8 MOV AX,[BX][SI]
17
例4:指令MOV AX,[BX] [SI] ( 或写为MOV AX,[BX+SI] ) 若(DS)=2000H,(BX)=0500H,(SI)=0010H, (2050FH)=00H,(20510H)=12H,(20511H)=34H, (20512H)=56H。则: ①偏移地址为多少? ②物理地址为多少? ③指令执行完后AX为多少?
第三章 MCS-51单片机的寻址方式和指令系统
由此可把数据传送指令分成三部分
(一)内部数据传送(通用传送指令)
1.以A为目的操作数
MOV A,Rn MOV A,@Ri ;A← (Rn) ;A←((Ri))
双字节
11101rrr 1110011i
MOV A,direct ;A←(direct) 11100101 direct
MOV A,#data ;A←#data 例: MOV A,@R1 若(R1)=20H,(20H)=62H 结果:(A)=62H 11100100 data
指令MOVC A,@A+DPTR;执 行示意图
结果:(ACC)=64H
六、相对寻址
以当前PC的内容为基准,加上指令给出的 偏移量(rel)形成新的PC值(转移地址) 的寻址方式。
转移地址=目的地址 =当前(PC)+rel
目的地址=PC当前值十rel 目的地址=转移指令的PC值+2(或3)十rel 目的地址=转移指令地址+转移指令字节数+rel
单周期:64 双周期:45 四周期:2
若fosc=12MHz, 大多指令执行 仅1μs
按照指令的功能分5大类
一、数据传送类指令(29条) 二、算术运算类指令(24条) 三、逻辑操作类指令(24条) 四、控制转移类指令(17条) 五、位操作类指令 (17条)
在描述指令系统的功能时,常用符号介绍:
@——间址符号,如@Ri,@DPTR 13. / ——位操作数的前缀,表示对该位操作 数取反,如/bit。 14. (×)——由×寻址的单元中的内容。 15. ((X))——由X的内容作为地址的存 储单元的内容。 16. ← ——箭头右边的内容取代箭头左边的 内容。
12.
一、数据传送类指令(29条)
嵌入式系统原理第三章习题(1)
第三章第一次作业1. ARM寻址方式有几种?举例说明ARM如何进行不同方式的寻址。
1).寄存器寻址;如MOV R1, R22).立即寻址;如MOV R0, #0xFF003).寄存器移位寻址;如MOV R0, R2, LSL #34).寄存器间接寻址;如LDR R1, [R2]5).基址加偏址寻址;如LDR R2, [R3,#0x0C]6).多寄存器寻址;如LDMIA R1!, {R2-R4,R6}7).堆栈寻址;如STMFD SP!, {R1-R7,LR}8).相对寻址。
如BL SUBR12. 简述ARM指令分类及指令格式形式。
ARM指令集可以分为6大类:数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。
ARM指令的基本格式为:<opcode> {<cond>} {S} <Rd> ,<Rn>{,<operand2>}其中,opcode为操作码;cond为可选的条件码;S为可选后缀;Rd为目标寄存器;Rn为存放第1个操作数的寄存器;operand2为第2个操作数。
3. 假设R0的内容为0x8000,寄存器R1、R2的内容分别为0x01与0x10,存储器中所有存储单元的内容均为0xFF。
连续执行下述两条指令后,存储器及寄存器的内容如何变化?STMIB R0!, {R1, R2}LDMIA R0!, {R1, R2}存储器里内容为:R0→0x80000x80040x8008 →R10x800C →R2R0’→0x80100x8014寄存器里内容为:R0 ←0x8010R1 ←0x10R2 ←0xFF4. ARM处理器如何进入和退出Thumb指令模式?用汇编语言实现ARM状态和Thumb状态互相的切换。
进入Thumb模式:有2种方法。
一种是执行一条交换转移指令BX,将指令中的目标地址寄存器的最低位置1,并将其他位的值放入程序计数器PC,则可以进入Thumb指令。
第3章 8086的指令系统—3.1寻址方式
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式
第三章操作数的寻址方式
第一节 汇编指令格式
2、单操作数指令
指令助记符 操作数
只有把数据先送入隐含的寄存器中、才能执行此操
作的指令。
例:mul cx
;(ax) ×(cx)→(dx,ax)
3、无操作数指令 指令助记符
例:clc ;0→cf stc ;1→cf
第二节 操作数的寻址方式
一、概述 二、立即数寻址(imm) 三、寄存器寻址(reg) 四、存储器寻址(mem)
如mov ax,varw
mov ax,[varw]
与立即数寻址的区别
在指令中,直接寻址给出操作数的EA,立 即数寻址给出操作数。
用数字书写时,格式不一样。
mov ax,1234h
mov ax,[1234]
2、寄存器间接寻址
操作数在存储器中,操作数的有效地址用si、di、 bx和bp等四个寄存器之一来指定,称这种寻址方式 为寄存器间接寻址方式。
2、寄存器间接寻址
例:假设有指令:mov ax, [bx],在执行时, (ds)=3000h,(bx)=2000h,存储单元32000h的内容是 1234h。问执行指令后,ax的值是什么?
PA=(ds)*16+(bx)=3000h*16+2000h=32000h (bx)=1234h
图示
3、寄存器相对寻址
立即数寻址(imm)
操作数出现在指令中,是指令的一个组成部分。这 样的操作数叫做立即数.以这种指定操作数的方式 就叫做立即数寻址。 执行过程
例:
mov ah, 80h add ax, 1234h mov b1, 12h mov w1, 3456h add d1, 32123456h
其中:b1、w1和d1分别是字节、字和双字内存变量。
第三章MCS51系列单片机指令系统及汇编语言程序设计
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
[物理]单片机3第三章寻址方式
北京化工大学 信息科学与技术学院 郭 青
1
第三章
本章重点
寻址方式
80C51指令系统
指令格式
操作结果及对标志位影响
3.1
111条指令
概述
29 24 24 17
数据传送类指令 数学运算类指令
分类
逻辑运算类指令 控制转移类指令
位操作指令
17
单字节指令 按指令长度分类
双字节指令
三字节指令 12个振荡周期 64
COUNT:PUSH DPH; 保护DPTR内容
PUSH DPL;
MOV DPTR,#TABLE ;赋表首地址给DPTR
MOVC A, @A+DPTR
; POP DPL; 根据A中内容查表 恢复DPTR内容 返回主程序
POP DPH
RET;
ORG 1000H TABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81
19
3.3.1 数据传送类指令
按操作方式,分为三种: 数据传送 数据交换 栈操作
一、普通传送类指令 格式: MOV (目的操作数),(源操作数) 操作码助记符 操作: 将源操作数单元内容,传送到目的操作数 单元中,源操作数内容不变。不影响标志 位Cy,AC和OV。
操作数的组合关系
1、立即数的传送 MOV A, #data MOV Rn, #data (A) (Rn) #data #data
d:MOV direct,#data
将8位立即数送入由direct直接寻址的地 址单元中。 direct:00H~FFH,8位二进制地址码
寻址内部RAM(00H~7FH)及SFR
3. 寻址方式与指令系统
算术运算类指令
加法指令(Addition) 带进位加法指令(Add with carry) 加1指令(Increment) 减法指令(Subtraction) 带借位减法(Subtract with borrow) 减1指令(Decrement) 求负数指令(Negative)
加法指令(Addition)
指令格式:add dest,src 功能:目的操作数和源操作数相加,其和数 存放在目的操作数中,源操作数原有内容不 变。 根据相加结果设置标志寄存器中的CF、PF、 AF、ZF、SF和OF。 Add指令可以进行字或字节操作。 对src和dest的具体内容的要求。
加法指令
Add ax,bx Add al,bl Add cx,20 Add cl,0A4h Add dl,da_byte Add da_word[si],dx 对于第四条指令,如果(cl) = 0e5h,
指令格式
双操作数指令:OPR DEST,SRC 单操作数指令:OPR DEST 无操作数指令:OPR
传送类指令
数据传送指令(move) mov dest,src 可以进行字节数据传送,也可以进行字数据 传送。 mov cl,05h ;字节传送 mov ax,1234h ;字传送 mov da_byte,12h ;字节传送 mov da_word,1234h ;字传送
位操作类指令
逻辑运算指令(Logical) 测试指令(Test) 移位/循环移位指令(shift/rotate) 处理器控制类指令
逻辑运算指令(Logical)
数据传送指令(move)
寄存器之间的传送 mov dl,cl ;字节传送 mov ax,bx ;字传送 mov ds,ax ;通用寄存器和段寄存器之间的 传送
汇编语言第3章 指令系统和寻址方式
5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)
3 DSP的软件结构
3.1.2直接寻址方式
1.直接寻址方式
设置数据页:
例:LDP 例:ADD #32 ;设置当前数据页为32(1000H-107FH) 5H ;将数据存储器1005处的数据加至累加器 指明偏移量:来自3.1.2直接寻址方式
例3.3 采用直接寻址的ADD指令(移位0到15位)
LDP ADD #4 9H,5 ;数据页设为4(0200H-027FH) ;将数据页地址处0209h处的内容左 ;移5位后加至累加器 ;设数据页为500(FA00h-FA7Fh) ;数据地址FA08H处的内容和进位值 ;被加至累加器中
3.3 典型指令说明
1.对累加器的加操作ADD指令
(Add to Accumulator)
ADD ADD ADD ADD ADD ADD dma[,shift] dma,16 ind[,shift[,ARx]] ind,16[, ARx] #k #lk[,shift]
受SXM,OVM;结果影响C,OV
3.3 典型指令说明
ADD 1,1 ;(DP=6:0300h-037Fh)将数据存储器单元 ;301H的内容左移1位后与ACC相加,结果存ACC
3.3 典型指令说明
ADD * +,2,AR0 ;(ARP=4,AR4=302H)将数据存储器单 ;元302H的内容左移2位之后加至ACC,结 ;果存在ACC,指令执行后AR4=303, ;ARP=0
7.清除控制位指令CLRC
(Clear Control Bit) CLRC status bit 状态位包括:C、CNF 、INTM、OVM 、SXM 、TC 、 XF CLRC TC ;将ST1的TC位清0
8.从IO端口输入数据指令IN
(Input Data From Port) IN IN dma,PA ind,PA[,ARx]
汇编语言 第3章1 80x86的指令系统和寻址方式
CS、DS、SS、ES
寄存器寻址指令
MOV AX,1234H MOV BX,AX ;AX←1234H ;BX←AX
寄存器寻址
3.1.4 存储器寻址方式
指令中给出操作数的主存地址信息(偏移
地址,称之为有效地址EA),而段地址在 默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP
寄存器默认是SS;可用段超越前缀改变 MOV AX,[DI+06H]; mov ax,table[di] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 相对寻址
;AX←DS:[BX+SI+06H]
相对基址变址
位移量可用符号表示 同一寻址方式有多种表达形式
指令操作数的表达-寄存器
r8——任意一个8位通用寄存器
AH AL BH BL CH CL DH DL
r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
reg——代表r8或r16
(4)基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上
变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP
基址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]
微型计算机原理与接口技术课件-第三章指令系统和寻址方式
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“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 (该指令也可
微机原理 第三章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不同,机器码不同,助记符也不同。
汇编语言-寻址方式
2020/12/27
20
基址加变址寻址例题
例3.12 MOV AX,[BX][SI] (等价形式MOV AX,[BX+SI])
说明:目的操作数地址是AX,源操作数偏移地址EA =[BX]+[SI],其中,基址寄存器选用了BX,变址寄存器 选用了SI。由于源操作数选用BX作基址寄存器,所以其物 理地址PA是由数据段寄存器DS的内容左移4位二进制与偏 移地址EA相加形成。
执行: (BX)→40050H 执行后:(40050H)=3344H,(BX)、(BP)、(DI)、 (SS)均不变。
2020/12/27
22
7. 相对基址加变址寻址
在该寻址方式中,操作数存放在存储器里,操作数的偏移
地址EA是由指令中指定的基址寄存器内容、变址寄存器内容 及位移量X三项相加之和组成。
为目的操作数地址,CX的内容为目的操作数。 执行前:(CX)=78H, 执 行:(CX)-1→CX 执行后:(CX)=77H
例3.7:ADD AX,BX 说明:ADD是双操作数指令,功能是实现加法运算,AX
为目的操作数地址,AX的内容为目的操作数,BX为源操作数地 址,BX的内容为源操作数。
执行前:(AX)=1234H,(BX)=5620H,即 执 行:(AX)+(BX) →AX 执行后:(AX)=6854H,(BX)不变。
2020/12/27
2
3.1 数据寻址方式
数据寻址方式即寻找操作数地址的 方式,在8086/80286中只能使用16位 寻址,而80386及其后继机型则既可用 16位寻址,也可用32位寻址,无论多 少位寻址实质都是寻找操作数的物理 地址。物理地址是由段地址和偏移地 址两部分组成,段地址存放在相应的 段寄存器中,偏移地址存储在相应的 地址寄存器中,偏移地址又称有效地 址。
第3章_1 寻址方式
16位不允许使用 、CX、DX存放 位不允许使用AX、 、 存放 存放EA 位不允许使用 × MOV AX, [CX]
3.2 寻址方式 .
存储器寻址
例1 MOV AX,[BX] , (DS)=2000H,(SS)=1000H,(BP)=120H ) , ) , ) (BX)=100H,(AX)=1234H,(20100H)=5678H ) , ) , ) 偏移地址EA=(BX)=100H ( ) 偏移地址 物理地址PA= (DS) × 16 +(BX)=20000H+100H=20100H 物理地址 ) ( ) 内 存 (DS) 2000H BH EA=(BX) 01H 2000H 20100H BL 00H 0H ×16
AL 05H
64H
...
AH 30H
AL 64H
... 操作码 指 令 代 码 段
05H
30H
...
...
例
MOV MOV MOV
AL,05H , AX,3064H , 3,AL , MOV AH, 3064H
立即数不能做目的操作数 源、目的操作数的字长一致 目的操作数的字长一致
3.2 寻址方式 .
(AX) = 5678H
AH AL
0CH 52H
56H
78H 20100 78H 20101 56H
+
PA
3.2 寻址方式 .
存储器寻址 3. 基址寻址
为:基址寄存器+位移量 基址寄存器 位移量 •16位偏移地址 位偏移地址EA 位偏移地址 数据段( ) 数据段(DS)EA=BX+8或16位移量 或 位移量 堆栈段( ) 堆栈段(SS)EA=BP+8或16位移量 或 位移量 MOV MOV MOV MOV AX, [BX] ;源操作数在数据段 AX, [BX+3] AX, 3[BX] [BP],DI ;目的操作数在堆栈段 ,
第三章(寻址方式)
* 不允许使用AX、CX、DX 存放 EA MOV AX , [ CX ] * SRC 和 DST 的字长一致 MOV DL , [ BX ] MOV DX , [ BX ] * 适于数组、字符串、表格的处理
(3) 直接寻址方式 * —— 有效地址 EA 由指令直接给出
例:MOV AX , [ 2000H ] EA = 2000H , 假设 (DS) = 3000H , 那么 PA = 32000HAH ALFra bibliotek3050
32000
50H 30H (AX) = 3050H
* 隐含的段为数据段 DS * 可使用段跨越前缀
loop next
(3) 寄存器相对寻址
mov cx, count mov si, 0 next : mov dl, string [ si ] mov ah, 2 int 21h inc si loop next
; mov dl, [ string + si ] ; 显示一个字符 ; mov cx, 17
访问存储器的方式
取指令 堆栈操作 一般数据访问 BP 作为基址的寻址 串操作的源操作数 串操作的目的操作数
默认的 段寄存器
CS SS DS SS DS ES
可跨越的 段寄存器
无 无 CS ES SS CS DS ES CS ES SS 无
偏移地址
IP SP 有效地址 EA BP SI DI
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机原理与应用技术》教学课件
合法标号: 合法标号:
ABC: aBC: D123: @ABC: _ABC:
不合法标号: 不合法标号:
5BC: -aBC: 、D123:
ASM-51指令的格式 ASM-51指令的格式
如: LOOP:MOV : A, , 30H ;将30H的内容送 将 的内容送A 的内容送 [注释] 注释]
第三章 MCS-51单片机指令系统及编 程举例
《单片机原理与应用技术》教学课件
教学内容: 教学内容: 3.1 简介 3.2 寻址方式 3.3 指令系统及应用举例 3.4 伪指令 3.5 综合程序举例
熟练掌握: 熟练掌握: (1)指令的书写格式 )指令的书写格式; (2)数据传送类指令、算术运算类指令、 )数据传送类指令、算术运算类指令、 逻辑操作指令、 逻辑操作指令、控制转移类指令和位操作 类指令的功能 寻址方式、指令代码、 的功能、 类指令的功能、寻址方式、指令代码、对 标志位的影响及其使用。 标志位的影响及其使用。 (3)汇编程序设计方法 。 ) (4)通用子程序的特点和设计技巧。 )通用子程序的特点和设计技巧。
数字、 、 组成 必须用英语字母 组成, 英语字母、 或 母 、数字 、_、@组成, 必须用英语字母、 _或@ 开始, 结尾。 开始,“:”结尾。 结尾 ♦ 操作码就是指令功能助记符,指令实体 操作码就是指令功能助记符 就是指令功能助记符, ♦ 操作码与操作数之间必须用空格分隔,操作数与 操作码与操作数之间必须用空格分隔 必须用空格分隔, 必须用逗号“ 操作数之间必须用逗号 英文格式, 操作数之间必须用逗号“,”(英文格式,半角) ♦ 注释,以“;”开头 注释, 开头
第二节 MCS-51的寻址方式 的寻址方式
寻址方式——指令中所规定的寻找操 指令中所规定的寻找操 寻址方式 作数的方式。 寻找(或确定) 作数的方式。 即:寻找(或确定)操 作数所在单元地址的方式。 所在单元地址 作数所在单元地址的方式。 寻址方式越多,计算机寻址能力越强, 寻址方式越多,计算机寻址能力越强, 但指令系统也越复杂。 但指令系统也越复杂。 正确的理解、掌握寻址方式,是学习、 正确的理解、掌握寻址方式,是学习、 使用指令的关键。
1 2 3 1 1
1 1 2 4 1
四、 指令的分类
每条指令在执行时要花去一定的时间, 每条指令在执行时要花去一定的时间,以机器周期 时间 为单位。 分类: 为单位。按指令执行时间分类: 单周期(64条);双周期(45条);4周期(2 双周期(45 (2条 单周期(64条);双周期(45条);4周期(2条) (64 每条指令在程序存储器ROM中占据一定的空间, 每条指令在程序存储器ROM中占据一定的空间,以字 ROM中占据一定的空间 节为单位。 分类: 节为单位。按指令所占字节数分类: 单字节(49条);双字节(46条);3字节(16 双字节(46 (16条 单字节(49条);双字节(46条);3字节(16条) (49 按指令的功能分类,可分为5大类: 按指令的功能分类,可分为5大类: 功能分类 数据传送类(29条);算术运算类(24条) 数据传送类(29条);算术运算类(24条 算术运算类 逻辑运算及移位类(24);控制转移类(17条 逻辑运算及移位类(24);控制转移类(17条) );控制转移类 位操作类(17条 位操作类(17条)
二、指令格式
标号: 操作数][ 操作数][ 操作数][ 注释] ][,操作数][, ][; [标号:]操作码 [操作数][ 操作数][,操作数][;注释]
♦ 方括符 ]表示可选项 方括符[ 表示可选项 ♦ 标号代表程序起始地址或转移的目标地址。由字 标号代表程序起始地址或转移的目标地址 代表程序起始地址或转移的目标地址。
第一节 MCS-51指令系统的简介 指令系统的简介
MCS-51共有 共有111条指令,指令的长 条指令, 共有 条指令 度和执行时间因不同的指令而各不相同。 度和执行时间因不同的指令而各不相同。
授课内容: 授课内容:
1、指令表示形式 、 2、指令格式 、 3、指令字节数 、
教学要求: 教学要求 熟练掌握: 熟练掌握: 指令格式 了解: 了解: 指令的表示形式; 指令的表示形式; 指令的字节数; 指令的字节数; 指令分类
1、单字节指令(49条): 单字节指令(49条 (49
(1)无操作数(操作码包含操作数信息) )无操作数(操作码包含操作数信息) 1010 0011B 如 :INC DPTR INC A 0000 0100B 特点】 操作数隐含在操作码中。 【特点】:操作数隐含在操作码中。 (2)操作数在工作寄存器中 ) 11101000B 如:MOV A,R0 , MOV A,R1 11101001B , 特点】 【特点】:寄存器名以三位数代码的形式在指 令的后三位。 令的后三位。
一、指令的表示形式
指令的表示形式是识别指令的标志。 指令的表示形式是识别指令的标志。 1、表示形式有两种:机器语言和汇编语言 表示形式有两种:机器语言和汇编语言 助记符”方式) (也称 “助记符”方式) 00100100B 00001000B ADD A,#08H
二进制表示形式 汇编格式
机器语言的缺点:不便于阅读、 机器语言的缺点:不便于阅读、记忆和调试 缺点 修改。 修改。 汇编语言便于阅读 书写和交流, 便于阅读、 汇编语言便于阅读、书写和交流,但必须把 翻译” 机器码” 它“翻译”为二进制形式 “机器码”后才能 CPU所识别和执行 所识别和执行。 为CPU所识别和执行。
指令说明
R0内容送累加器 内容送累加器A 内容送累加器 立即数FFH送A 送 立即数 立即数30H送内存 送内存20h单元 立即数 送内存 单元 乘法指令 16位寄存器 位寄存器DPTR加一 位寄存器 加一
MOV A,R0 , MOV A,#0FFH , MOV 20H,#30H , MUL AB INC DPTR
0060H 0061H
mov a, #data
双字节指令在程序存储器的存放示意图
3、三字节指令(16条): 三字节指令(16条 指令中的操作数为双字节。如: 指令中的操作数为双字节。 MOV DPTR, #data16 10010000B, data15-8, data7-0 10010000 data15-8 data8-0
直接寻址示意图
累加器A 程序 ROM n n+1 OP 30H
XXH
30H
数据RAM 数据 操作数
XXH
如:MOV A, 30H 注意:操作数是内部RAM或SFR区 注意:操作数是内部 是内部 或 区
使用直接寻址应注意的四个问题: 使用直接寻址应注意的四个问题: 1、 当地址恰好在 、 当地址恰好在SFR区域时 指令也可以用寄 区域时, 区域时 存器名来表示。 存器名来表示。 如:MOV A, 81H 可以写成 MOV A, SP 机器码: 后者更容易阅读和交流, 机器码:E581后者更容易阅读和交流,提倡 后者更容易阅读和交流 使用SFR中寄存器名称来代替直接地址。 中寄存器名称来代替直接地址。 使用 中寄存器名称来代替直接地址 串口数据缓冲器数据送A 如:MOV A, SBUF ;串口数据缓冲器数据送 串口数据缓冲器数据送 MOV IE, #00H ;初始化中断允许寄存器 初始化中断允许寄存器
【注意】:MOV A, #30H MOV A, 30H 两者的区别。 立即数寻址的指令长度为2或 个字节 个字节。 立即数寻址的指令长度为 或3个字节。
二、直接寻址
指令本身含有操作数的8位或 位地址 指令本身含有操作数的 位或16位地址。即指 位或 位地址。 直接给出了操作数的地址。 令直接给出了操作数的地址。如: MOV A, 30H ;将RAM 30H单元内容送累加器 ;将 30H单元内容送累加器 这里30H是操作数在 是操作数在RAM中的地址。 中的地址。 这里 是操作数在 中的地址 很明显,直接寻址的指令长度是 或 个字节 个字节。 很明显,直接寻址的指令长度是2或3个字节。
单片机中, 在MCS-51单片机中,共使用了七种寻址方式, 单片机中 共使用了七种寻址方式, 一条指令可能含多种寻址方式
♦ 立即寻址 ♦ 直接寻址 ♦ 寄存器寻址 ♦ 寄存器间接寻址 ♦ 变址寻址(基址寄存器+变址寄存器间接寻址) 变址寻址(基址寄存器+变址寄存器间接寻址) ♦ 相对寻址 ♦ 位寻址
2、当直接地址在工作寄存器区中时,可以使 、当直接地址在工作寄存器区中时, 工作寄存器区中时 用两种寻址方式来访问。 用两种寻址方式来访问。 如: MOV A, 00H(E500H) ;将RAM中00H单元数据 将 中 单元数据 送A MOV A, R0 (E8H) ;将工作寄存器 的内容 将工作寄存器R0的内容 将工作寄存器 的内容A 其指令的结构不相同,执行时间相同 其指令的结构不相同 执行时间相同 指令执行结果是一样的! 指令执行结果是一样的!
三字节指令在存储器中存放的方式示意图
MOV DPTR, #data16
OP
directΒιβλιοθήκη MOV direct, #data
data0
OP data
rel
CJNE A,#data,rel
指令的字节数与指令的运行时间
指令的字节多是否意味着指令周期就长? 指令的字节多是否意味着指令周期就长? 指 令
字节数 周期数
3、累加器有A、ACC和E0H三种形式,分 、累加器有 、 三种形式, 和 三种形式 属于两种寻址方式, 属于两种寻址方式,但执行效果相同 如: INC A(04H,寄存器寻址 ,寄存器寻址) INC ACC INC 0E0H 直接寻址, 直接寻址,05E0H
4、在指令系统中:字节地址与位地址是完全 、在指令系统中:字节地址与位地址是完全 不同的概念。 不同的概念。 表示, 前者用direct表示,而后者用 表示,但在 前者用 表示 而后者用bit 表示, 指令中都是用16进制表示的数 进制表示的数。 指令中都是用 进制表示的数。 如: MOV A, 20H ;将RAM的20H单元内容送 单元内容送A 的 单元内容送 MOV C, 20H ;将位寻址区中的位地址为 20H 位内容送 位内容送PSW 中的 中。 中的Cy中