单片机系统指令的指令系统的寻址方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机系统指令的指令系统的寻址方式相关的知识,希望对你有一定的参考价值。
参考技术A访问指令
一、操作数在寄存器中;
如MOV A,Rn ;(Rn)→A,n=0~7
1、4组工作寄存区,共32个工作寄存器。
2、部分特殊功能寄存器,例如A、B 及DPTR等。
二、访问片外数据存储器
(1)用R0或R1作为间址寄存器,寻址范围为片外低256个字节;
(2)用DPTR作为间址寄存器,寻址范围为片外64K。
a) MOVX A,@Ri ;i=0或1
若(Ri)=70H,把外部RAM中70H单元的内容送到A
b) MOVX A,@DPTR
若(DPTR)=2000H,把外部RAM中2000H单元的内容送到A
3、堆栈操作指令访问堆栈区
堆栈专用操作指令PUSH(压栈)和POP(出栈)使用堆栈
指针(SP)作间址寄存器
指令PUSH(压栈)和POP(出栈),无前缀标志“@”
四、立即(数)寻址方式
操作数在指令中直接给出,需在操作数前面加前缀标志“#”。
如MOV A,#40H,此时立即数在程序存储单元中。
五、基址寄存器加变址寄存器间址寻址方式
1、以DPTR或PC作基址寄存器,以累加器A作为变址寄存器;
2、基址寄存器+变址寄存器形成操作数地址;
3、本寻址方式专门针对程序存储器,寻址范围可达到64KB。
4、本寻址方式的指令只有3条:
MOVC A,@A+DPTR
MOVC A,@A+PC
JMP @A+DPTR
前2条又称查表指令,将程序存储器单元内容给ACC;
后1条为散转指令,属于转移类指令。
(注)
(1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围可达到64KB。
(2)本寻址方式的指令只有3条:
MOVC A,@A+DPTR
MOVC A,@A+PC
JMP @A+DPTR
六、位寻址方式
89C51有位处理功能,可以对数据位进行操作,
如MOV C,40H是把位40H的值送到进位位C。
寻址范围:
1、内部RAM中的位寻址区(20H—2FH),有2种表示方法。
(1) 直接给出位地址,如MOV C,40H;
(2) 单元地址加位数,如MOV C,(28H).0,指的是28H单元中的最低位。
2、SFR中的可寻址位(70H—FFH,共83位),有4种表示方法。
(1) 直接给出位地址,如MOV C,0D5H(PSW.5的位地址);
(2) 直接写位名称,如MOV C,F0;
(3) 单元地址加位数,如MOV C, (0D0H).5;
(4) SFR符号加位数,如MOV C, PSW.5。
七、相对寻址方式
在相对寻址的转移指令中,给出了地址偏移量“rel”,即
把PC的当前值+ rel 就构成了程序转移的目的地址。即
目的地址=转移指令所在的地址+ 转移指令的字节数+ rel
偏移量rel是带符号的8位二进制补码数,范围是:–128 ~ +127 ;
注意:PC的当前值是紧接在转移指令后的下一条指令的PC值。
计算机组成原理——指令系统考研题
(一)指令格式
1.指令的基本格式
2.定长操作码指令格式
3.扩展操作码指令格式
(二)指令的寻址方式
1.有效地址的概念
2.数据寻址和指令寻址
3.常见寻址方式
(三)CISC和 RISC的基本概念
2009
16.某机器字长16位,主存按字节编制,转移指令采用相对寻址,由两个字节组成,第一字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节PC自动加1。若某转移指令所在主存地址为2000H,相对位移量字段的内容为06H,则该转移指令成功转移后的目标地址是
A. 2006H B.2007H
C. 2008H D.2009H
答案:C
考点:PC相对寻址方式
相对寻址EA=(PC)+A;
执行转移指令,第一步要取指令,是取指令后PC2000H的值。转移指令由两个字节组成,每取一个字节PC自动加1,因此取指令后PC值为2002H,故EA=(PC)+A=2002H+06H=2008H,故答案为C。
17.下列关于RISC的叙述中,错误的是
A. RISC普遍采用微程序控制器
B. RISC大多数指令在一个时钟周期内完成
C. RISC的内部通用寄存器数量相对CISC多
D. RISC的指令数、寻址方式和指令格式种类相对CISC少
答案:A
考点:RISC指令集和CISC的区别
RISC精简指令集特点:
RISC不是简单地简化指令系统,而是通过简化指令使计算机的结构更加简单合理,从而提高运算速度。
1、仅选使用频率高的一些简单指令和很有用但不复杂指令,指令条数少。
2、指令长度固定,指令格式少,寻址方式少。
3、只有取数/存数指令访问存储器,其余指令都在寄存器中进行,即限制内存访问。
4、CPU中通用寄存器数量相当多;大部分指令都在一个机器周期内完成。
5、以硬布线逻辑为主,不用或少用微程序控制。
6、特别重视编译工作,以简单有效的方式支持高级语言,减少程序执行时间。
2010
18.下列寄存器中,反汇编语言程序员可见的是()
A.存储器地址寄存器(MAR)
B.程序计数器(PC)
C.存储区数据寄存器(MDR)
D.指令寄存器(IR)
答案:B
考点:所谓可见,就是程序员可以对其进行主动的修改。
2011
16.偏移寻址通过将某个寄存器内容与一个形式地址相加而生成有效地址。下列寻址方式中,不属于偏移寻址方式的是
A.间接寻址 B.基址寻址
C.相对寻址 D.变址寻址
答案:A
考点:偏移寻址的概念
相对寻址、变址寻址、基址寻址统称为偏移寻址。
17.某机器有一个标志寄存器,其中有进位/借位标志CF、零标志ZF、符号标志SF和溢出标志OF,条件转移指令bgt(无符号整数比较大于时转移)的转移条件是
A.CF+OF=1 B./ SF+ ZF =1
C. / (CF+ ZF) =1 D./ (CF+ SF) =1
答案:C
考点:指令标志位的含义
判断无符号整数A>B成立,满足的条件是结果不等于0,即零标志ZF=0,并且在这个比较就是两个数相减若A>B是不会造成借位的,即进位/借位标志CF=0。所以正确选项为C。
其余选项中用到了符号标志SF和溢出标志OF,显然可以排除掉。其实这里SF=0,OF=0,这样D也成立,但是不符合要求。
18.下列给出的指令系统特点中,有利于实现指令流水线的是
I. 指令格式规整且长度一致
II.指令和数据按边界对齐存放
III.只有Load/Store指令才能对操作数进行存储访问
A.仅I、II B.仅II、III
C.仅I、III D.I、II、III
答案:D
考点:以上三个RISC特征都能有效降低取指令或执行指令的复杂度,从而有利于流水线操作
19.假定不采用Cache和指令预取技术,且机器处于“开中断”状态,则在下列有关指令执行的叙述中,错误的是
A.每个指令周期中CPU都至少访问内存一次
B.每个指令周期一定大于或等于一个CPU时钟周期
C.空操作指令的指令周期中任何寄存器的内容都不会被改变
D.当前程序在每条指令执行结束时都可能被外部中断打断
答案:C
考点:中断的基本概念 ,寄存器用途,指令周期的概念,就算是进行空操作,只要有取指令的过程PC都要+1,所以任何寄存器的内容不会改变的说法错误。
2013
假设变址寄存器 R 的内容为 1000H,指令中的形式地址为 2000 H;地址 1000H 中的内容为 2000H,地址 2000H 中的内容为 3000H,地址 3000 H 中的内容为 4000H,则变址寻址方式下访问到的操作数是( )
A. 1000H B. 2000H C. 3000H D. 4000H
答案:D
2014
17. 某计算机有16个通用寄存器,采用32位定长指令字,操作码字段(含寻址方式位)为8位,Store指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式,若基址寄存器可使用任一通用寄存器,且偏移量用补码表示,则Store指令中偏移量的取值范围是
A -32768~+32767 B -32767~+32768
C -65536~+65535 D -65535~+65536
题目中指令为 32 位,操作码为 8 位(已经包含寻址方式位)。
源操作数采用寄存器直接寻址,因此可以用 4 位来标记使用哪一个寄存器。
目的操作数使用基址寻址,由于可以使用任何一个通用寄存器,因此需要 4 位来标记,所以偏移量站总数 32 - 8 - 4 - 4 = 16 位,因此答案为A.
2016
16.某指令格式如下,
其中M为寻址方式,I为变址寄存器编号,D为形式地址,若采用先变址后间址的寻址方式,则操作数的有效地址是()
A I+D B. (I)+D
C. ((I)+D) D. ((I))+D
答案:C
解析:变址+间址的寻址方式
【2010年真题】43题(11分)
某计算机字节长为16位,主存地址空间大小为128KB,按字编址。采用字长指令格式,指令名字段定义如下:
转移指令采用相对寻址,相对偏移用补码表示,寻址方式定义如下:
注:(X)表示有存储地址X或寄存器X的内容,请回答下列问题:(1)该指令系统最多可有多少指令?该计算机最多有多少个通用寄存器?存储地址寄存器(MAR)和存储数据寄存器(MDR)至少各需多少位?
答:该指令系统最多可有16条指令(OP4位,24=16),该计算机最多有8个通用寄存器(Ms和Md都是3位),存储地址寄存器(MAR)和存储数据寄存器(MDR)至少都需16位。因为地址空间大小为 128KB,按字编址,故共有 64K 个存储单元,地址位数为 16 位,所以MAR 至少为 16 位; 因为字长为 16 位, 所以 MDR 至少为 16 位。
(2)转移指令的目标地址范围是多少?
答:转移指令的目标地址范围为0000H~FFFFH。(指令字长为16位)
(3)若操作码0010B表示加法操作(助记符为add),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H,地址1234H中的内容为5678H,地址5678H中的内容为1234H,则汇编语句“add
(R4),
(R5)+”(逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储单元的内容会改变?改变后的内容是什么?
答:语句“add (R4), (R5)+”对应的机器码:0010(操作码)001(寄存器间接) 100(源操作数) 010(寄存器间接、自增) 101(目的操作数)B,十六进制表示为2315H。
该指令的功能是:把内存1234H单元中的数据与内存5678H单元中的数据进行相加,结果写回到5678H单元,而且R5的内容用作内存地址之后,还要执行R5的内容加1的操作,所以“add
(R4),
(R5)+”指令执行后,R5和存储单元5678H的内容会改变。执行后,R5的内容从5678H变为5679H。内存5678H单元的内容将变为该加法指令计算得到的和:5678H+1234H=68ACH。
以上是关于单片机系统指令的指令系统的寻址方式的主要内容,如果未能解决你的问题,请参考以下文章
计算机组成原理 王道考研2021 第四章:指令系统 -- 指令的寻址方式(指令寻址和数据寻址)CISC和 RISC的基本概念