间接寻址及地址寄存器指令

合集下载

寄存器寻址指令

寄存器寻址指令

字节3 HIGH DATA
字节1
字节2
字节3 字节4 字节5 字节6
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 LOW HIGH DISP DISP LOW HIGH
操作码 D W MOD REG R/M 或 DATA 或 DATA DATA DATA
P67
MOV SP,BX
1000101 1 1 1
(3) POP 出栈操作指令
指令格式:POP 目标
指令功能:目标 ((SP)+1,SP)) SP (SP)+2
SS
栈顶
POP BX 56H 78H
POP AX 12H 34H
78H 56H
34H
12H
SP
栈底
堆栈(Stack)
POP指令
汇编语句
例子
说明
POP reg16 POP CX
16位寄存器
绝大多数双操作数指令,除非特别说明,目的操作数与源操作 数必须类型一致,否则为非法指令
MOV AL,050AH MOV AL,BX 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数 类型就是寄存器的类型 对于存储器单元与立即数同时作为操作数的情况,必须显式指 明;byte ptr指示字节类型,word ptr指示字类型
栈底
汇编语句
例子
说明
PUSH reg16 PUSH BX
16位寄存器
PUSH mem16 PUSH WORD PTR[BX] 16位寻址方式
PUSH seg
PUSH DS
任何段寄存器
例:现场保护恢复
push ax push bx push ds ... pop ds pop bx pop ax

楼第4章指令系统习题解答

楼第4章指令系统习题解答

楼第4章指令系统习题解答习题解答:1.什么是寻址模式?8086/8088 CPU的寻址模式是什么?答:指令的寻址方式就是指获得操作数所在地址的方法。

8086/8088cpu指令的寻址方式可分为8种,为立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址、隐含寻址。

2.指示源操作数和目标操作数在以下指令中的寻址方式(1)movax,[si]源操作数:寄存器寻址目的操作数:寄存器间接寻址(2)movdi,100源操作数:寄存器寻址目的操作数:立即寻址(3)mov[bx],al源操作数:寄存器间接寻址目的操作数:寄存器寻址(4)mov[bx+si],cx源操作数:基址变址寻址目的操作数:寄存器寻址(5)adddx,106h[si]源操作数:寄存器寻址目的操作数:寄存器相对寻址3.阅读以下说明(1)sti对(2)call1000h错(3)divax,dl错(4)shlal,4错(5)popax对(6)inal,[30h]错(7)inccs错(8)out40h,al对4.地址是根据已知的物理条件计算的。

已知:SS=1000h,ES=2000h,DS=3000h,CS=4000H,BX=5000h,di=1200h,BP=2300h(1)(2)(3)(4)(5)5.将SP的初始值设置为2400h,ax=4000H,BX=3600h,然后在执行pushax指令后,SP=?,执行pushbx和popax后,SP=?答:则执行指令pushax后,sp=2400h-2=23feh,再执行pushbx和popaxMovax,[2300h]计算公式:DS×16+2300hmov[BX][di],ax计算公式:DS×16+BX+diaddax,es:[2100h]计算公式:es×16+2100hsubdx,[BP+6]计算公式:SS×16+BP+6movax,[di]计算公式:DS×16+di后sp=23feh。

间接寻址和地址寄存器指令

间接寻址和地址寄存器指令

