制。
7、 汇编子程序传递参数有哪几种方式?
答:汇编子程序传递参数有三种方式,分别为:
○1寄存器传递参数方式; ○2存储区域传递参数方式; ○3堆栈传递参数方式;
8、 用汇编语言编写程序将R0寄存器中的字数据分成4组,每组8位,然后分别存放到R1、R2、R3
和R4中。 答:
AREA decode, CODE, READONLY ENTRY CODE32 start LDR LDR
R0, =x R0, [R0]
; 将x加载到寄存器R0 ; 取x的低八位
; 取x的次低八位
; 代码段名decode
; 程序的入口
MOV R1, #0xFF AND R1, R1, R0 MOV R2,
#0xFF
AND R2, R2, R0, ROR #8 MOV R3, #0xFF
AND R3, R3, R0, ROR #16 MOV R4, #0xFF
AND R4, R4, R0, ROR #24 stop
MOV R0, #0x18 LDR SWI
0x123456
; 取x的次高八位 ; 取x的高八位
; 这三条指令是ADS调试环境特约
R1, =0x20026 ;程序运行结束返回编译器调试环境
AREA Data, DATA, READWRITE x DCD END
123456789
; 数据段的名字Data
; 结束
9、 用汇编语言编写程序统计任意字符串包含的字符个数。(约定:字符串以0为结束标志) 答:
AREA count, CODE, READONLY ENTRY CODE32 start LDR CONTI LDRB R1, [R0]
; 将string中的一个字符加载到寄存器R1
R0, =string
; R0指向字符串string中第一个字符
MOV R2, #0
; 代码段名 count
; 程序的入口
CMP R1, #0
; 是否是字符串结束标志
; 如果不是,指针拨向下一个字符
; 如果是,将统计的字符串个数,放入单元num
ADDNE R2, R2, #1 ; 如果不是,统计个数增加1 ADDNE R0, R0, #1 BNE CONTI LDREQ R3, =NUM STREQ R2, [R3] stop
MOV R0, #0x18 LDR SWI
AREA Data, DATA, READWRITE string DCB NUM DCB END
0
100
; 这三条指令是ADS调试环境特约
R1, =0x20026
0x123456
;程序运行结束返回编译器调试环境
; 数据段的名字Data
\
; 结束
10、 用汇编语言编写程序计算:答:
ENTRY CODE32 start LDR
R0, =sum
; R0指向存储单元sum ; R1存放累加和 ; R2初始化起始值 ; 实现R1=R1+R2*2 ; 判断R2是否等于100 ; 如果不等,R2累加1
; 如果相等,将累加和R1放入存储单元sum中
; 这三条指令是ADS调试环境特约
MOV R1, #0 MOV R2, #1 CONTI
ADD R1, R1, R2, LSL #1 CMP R2, #100 BNE CONTI stop
MOV R0, #0x18 LDR SWI
AREA Data, DATA, READWRITE sum END
DCD
0
; 结束
; 数据段的名字Data
0x123456
R1, =0x20026
;程序运行结束返回编译器调试环境
ADDNE R2, R2, #1 STREQ R1, [R0]
Sum??2?NN?1
AREA sum2n, CODE, READONLY
; 代码段名sum2n
; 程序的入口
11、 用汇编语言编写程序实现:已知BUF1中有N1个按从小到大顺序排列的互不相等的字符号数,BUF2中有N2个从小到大顺序排列的互不相等的字符号数。试编写程序将BUF1和BUF2中的数合并到BUF3中,使得BUF3中的数互不相等且按从小到大顺序排列。
答:略!
12、 用汇编语言编写程序实现:将字节变量BVAR中的压缩型BCD数转换为二进制数,并存入原变
量中。 答:
AREA tranx, CODE, READONLY ; 代码段名tranx ENTRY CODE32 start LDR LDR
R0, =BVAR R1, [R0]
#0x0F
; 取BVAR的个位 ; 取BVAR的十位 ; R4=R3*2 ; R5=R3*8 ; R3=R4+R5=R3*10 ; R1=R3+R2
; 将BVAR的值加载到寄存器R1
; 程序的入口
MOV R2,
AND R2, R2, R1 MOV R3, #0x0F
AND R3, R3, R1, LSR #4 MOV R4, R3, LSL #1 MOV R5, R3, LSL #3 ADD R3, R4, R5 ADD R1, R3, R2 STR R1, [R0] stop
MOV R0, #0x18 LDR SWI
0x123456
; 将转换的值存到BVAR变量中 ; 这三条指令是ADS调试环境特约
;程序运行结束返回编译器调试环境
R1, =0x20026
AREA Data, DATA, READWRITE BVAR DCB END
0x89
; 数据段的名字Data
; 结束
第5章 练习题
1.简述SRAM芯片与DRAM芯片的共同点与不同点。
2.简述ROM芯片的常见分类,各种ROM芯片的特点及其适用场合。
3.某微机系统中ROM区的首地址是9000H,末地址是FFFFH,其ROM区域的存储容量是多少? 4.设有一个具有20位地址线和32位字长的存储器,问:(1)该存储器能存储多少个字节信息?(2)
如果该存储器由256K×8位SRAM芯片组成,需要用多少片?需要多少位地址来作芯片选择? 5.若CPU访问由256K×1位的DRAM芯片构成的512K×8位的存储器子系统,问CPU需要使用多少根
地址线?那些地址线用作片内寻址?那些地址线用作片选控制?
6.某计算机由2164芯片(64K?1位)组成64K?8位的内存系统,当CPU将内存中的某一个存储单元值
读出后,该存储单元的内容变成什么?该内存系统的刷新控制电路,需要在一个刷新周期内,刷新多少行?
7. 某微机系统中,使用了1片EPROM 2732,它与CPU的连接关系如图5.38所示,试计算该芯片在系
统中的地址空间范围,以及可访问多少个存储单元。
A15 ~ A0A10A11A12A13A14A15A9~A0A11CS A10EPROM2732CPUIO/M
图5.38
8.在某计算机系统中扩展32K字节的RAM,起始地址为8000H,设地址总线为20位,数据总线为8位。
选用6264芯片,画出扩展的存储器的电路连接图。
9.用16K×8位DRAM芯片构成64K×32位的存储器,试画出该存储器的电路连接图。
10.由8088 CPU组成一个小型计算机系统,有ROM 32KB,地址范围为00000H~07FFFH;有RAM 8KB,
地址范围为08000H~09FFFH;如果ROM选用2764(8K×8位),RAM选用8K×1位的SRAM芯片,试画出扩展的存储器的电路连接图。
第6章 练习题
1、 CPU与外设交换数据的传送方式有哪几种?各有何特点?
答:无条件数据访问方式、状态查询数据访问方式、中断方式数据访问和DMA方式数据访问传输等几种方式。
? 无条件数据访问方式特点:处理器在进行访问时不必关心其状态,这些设备永远处于‘准备好’状
态,可随时访问。采用无条件传送方式的接口电路很简单。
? 状态查询数据访问方式特点:它是对‘条件外设’的一种控制方式;处理器在进行访问时,需要关
心其状态,只有状态许可时方可对外设进行访问。对于慢速外设,严重影响CPU的效率;编程较为简单。
? 中断方式数据访问特点:它是对‘条件外设’的一种控制方式;当外设需要与CPU进行信息交换时,
由外设主动向CPU发出数据传送请求信号,CPU在等待此请求信号时可以运行其他的程序代码,提高了CPU的效率。需要编写中断服务程序。 ? DMA方式数据访问传输等几种方式特点:在高速外设和存储器之间桥接建立一条直接数据传输的临
时通道,控制并完成数据块在内存与高速外设之间高速直接地传输。具有更高的数据吞吐率,解放CPU可以并行地处理其他程序代码。
2、 一般I/O接口电路的作用有哪些?
答:I/O接口电路主要用于解决下列问题:
1)输出数据的锁存缓冲,协调主机与外设之间数据传输的速度差异。 2)输入数据的三态隔离,确保非I/O传送期间处理器总线不被外设占用。
3)信号形式匹配,将诸如光电、压力、温度等多种形式的物理信号统一转换成处理器可直接
处理的数字电路信号或反之。
4)信号格式转换,将主机系统中的并行数据转换成外设协议数据格式或反之。 5)产生和提供联络、控制等信号,保证处理器与外设之间数据传输的有效和可靠。
3、 接口电路中的寄存器分为哪几类?应用软件编程人员如何使用它们来驱动外设接口电路?
答:接口电路中的寄存器分为状态寄存器、数据寄存器和控制寄存器三类。编程人员读取、分析状态寄存器中的数据情况,即可知道设备的当前状态,依据具体情况读/写数据寄存器来完成数据的交互,向控制寄存器写入控制字实现对外设的实际控制。
4、 嵌入式系统常用的外设有哪些?这些外设一般以哪种方式存在?
答:通用并行输入输出接口(GPIO)、定时计数器(Timer)、通用异步收发器(UART)和中断控制器等。这些外设对于编程开发者而言外设都可以抽象成为一组端口寄存器,即状态寄存器、数据寄存器和控制寄存器三类,CPU通过对各个端口寄存器的访问实现对外设的数据传输和控制。
5、 ARM系统中实现中断接入的部件是什么?它有何功能?
答:向量中断控制器(VIC)。通过对VIC编程可对ARM器件的各个中断源进行中断屏蔽控制、中断优先级控制、中断分类控制、中断向量传递、状态查询等。
6、 什么是中断源?常采用中断方式和CPU交互的外设部件有哪些?中断处理过程是什么?
答:计算机技术中将任何能够引起计算机中断的事件统称为‘中断源’。常采用中断方式和CPU交互的外设部件有外中断(EINT)、定时计数器(Timer)、UART、SPI、RTC等。中断处理过程主要含有:中断请求,中断响应,断点保护,中断处理,中断返回5个步骤。