第三章 寻址方式和汇编指令.
汇编语言程序设计及上机指导第3章指令格式与寻址方式

高地址
(2)寄存器间接寻址
返回
操作数在存储器中,而操作数的有效地址EA却在指定的寄存器中,
即 EA=[寄存器]
1)16位寻址时,EA放在SI、DI、BP或BX中。
若以SI、DI、BX间接寻址,则默认操作数在DS段中。
MOV AX,[SI]
;默认DS为段基址
若以寄存器BP间接寻址,则默认操作数在堆栈段中。
BX,BP
SI,DI
不用该分量,默 认为1
0,8,16(位)
所有32位通用寄存器
除ESP外的所有32位 通用寄存器
1,2,4,8(倍)
0,8,32(位)
所有32位/64位通用寄存 器(16个)
所有32位/64位通用寄存 器(16个)
1,2,4,8(倍)
0,8,32,64(位)
如:ADD AX,20[BX][SI]
MOV ECX,[EBP+50] ;也可写成 MOV ECX,50[EBP]
MOV DX,[EAX+BASE] ;也可写成 MOV DX,BASE[EAX]
BASE是符号常量或变量
MOV ECX,[EBP+50]指令执行时,EBP寄存器内容为3000H,再加上 位移量50H之和为3050H,然后把由SS寄存器寻址的段中的3050H 单元的32位数据传送给ECX。
最常用的数据传送指令MOV的格式为: MOV DEST,SRC ;将源操作数SRC的值传送至目的操作数
【例】 MOV EAX,EBX ;将EBX的值送给EAX
2019/6/4
3.2.2 有效地址的概念
返回
在80X86系列CPU中,内存单元的地址由两部分组成:
段基地址和段内偏移地址(也称段内偏移量)
微机作业第三章

第3章8051指令与汇编程序设计1. 8051微控制器有哪些寻址方式?每种寻址方式使用的变量和寻址空间是什么?8051单片机共有7种寻址方式。
寻址方式是指令中确定操作数的形式,用来确定操作数所处的存储空间。
1.立即寻址:在指令中直接给出操作数MOV A, #80H 8位操作数MOV A, #2000H 16位操作数2.直接寻址:指令中直接给出操作数地址(1)SFR,这一存储空间只能使用直接寻址MOV PSW, #50H(2)内部数据RAM,这一存储空间可以使用直接寻址和寄存器间接寻址MOV A, 30H3.寄存器寻址:以通用寄存器的内容作为操作数(通用寄存器包括A, B, DPTR, R0~R7)INC DPTR注意:A、B既是通用寄存器,也是SFR(直接寻址)4.寄存器间接寻址:以寄存器中的内容作为操作数的地址能够用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP区分内部数据RAM寻址和外部数据RAM寻址:外部数据RAM寻址指令上采用MOVX对内部数据RAM寻址:使用8位的R0或者R1即可MOV @R0, A对外部数据RAM寻址:使用P2端口提供高8位地址,使用R0或者R1提供低8位地址;或者使用16位的DPTR提供地址MOVX A, @R1MOVX @DPTR, A5.变址寻址:以基址寄存器PC或者DPTR与变址寄存器A中的内容之和作为操作数的地址变址寻址只能对程序存储器中的数据进行寻址,由于程序存储器是只读的,因此变址寻址只有读操作,指令上采用MOVCMOVC A, @A+DPTRMOVC A, @A+PC6.相对寻址:用于修改PC的值,使得PC加上指令中给出的一字节的偏移量由于转移指令有两字节和三字节这两种形式,因此偏移量的范围分别为-126~+129和-125~+130SJMP 80H7.位寻址:以位地址中的内容为操作数SETB 20HMOV 32H, C各种寻址方式的使用场合:立即寻址:常数直接寻址:SFR和内部数据RAM寄存器寻址:寄存器区寄存器间接寻址:内部数据RAM和外部数据RAM变址寻址:程序存储器相对寻址:PC位寻址:位地址区2.MOV、MOVX、MOVC指令有什么区别?它们的访问空间分别是什么?①MOV,用于片内数据存储器中的数据传递指令中。
第三章操作数的寻址方式