地址寄存器指令的缺点
缺乏灵活性
地址寄存器指令直接使用寄存器中的地址作为操作数的地址,这使 得程序在处理不同情况时缺乏灵活性。
可扩展性差
由于地址寄存器指令直接使用寄存器中的地址,当数据结构发生变 化时,可能需要修改整个程序以适应新的数据结构。
增加编程难度
由于地址寄存器指令直接使用寄存器中的地址,因此需要程序员手 动管理寄存器的值,这增加了编程的难度和出错的风险。
要点二
中断处理
在处理硬件中断时,地址寄存器指令 用于指定中断处理程序的入口地址。 当发生中断时,系统会自动跳转到该 地址执行中断处理程序。
要点三
直接内存访问( DMA)
在直接内存访问操作中,地址寄存器 指令用于指定要传输数据的起始地址 。通过设置地址寄存器的值,DMA 控制器可以直接在内存和设备之间传 输数据,而不需要CPU的干预。
随着云计算技术的普及,间接寻址和 地址寄存器指令将逐渐云端化,通过 将指令执行的结果存储在云端,实现 数据共享和远程控制,提高应用的灵 活性和可扩展性。
应用领域拓展
物联网
随着物联网技术的不断发展,间 接寻址和地址寄存器指令将在物 联网领域得到广泛应用,如智能 家居、智能农业等,通过指令控 制各种设备的运行,提高智能化 水平和生活质量。
指令格式
指令格式通常包括操作码、 寄存器号和可能的修饰符。
寄存器号指定了要使用的地 址寄存器,如AX、BX、CX 等。
操作码指定了要执行的操作 ,如加法、减法、乘法等。
修饰符可能包括间接寻址、 变址寻址等,用于指定如何 访问内存单元。
03
CATALOGUE
间接寻址与地址寄存器指令的比较
相似之处
选择依据
编程语言和指令集

间接寻址和直接寻址的区别

间接寻址和直接寻址的区别

间接寻址和直接寻址的区别寄存器直接寻址和间接寻址区别:⼀、存放的地址不同寄存器直接寻址指令直接包含有操作数的有效地址(偏移地址),即直接给出操作数地址。

⽽指令以寄存器中的内容为地址,该地址的内容为操作数,即寄存器间接寻址⽅式中,寄存器内存放的是操作数的地址,⽽不是操作数本⾝。

⼆、寄存器对象不同寄存器直接寻址对象为内部数据寄存器和特殊功能寄存器SFR。

⽽寄存器间接寻址对象为R0、R1、DPTR,⽤前⾯加@表⽰,如@R0、@R1、@DPTR。

扩展资料:直接寻址⽅式:在指令格式的地址字段中直接指出操作数在内存的地址ID 。

在通常情况下,操作数存放在中,所以,其将由数据DS和指令中给出的有效地址直接形成,但如果使⽤段超越前缀,那么,操作数可存放在其它段。

直接寻址⽅式常⽤于处理内存单元的数据,其操作数是内存变量的值。

指令中直接给出操作数地址的寻址⽅式称为直接寻址。

寻址对象为:1、内部数据存储器,在指令中以直接地址表⽰;2、特殊功能寄存器SFR,在指令中⽤寄存器名称表⽰。

寄存器间接寻址⽅式:以寄存器中的内容为地址,该地址的内容为操作数的寻址⽅式称为寄存器间接寻址。

能够进⾏寄存器间接寻址的寄存器有:R0、R1、DPTR,⽤前⾯加@表⽰,如@R0、@R1、@DPTR。

寄存器间接寻址的存储空间包括内部数据存储器和外部数据存储器。

由于内部数据存储器共有128字节,因此⽤⼀字节的R0和R1可间接寻址整个空间。

⽽外部数据存储器最⼤可达64K,仅R0或R1⽆法寻址整个空间,为此需要由P2端⼝提供外部RAM⾼8位地址,由R0或R1提供低8位地址,由此共同寻址64K字节范围。

也可⽤16位的DPTR寄存器间接寻址64K字节存储空间。

参考资料来源:寄存器直接寻址-百度百科寄存器间接寻址-百度百科。

8051单片机指令系统的7种寻址方式解析

8051单片机指令系统的7种寻址方式解析

8051单片机指令系统的7种寻址方式解析寻址方式:寻址就是寻找操作数的地址。

绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。

所谓寻址方式就是通过什么途径获取操作数的方式。

根据指令操作的需要,计算机总是提供多种寻址方式。

一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。

8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。

寄存器寻址寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。

采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。

例如:MOV A R1 这条指令的功能是把工作寄存器R1的内容传送到累加器A中,由于操作数在R1中,因此指令中指定了R1,也就得到了操作数。

寄存器寻址方式的寻址范围包括:工作寄存器组R0~R7,部分特殊寄存器ACC,B,DPTR 等。

