搜档网
当前位置:搜档网 › ARM指令系统

ARM指令系统

ARM指令系统
ARM指令系统

ARM指令系统.txt蜜蜂整日忙碌,受到赞扬;蚊子不停奔波,人见人打。多么忙不重要,为什么忙才重要。1.ARM指令的寻址方式有几种?试分别举例说明。

答:

立即数寻址:MOV R0,#15

寄存器寻址:ADD R0,R1,R2

寄存器间接寻址:LDR R0,[R4]

寄存器移位寻址:ADD R0,R1,R2,LSL #1

基址变址寻址:LDR R0,[R1,#4]

多寄存器寻址:LDMIA R0!,{R1-R4}

相对寻址:BL proc ;跳转到子程序proc处执行

proc MOV R0,#1

堆栈寻址:STMFD R13!,{R0-R4};

LDMFD R13!,{R0-R4};

2.ARM指令系统对字节、半字、字的存取是如何实现的?

LDR/STR 字数据加载/存储指令

LDRB/STRB 字节数据加载/存储指令

LDRH/STRH 半字数据加载/存储指令

LDRSB/LDRSH 有符号数字节/半字加载指令

3.如何从ARM指令集跳转到Thumb指令集?

BX指令跳转到指令中所指定的目标地址,并实现状态的切换。

Rm是一个表达目标地址的寄存器。当Rm中的最低位Rm[0]为1时,强制程

序从ARM指令状态跳到Thumb指令状态;当Rm中的最低位Rm[0]为0时,

强制程序从Thumb指令状态跳到ARM指令状态。

4.ARM指令集支持哪几种协处理器指令?

CDP LDC STC MCR MRC

5.ARM指令的条件码有多少个?默认条件码是什么?

15个默认条件码是AL

6.ARM指令中的第二操作数有哪几种形式?试举例说明。

寄存器形式 MOV R1,R0 ;将寄存器R0的值传送到寄存器R1

立即数形式 MOV R0,#5 ;将立即数5传送到寄存器R0

被移位的寄存器形式 MOV R1,R0,LSL#3

7.MOV指令与LDR指令有何区别?

LDR 指令用于在存储器和处理器的寄存器之间传送数据

MOV 主要用于将一个寄存器中的数据传送到另一个寄存器,或者将一个立即数传送到寄存器,8.判断下列指令正误,并说明理由?

(1)LDR R3,[R4]! (2)ADD R6,R5,#4!

(3)LDMIA R6,{R3-R7}! (4)LDMFD R13!,{R2,R4}

(5)ADD R1,R2,#0x104 (6)ADD R1,R2,#0x101

(7)MOV R0,R0 (8)MVN R7,#0x2F100

(9)MVN R0,R3,#2_01110000 (10)SBC R15,R6,LSR R5

(11)AND R5,[R6],R7 (12)MRS R15,CPSR

(13)MSR CPSR,#0x001 (14)MUL R3,R3,R6

(15)MUL R4,R6,#0x80 (16)STRB SP![R0,R4]

(17)LDRB R1,[R6,R4],R6 (18)STRB R0,[R15,#0x04]!

(19)LDRB PC,[R5] (20)LDRSB R5,[R4,#0x101]

(21)STRSH R6,[R5]

9.下列指令在什么条件下被执行

SUBMI R3,R3,#0x08 负数

ADDNE R0,R0,R4 不等

10.下列两段代码是用来实现打开中断和关闭中断,请补齐空白处内容

MRS R1,CPSR

BIC R0,R1,____ #0x80

MSR CPSR_c,R0

MRS R1,CPSR

ORR R1,_____

MSR CPSR_c,R1

11.举例说明B和BL指令的区别、BX和BLX的区别?

B指令示例:

backword SUB Rl,R1,#1

CMP R1,#0 ;比较R1和0

BEQ forward ;如果R1=0 则跳转到forward处执行

SUB R1,R2,#3

SUB R1,R1,#1

forward ADD R1,R2,#4

ADD R2,R3,#2

B backword ;程序无条件跳转到标号backword处执行

BL指令示例

BL func ;跳转到子程序

ADD R1,R2,#2 ;子程序调用完返回后执行的语句,返回地址

func ;子程序

…;子程序代码

MOV R15,R14 ;复制返回地址到PC,实现子程序的返回

BX指令示例

CODE32 ;ARM程序段,32位编码

arm1 ADR R0,thumb1+1 ;伪指令,把语句标号thumb1所在的地址赋

;给R0,末位R0[0]置1,要跳转到THUMB指令集

MOV LR,PC ;设置返回地址

BX R0 ;跳转

ADD R1,R2,#2 ;返回地址处,第4条指令

CODE16 ;THUMB程序段,16位编码

thumb1 ADD R1,R3,#1 ;THUMB程序

BX LR ;跳转到返回地址处,执行第4条指令

BLX指令示例

CODE32 ;ARM程序段,32位编码

arm1 ADR R0,thumb1+1 ;伪指令,把语句标号thumb1所在的地址赋

;给R0,末位R0[0]置1,要跳转到THUMB 指令集

;MOV LR,PC ;该指令注销,比较BL指令

BLX R0 ;跳转,同时设置返回地址即PC?LR

ADD R1,R2,#2 ;返回地址处,第4条指令

CODE16 ;THUMB程序段,16位编码

thumb1 ADD R1,R3,#1 ;THUMB程序

BX LR ;跳转到返回地址处,执行第4条指令

分析:使用BLX指令代替BX指令简化了Thumb例程的调用,因为BLX指令在连接寄存器LR中自动设置了返回地址。比较上例,该例中不需要使用MOV

LR,PC指令来保存PC的值了。

寻址方式及指令系统习题与解答

寻址方式及指令系统习题与解答 计算机科学与工程学院黄洪波2012年3月 一、单项选择题 1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为()。 A.5000H B.5008H C.23008H D.32008H 2.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理址为()。 A.13000H B.23000H C.33000H D.3000H 3.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为()。 A.20200H B.30200H C.50200H D.200H 4.指令MOV MEM[BX],AX中的MEM是()。 A.原码B.反码C.补码D.移码 5.用来作为寄存器间接寻址的寄存器有()个。 A.8 B.6 C.5 D.4 6.指令MOV [BX+SI],AL中的目的操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 7.指令MOV BX,[BP+5]中的源操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 8.段内间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 9.段间间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 10.下述指令中不改变PSW的指令是()。 A.MOV AX,BX B.AND AL,0FH C.SHR BX,CL D.ADD AL,BL 11.下述指令中不影响CF的指令是()。 A.SHL AL,1 B.INC CX C.ADD [BX],AL D.SUB AX,BX 12.两个整数补码9CH和7AH相加运算后,会产生()。 A.无溢出且无进位B.无溢出但有进位

第六章_寻址方式和指令系统

1

第 6章 寻址方式和汇编指令 第6章
6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
▲ 汇编指令是可执行指令,每条指令对应一条机器 码,用以控制处理器中的执行部件进行各种操 作。 ▲ TMS320F281X系列的汇编指令有150多条。 ▲ 它们支持各种信号处理运算,同时也提供了应用 中所需要的多级处理和过程控制功能。 ▲ 寻址方式是指寻找指令中操作数地址的方式。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
TMS320C28x指令集采用7种存储器寻址方式: ▲ 直接寻址方式 ▲ 堆栈寻址方式 ▲ 间接寻址方式 ▲ 寄存器寻址方式 ▲ 数据/程序/IO空间立即寻址方式 ▲ 程序空间间接寻址 ▲ 字节寻址方式

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
F2812 的大多数指令利用操作码中的8位字段来选择寻 址方式和对寻址方式进行修改.在 F2812 指令系统中,这个8 位字段用于以下寻址方式: (1)loc16 。 为16位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
(2)loc32 。 为32位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
以上7种寻址方式都与“loc16/loc32”组合起来使用。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
寻址方式选择位
由 于 F2812 提 供 了 多 种 寻 址 方 式 , 因 此 用 寻 址 方 式 选 择 位 ( AMODE )来选择8位字段( loc16/loc32 )的解码。该 位属于状态寄存器ST1。寻址方式可以大致归类如下: ▲ AMODE=0——该方式是复位后的默认方式,也是F2812的C/C++编译
器使用的方式。这种方式与C2xLP CPU的寻址方式不完全兼容。数据页指针 偏移量是6位(在C2xLP CPU中是7位),并且不支持所有的间接寻址方式。
▲ AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式
兼容。数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。
对与loc16或者loc32字段,其可用的寻址方式总结如P375所示

寻址方式和指令系统

《微机原理》复习思考题第3章 8086的寻址方式和指令系统 3.1 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 3.2 直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段 寄存器指出段地址,指令中应如何表示? 3.3 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定? 3.4 用寄存器间接寻址方式时,BX,BP,SI,DI分别针对什么情况来使用?这四个寄存器组合 间接寻址时,地址是怎样计算的?举例进行说明。 3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作: MOV BYTE PTR [BP], 2000 MOV WORD PTR [BX], 2000 3.6 使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注 意什么问题? 3.7 下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。 XCHG CS, AX MOV [BX], [1000] XCHG BX, IP PUSH CS POP CS IN BX, DX MOV BYTE[BX], 1000 MOV CS, [1000] 3.8 8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。 3.9 以下是格雷码的编码表 0——0000 1——0001 2——0011 3——0010 4——0110 5——0111 6——0101 7——0100 8——1100 9——1101 请用换码指令和其他指令设计一个程序段,实现格雷码往ASCII的转换。 3.10 用加法指令设计一个简单程序,实现两个16位十进制数的加法,结果放在被加数单元。 3.11 为什么用增量指令或减量指令设计程序时,在这类指令后面不用进位标志CF作为判断依 据?

第三章指令系统及寻址方式

第三章指令系统及寻址方式 一、教学内容 1.指令格式 2.指令寻址方式 3.指令系统 二、要求掌握指令的书写格式、指令的寻址方式和每一条指令的作用。 三、重点掌握指令的寻址方式和每一条指令的功能作用。 四、难点在于理解和掌握指令的寻址方式,怎样找到操作数所在存储单元的存放地址以及运用指令编程的技巧等。 五、本章分为4讲,每讲2学时。 第一讲指令寻址方式 1.指令的书写格式 指令有两种书写格式: ?机器指令:由一串二进制数描述 ?符号指令:用英文字母缩写词描述。符号指令的书写格式如下: 标号:操作助记符 [目的操作数][,源操作数];注释 几点说明: 1)标号—表示某一条指令所在存储单元的首址。标号应由字母打头,后跟字母、数字及特殊字符均可,但不能用关键字。 标号的用法: ①标号一般放在子程序(子过程)的第一条指令的开头; ②标号一般放在转移指令要转去的目的地的第一条指令的开头。 ③标号一般放在其他符号定义的前面。 2)指令助记符(操作助记符):MOV;ADD;SUB;END。 3)操作数—有源操作数和目的操作数,他们之间用“,” 分隔。操作数也可有可无。 2.数据寻址方式 一般在指令中包含有操作码和操作数,怎样找到指令中的操作数和操作数所在的地址,这就是寻址方式。