第一节 汇编指令格式
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章 8086指令系统及汇编语言程序设计

图3-7 立即数寻址
第3章 8086指令系统及汇编语言程序设计
注意: (2)寄存器寻址方式 ● 寄存器寻址方式的指令操作在CPU 定义:操作数放在寄存器内,由指令直接给出某个 内部执行,不需要执行总线周期,执行速 寄存器的名字,以寄存器的内容作为操作数。寄存器可以 度快。 是16位的 AX、BX、CX、DX、SI、DI、SP、BP寄存器, ● 寄存器寻址方式既适用于指令的源 也可以是8位的 AH、AL、BH、BL、CH、CL、DH、DL 寄存器。 操作数,也适用于目的操作数,并且可同 时用于源操作数和目的操作数。 【例3-2】 MOV AX,CX ;(AX)←(CX) INC AL ;(AL)←(AL)+1 指令执行结果如图3-8 所示
图3-8 寄存器寻址
第3章 8086指令系统及汇编语言程序设计
(3)直接寻址方式 定义:操作数在存储器中,指令中直接给出操作数所在存 注意: 储单元的有效地址。有效地址( EA)也称为偏移地址,它代表 ●直接寻址方式的操作数所在存储单元的段地址一 操作数所在存储单元距离段首址的字节数。有效地址是一个无 般在数据段寄存器DS中。 符号的16位二进制数。 ●如果操作数在其他段,则需要在指令中用段超越 【例3-3】 前缀指出相应的段寄存器名。 ● VALUE是一种符号表示法,此内容将在伪指令中 MOV AH, [1234H ] ;将DS段中1234H单元的内容送给AH 给予讲解。 MOV AH ,VALUE ;将DS段中VALUE单元的内容送给AH ●在实地址方式下,物理地址=16*段地址(DS) MOV AX, [2100H] ;将DS段中2100H单元的内容送给AL, +偏移地址(EA) 2101H单元的内容送给AH MOV BX,ES:【2000H】 ;段超越,操作数在附加段。即 物理地址=(ES)*16+2000H
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章 8086 8088指令系统和寻址方式