直接寻址直接寻址:直接寻址就是在指令中直接给出操作数所在单元的真实地址。

这里给出的操作数直接地址为8位二进制地址。

程序中一般用十六进制数表示。

例如:指令MOV A,30H 把内部RAM单元30H中的数据传送给累加器A,指令中30H就是操作数的直接地址。

直接寻址方式的寻址范围包括:内部数据存储器低128单元,特殊功能寄存器。

特殊功能寄存器在指令的表示中除了可以以直接地址形式给出外,还可以以寄存器符号形式给出,如对累加器A,在指令中可使用其直接地址OEOH,也可使用其符号形式ACC。

立即寻址立即寻址:立即寻址方式就是实际操作数作为指令的一部分,在指令中直接给出,取指令时,可在程序存储器中直接取得操作数。

通常把出现在指令中的操作数称为立即数。

采用立即寻址方式的指令,在立即数前面加上。

MCS-51单片机寻址方式小结

MCS-51单片机寻址方式小结

MCS-51单片机寻址方式小结MCS-51单片机寻址方式小结MCS-51单片机寻址方式小结20__-08-2920:34:02|分类:エ程|标签:|字号大中小订阅MCS-51单片机指令系统共使用7中寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址等。

寻址方式定义操作数存放(1)通用寄存器R0~R7;寄存器于寄存器中,(2)部分专用寄存器,例如累加器A、寄存器B以寻址指令中给出数据指针DPTR等名寄存器存放操作数的(1)内部RAM中的低128地址单元,地址范围为内存单元地址00H~FFH;直接寻址直接写在指令中立即数操作数直接寻址写在指令中(2)专用寄存器。

专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。

源操作数为立即数,立即数前面必须加“#”号,以区别立即数和直接地址(1)内部RAM的低128字节。

对内部RAM的低128字节单元的间接寻址,只能使用R0或R1做间将存放操作接寻址寄存器,其通过形式为@Ri(i=0或1);MOVP1,#55HMOVDPTR,#20__HMOVR1,20HMOVA,P1CLRAMOVP1,R4MOVA,R1寻址区域指令举例数的内存单元(2)外部RAM的64K字节。

对外部RAM的64KMOVA,@R0寄存器的地址放在寄字节的间接寻址,使用DPTR作间接寻址寄存器,MOVXA,@DPTR间接寻址存器中,指令其形式为@DPTR;MOVXA,@R0中只给出该寄(3)外部RAM的低256字节。

外部RAM的低256存器字节是一个特殊的寻址区,除了可以使用DPTR作间接寻址寄存器外,还可以使用R0或R1作间接寻址寄存器将基寄存器变址寻址与变址寄存器的内容相(1)变址寻址是专门针对程序存储器的寻址方式,所以只能对程序存储器进行寻址,寻址范围为64K字节;MOVCA,@A+PC加,结果作为操作数的地址(2)变址寻址指令只有2条:MOVCA,@A+PCMOVCA,@A+DPTR将程序计数器PC的当前内容与指令相对寻址中的操作数相加,其结果作为跳转指令的转移地址(1)内部RAM的位寻址区,地址范围是20H~2FH,共16个RAM单元,每个单元包括8个位,共按位进行的位寻址操作(2)特殊功能寄存器SFR中的11个寄存器可以位寻址,包括83个位计128个位,位地址为00H~7FH;MOVC,0D0HMOVC,0DOH.0MOVC,PMOVC,PSW.0专门为改变程序执行方向而设置的SJMP54H扩展阅读:课题MCS-51型单片机的寻址方式广告灯设计软件部分课题MCS-51型单片机的寻址方式授课方式:讲授教学目的:1.让学生了解汇编语言指令的格式;2.让学生掌握单片机指令的7种寻址方式。

10种寻址方式的定义

10种寻址方式的定义

10种寻址方式的定义寻址方式是指计算机系统用来定位并访问存储单元或数据的方式。

以下是常见的一些寻址方式:1.直接寻址(Direct Addressing):直接使用给定地址或指针来访问内存中的数据或指令。