1)立即寻址 操作数直接包含在代码段的指令中。 如: MOV EAX,H MOV BX,6688H MOV AX,1234H ?立即数只能作为源操作数 ?立即寻址主要用来给通用寄存器或存储器赋值 ?不允许给段寄存器直接赋值 2)寄存器寻址 操作数在寄存器中。 32位寄存器:EAX、EBX、ECX、EDX、 ESP、EBP、 ESI、EDI 16位寄存器:AX、BX、CX、DX、SP、BP、SI、 DI、CS、DS、SS、ES、FS、GS 8 位寄存器:AH、AL、BH、BL、 CH、CL、DH、DL 如: MOV AX,BX MOV EDI,ESI MOV AL,CL 3)存储器寻址 操作数在存储器中,其地址由指令以某种方式指出。 ① 16位指令模式下的存储器寻址 16位指令模式寻址结构由4部分组成:段基址×10H+基址+变址+偏移量基址:BX、BP ,变址:SI、DI ,偏移量:8位或16位 如果有效地址在BX,SI或DI中,则以DS寄存器内容为段基址; 如果有效地址在BP中,则以SS段寄存器的内容为段基址。 如果使用段超越(CS:ES:DS:SS:),前缀操作数可以放在冒号前指定的段。例如:MOV ES:[DI],AL MOV ES:2000H, AL

相关主题