第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式
若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、常用操作数符号说明
符号
XARn ARn,ARm ARnH ARPn AR(ARP) XAR(ARP) AX # PM PC ~ [loc16] 0:[loc16] S:[loc16] [loc32] 0:[loc32] S:[loc32] 7bit 0:7bit S:7bit 8bit 0:8bit
5
PM与结果保存方式的关系
PM +4 +1 0 -1 -2 -3 -4 -5 -6 保存方式 P(31:4)=相乘结果中低38位的(27:0),P(3:0)+0 P(31:1)=相乘结果中低38位的(30:0),P(31)+0 P(31:0)=相乘结果中低38位的(31:0) P(31:0)=相乘结果中低38位的(32:1) P(31:0)=相乘结果中低38位的(33:2) P(31:0)=相乘结果中低38位的(34:3) P(31:0)=相乘结果中低38位的(35:4) P(31:0)=相乘结果中低38位的(36:5) P(31:0)=相乘结果中低38位的(37:6)
§3.2 寻址方式
C28x系列DSP的指令集采用7种寻址方式:
直接寻址方式 堆栈寻址方式 间接寻址方式 寄存器寻址方式 数据/程序/IO空间寻址方式 程序空间间接寻址方式 字节寻址方式
第三章 寻址方式和汇编指令
§3.1 汇编语言指令集概述 §3.2 寻址方式 §3.3 C28x汇编操作指令 §3.4 汇编程序
1
§3.1 汇编语言指令集概述
在TMS320C2000系列中,CPU内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些CPU的硬件结构有一定差别,指令集也不相同,但在C28x芯片 中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具 有最佳兼容性。 通过状寄存器STl的位OBJMODE和位AMODE的组合来选定模式。 3种操作模式: C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址 方式和指令系统,因此,一般应使C28x芯片工作于该种模式。 C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标—兼 容模式。在该模式下,目标码与C27xCPU完全兼容,且它的循环—计数 也与C27xCPU兼容。 C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这 些源代码是用C28x代码生成工具编译生成的。
4
关于算术方面的助记符以及与其相关的标志位
COND 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 语法 NEQ EQ GT GEQ LT LEQ HI HIS,C LO,NC LOS NOV OV NTC TC NBIO UNC 描述 不等于 等于 大于(有符号减法) 大于或等于(有符号减法) 小于(有符号减法) 小于或等于(有符号减法) 高于(无符号减法) 高于或相同(无符号减法) 低于(无符号减法) 低于或相同(无符号减法) 无溢出 溢出 测试位为0 测试位为1 BIO输入等于零 无条件 测试标志位 Z=0 Z-1 Z=0且N=1 N=0 N=1 Z=1或N=1 C=1且Z=0 C=1 C=0 C=1或Z=0 V=0 V=1 TC=0 TC=1 BIO=0
续:
S:8bit 10bit 0:10bit S:10bit 16bit 0:16bit S:16bit 22bit 0:22bit S:22bit LSb LSB LSW MSb MSB MSW OBJ N {} = == 8位立即数,符号扩展 表示10位立即数 10位立即数,零扩展 10位立即数,符号扩展 表示16位立即数 16位立即数,零扩展 16位立即数,符号扩展 表示22位立即数 22位立即数,零扩展 22位立即数,符号扩展 最低有效位 最低有效字节 最低有效字 最高有效位 最高有效字节 最高有效字 对于某条指令,位OBJMODE的状态 重复次数(N=0,1,2,3,4,5,6…) 可选字段 赋值 等于
6
2、汇编语法指令描述
汇编指令一般都由操作符和操作数组成,操作符也被称为指令助记符,它 是指令中的关键字,表示本条指令操作类型,不能省略。操作数可以省略,也 可以有很多,但各操作数之间要用“,”分开。指令助记符与操作数之间要用空 格分开。 ARn : n为数值0~7,ARn指定下次的辅助寄存器。 ind : 选择以下7种符号之一:*,*+,*-,*0+,*0-,*BR0+,*BR0-(兼容模式 使用)。 #:立即寻址方式中常用的前缀。数值前面带“#”,表示该数值为一个立即数 << 左移。 >> 右移。 @: 当使用C28x语法时,64位字段数据与通过“@”符号来表示,以帮助程 序员理解当前正在使用哪种寻址模式。 @@: 当使用C28x语法时,128位字段数据页通过“@@”符号来表示。 loc16:16位寻址方式指定地址单元的内容。 loc32:32位寻址方式指定地址单元的内容。 7 #16bitsigned:16位有符号立即数。
描述
32位辅助寄存器XAR0~XAR7 32位辅助寄存器XAR0~XAR7的低16位 32位辅助寄存器XAR0~XAR7的高16位 32位辅助寄存器指针,ARP0指向XAR0,ARP1指向XAR1…… ARP指向的辅助寄存器的低16位 ARP指向的辅助寄存器 累加器的高16位寄存器AH或者16位寄存器AL 立即数助记符 乘积移位方式(+4 ,1 ,0 ,-1,-2,-3,-4 ,-5 ,-6) 22位程序计数器 按位求反码 Loc16寻址方式对应的16位数据 将Loc16寻址方式对应的16位数据进行零扩展 将Loc16寻址方式对应的16位数据进行符号扩展 Loc32寻址方式对应的32位数据 将Loc32寻址方式对应的32位数据进行零扩展 将Loc32寻址方式对应的32位数据进行符号扩展 表示7位立即数 7位立即数,零扩展 7位立即数,符号扩展 表示8位立即数 3 8位立即数,零扩展