2.间接寻址(Indirect Addressing):使用存储在一个地址或寄存器中的地址来访问数据,间接地定位到实际的数据存储位置。

3.相对寻址(Relative Addressing):使用相对于当前指令或指针的地址偏移量来定位数据,常用于访问数组或其他数据结构的元素。

4.基址寻址(Base Addressing):使用一个基址寄存器和一个偏移量来计算地址,定位到存储单元。

5.索引寻址(Index Addressing):通过一个索引寄存器的值和一个基地址来计算地址,以定位到数组或表中的元素。

6.变址寻址(Displacement Addressing):通过将寄存器中的地址与立即数相加或相减来计算目标地址。

7.间接相对寻址(Indirect Relative Addressing):通过使用相对地址来访问存储单元,但是该地址指向的是另一个存储位置的地址。

8.堆栈寻址(Stack Addressing):使用栈指针来访问栈中的数据,通常用于函数调用和返回时保存和恢复数据。

9.寄存器寻址(Register Addressing):直接使用CPU内部的寄存器地址来访问数据或指令。

10.变量寻址(Variable Addressing):在编程语言中,通过使用变量名来访问和操作变量的值。

这些寻址方式在不同的计算机体系结构和编程范式中有着不同的应用和特点,用于在计算机系统中有效地定位和访问数据。

七种寻址方式(寄存器间接寻址方式)

七种寻址方式(寄存器间接寻址方式)

七种寻址⽅式(寄存器间接寻址⽅式)
操作数在存储器中,操作数的有效地址⽤SI、DI、BX和BP等四个寄存器之⼀来指定,称这种寻址⽅式为寄存器间接寻址⽅式。

该寻址⽅式物理地址的计算⽅法如下:
寄存器间接寻址⽅式读取存储单元的原理如图所⽰。

在不使⽤段超越前缀的情况下,有下列规定:
若有效地址⽤SI、DI和BX等之⼀来指定,则其缺省的段寄存器为DS;
若有效地址⽤BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。

例:假设有指令:MOV BX,[DI],在执⾏时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。

问执⾏指令后,BX的值是什么?
解:根据寄存器间接寻址⽅式的规则,在执⾏本例指令时,寄存器DI的值不是操作数,⽽是操作数的地址。

该操作数的物理地址应由DS和DI的值形成,即:
PA=(DS)*16+DI=1000H*16+2345H=12345H。

所以,该指令的执⾏效果是:把从物理地址为12345H开始的⼀个字的值传送给BX。

其执⾏过程如图所⽰。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

详解西门子间接寻址【址概念】完整一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。

其中操作数是指令要执行目标,也就是指令要进行操作址。

我们知道,PLC中划有各种用途存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,说来指定确切大小。

当然定时器T、计数器C不存这种衡量体制,它们仅用位来衡量。

由此我们可以到,要描述一个址,至少应该包含两个要素:1、存储区域2、这个区域中具体位置比如:A Q2.0其中A是指令符,Q2.0是A操作数,也就是址。

这个址由两部分组成:Q:指是映像输出区2.0:就是这个映像输出区第二个字节第0位。

由此,我们出,一个确切址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。

DB X 200 . 0其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:址标识符。

这样,一个确切址组成,又可以写成:址标识符 + 确切数值单元【间接寻址概念】寻址,就是指定指令要进行操作址。

给定指令操作址方法,就是寻址方法。

谈间接寻址之前,我们简单了解一下直接寻址。

所谓直接寻址,简单说,就是直接给出指令确切操作数,象上面所说,A Q2.0,就是直接寻址,A这个指令来说,Q2.0就是它要进行操作址。

这样看来,间接寻址就是间接给出指令确切操作数。

对,就是这个概念。

比如:A Q[MD100] ,A T[DBW100]。

程序语句中用方刮号 [ ] 标明内容,间接指明了指令要进行址,这两个语句中MD100和DBW100称为指针Pointer,它指向它们其中包含数值,才是指令真正要执行址区域确切位置。

间接由此名。

西门子间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。

【存储器间接寻址】存储器间接寻址址给定格式是:址标识符+指针。

指针所指示存储单元中所包含数值,就是址确切数值单元。

存储器间接寻址具有两个指针格式:单字和双字。

单字指针是一个16bit结构,从0-15bit,指示一个从0-65535数值,这个数值就是被寻址存储区域编号。

双字指针是一个32bit结构,从0-2bit,共三位,8进制指示被寻址位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535数值,这个数值就是被寻址字节编号。

指针可以存放M、DI、DB和L区域中,也就是说,可以用这些区域内容来做指针。

单字指针和双字指针使用上有很大区别。

下面举例说明:L DW#16#35 //将32位16进制数35存入ACC1T MD2 //这个值再存入MD2,这是个32位位存储区域L +10 //将16位整数10存入ACC1,32位16进制数35自动移动到ACC2T MW100 //这个值再存入MW100,这是个16位位存储区域OPN DB[MW100] //打开DB10。

这里[MW100]就是个单字指针,存放指针区域是M区, MW100中值10,就是指针间接指定址,它是个16位值!--------L L#+10 //以32位形式,把10放入ACC1,此时,ACC2中内容为:16位整数10T MD104 //这个值再存入MD104,这是个32位位存储区域A I[MD104] //对I1.2进行与逻辑操作!=DIX[MD2] //赋值背景数据位DIX6.5!--------A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态=Q[MD2] //赋值给Q6.5--------A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态=Q[MW100] //错误!!没有Q10这个元件---------------------------------------------------------------------------------------------------从上面系列举例我们至少看出来一点:单字指针只应用址标识符是非位情况下。

确,单字指针前面描述过,它确定数值是0-65535,而byte.bit这种具体位结构来说,只能用双字指针。

这是它们第一个区别,单字指针另外一个限制就是,它只能对T、C、DB、FC和FB进行寻址,通俗说,单字指针只可以用来指代这些存储区域编号。

相单字指针,双字指针就没有这样限制,它可以对位址进行寻址,还可以对BYTE、WORD、DWORD寻址,没有区域限制。

,有必有失,对非位区域进行寻址时,必须确保其0-2bit为全0!总结一下:单字指针存储器间接寻址只能用址标识符是非位场合;双字指针有位格式存,对址标识符没有限制。

也正是双字指针是一个具有位指针,,当对字节、字双字存储区址进行寻址时,必须确保双字指针内容是8倍数。

现,我们来分析一下上述例子中A I[MD104] 为什么最后是对I1.2进行与逻辑操作。

L L#+10 ,我们知道存放MD104中值应该是:MD104:0000 0000 0000 0000 0000 0000 0000 1010当作为双字指针时,就应该3-18bit指定byte,0-2bit指定bit来确定最终指令要操作址,:0000 0000 0000 0000 0000 0000 0000 1010 = 1.2详解西门子间接寻址<2>【址寄存器间接寻址】先前所说存储器间接寻址中,间接指针用M、DB、DI和L直接指定,就是说,指针指向存储区内容就是指令要执行确切址数值单元。

但寄存器间接寻址中,指令要执行确切址数值单元,并非寄存器指向存储区内容,也就是说,寄存器本身也是间接指向真正址数值单元。

从寄存器到出真正址数值单元,西门子提供了两种途径:1、区域内寄存器间接寻址2、区域间寄存器间接寻址址寄存器间接寻址一般格式是:〖址标识符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5] 或 M[AR1,P#0.0] 。

〖寄存器,P#byte.bit〗统称为:寄存器寻址指针,而〖址标识符〗上帖中谈过,它包含〖存储区符〗+〖存储区尺寸符〗。

但这里,情况有所变化。

比较一下刚才例子:DIX [AR1,P#1.5]X [AR1,P#1.5]DIX可以认为是我们通常定义址标识符,DI是背景数据块存储区域,X是这个存储区域尺寸符,指是背景数据块中位。

但下面一个示例中M呢?X指定了存储区域尺寸符,那么存储区域符哪里呢?毫无疑问,AR1中!DIX [AR1,P#1.5] 这个例子,要寻址址区域事先已经确定,AR1可以改变这个区域内确切址数值单元,我们称之为:区域内寄存器间接寻址方式,相应,这里[AR1,P#1.5] 就叫做区域内寻址指针。

X [AR1,P#1.5] 这个例子,要寻址址区域和确切址数值单元,都未事先确定,确定了存储大小,这就是意味着我们可以不同区域间不同址数值单元以给定区域大小进行寻址,称之为:区域间寄存器间接寻址方式,相应,这里[AR1,P#1.5] 就叫做区域间寻址指针。

既然有着区域内和区域间寻址之分,那么,同样AR1中,就存有不同内容,它们代表着不同含义。

【AR格式】址寄存器是专门用于寻址一个特殊指针区域,西门子址寄存器共有两个:AR1和AR2,每个32位。

当使用区域内寄存器间接寻址中时,我们知道这时AR中内容指明数值单元,,区域内寄存器间接寻址时,寄存器中内容等同于上帖中提及存储器间接寻址中双字指针,也就是:其0-2bit,指定bit位,3-18bit指定byte字节。

其第31bit固定为0。

AR:0000 0000 0000 0BBB BBBB BBBB BBBB BXXX这样规定,就意味着AR取值只能是:0.0 ——65535.7例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。

而区域间寄存器间接寻址中,要寻址区域也要AR中指定,显然这时AR中内容肯定于寄存器区域内间接寻址时,对AR内容要求,说规定不同。

AR:1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX比较一下两种格式不同,我们发现,这里第31bit被固定为1,同时,第24、25、26位有了可以取值范围。

聪明你,肯定可以联想到,这是用于指定存储区域。

对,bit24-26取值确定了要寻址区域,它取值是这样定义:区域标识符26、25、24位P(外部输入输出)000I(输入映像区)001Q(输出映像区)010M(位存储区)011DB(数据块)100DI(背景数据块)101L(暂存数据区,也叫局域数据)111我们把这样AR内容,用HEX表示话,那么就有:当是对P区域寻址时,AR=800xxxxx当是对I区域寻址时,AR=810xxxxx当是对Q区域寻址时,AR=820xxxxx当是对M区域寻址时,AR=830xxxxx当是对DB区域寻址时,AR=840xxxxx当是对DI区域寻址时,AR=850xxxxx当是对L区域寻址时,AR=870xxxxx列举,我们有了初步结论:AR中内容是8开头,那么就一定是区域间寻址;要DB区中进行寻址,只需8后面跟上一个40。

84000000-840FFFFF指明了要寻址范围是:DB区0.0——65535.7。

例如:当AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 1101 0100(b),实际上就是等于DBX26.4。

我们看到,寄存器寻址指针 [AR1/2,P#byte.bit] 这种结构中,P#byte.bit又是什么呢?【P#指针】P#中P是Pointer,是个32位直接指针。

所谓直接,是指P#中#后面所跟数值存储单元,是P直接给定。

这样P#XXX这种指针,就可以被用来指令寻址中,作为一个“常数”来对待,这个“常数”可以包含或不包含存储区域。

例如:● L P#Q1.0 //把Q1.0这个指针存入ACC1,此时ACC1内容=82000008(hex)=Q1.0★ L P#1.0 //把1.0这个指针存入ACC1,此时ACC1内容=00000008(hex)=1.0● L P#MB100 //错误!必须byte.bit结构给定指针。

● L P#M100.0 //把M100.0这个指针存入ACC1,此时ACC1内容=83000320(hex)=M100.0● L P#DB100.DBX26.4 //错误!DBX已经提供了存储区域,不能重复指定。

● L P#DBX26.4 //把DBX26.4这个指针存入ACC1,此时ACC1内容=840000D4(hex)=DBX26.4我们发现,当对P#指定数值时,累加器中值和区域内寻址指针规定格式相同(也和存储器间接寻址双字指针格式相同);而当对P#指定带有存储区域时,累加器中内容和区域间寻址指针内容完全相同。

相关文档
最新文档