html简单网站建设代码,wordpress在apache2.4,专业的盐城网站建设,织梦教育网站模板目录 实验 CCS的使用和汇编程序设计一、实验目的二、试验设备三、实验内容四、实验程序 实验 CCS的使用和汇编程序设计
一、实验目的 熟悉CCS开发软件 学会C55X汇编语言程序设计 熟悉c55x汇编指令
二、试验设备
计算机#xff0c;CCS开发环境
三、实验内容 安装CCS5.5 … 目录 实验 CCS的使用和汇编程序设计一、实验目的二、试验设备三、实验内容四、实验程序 实验 CCS的使用和汇编程序设计
一、实验目的 熟悉CCS开发软件 学会C55X汇编语言程序设计 熟悉c55x汇编指令
二、试验设备
计算机CCS开发环境
三、实验内容 安装CCS5.5 熟悉CCS的基本操作工程的打开、导入 熟悉用CCS调试程序、查看寄存器 利用CCS软件观察如下指令运行结果
指令1
ADD *AR3, T0, T1
含义AR3间接寻址得到的内容与T0的内容相加结果装入T1并将AR3增1。
Before After
AR3 0302 AR3 0303
302 EF00 302 EF00
T0 3300 T0 3300
T1 0 T1 2200
CARRY 0 CARRY 0指令2
MOV *AR3 #16,AC1
Before After
AC1 00 0200 FC00 AC1 00 3400 0000
AR3 0200 AR3 0201
200 3400 200 3400指令3
ADDSUBCC *AR1,AC0,TC2,AC1
Before After
AC0 00 EC00 0000 AC0 00 EC00 0000
AC1 00 0000 0000 AC1 01 1F00 0000
AR1 0200 AR1 0200
200 3300 200 3300
TC2 1 TC2 1
SXMD 0 SXMD 0
M40 0 M40 0
AC0V1 0 AC0V1 1
CARRY 0 CARRY 1指令4
AMAR *AR2
:: MAC uns(*AR1), uns(*CDP), AC0 #16
Before After
AC0 00 6900 0000 AC0 00 95C0 9200
AC1 00 0023 0000 AC1 00 0023 0000
*AR1 EF00 *AR1 EF00
AR2 0201 AR2 0202
*CDP A067 *CDP A067
ACOV0 0 ACOV0 1
ACOV1 0 ACOV1 0
CARRY 0 CARRY 0
M40 0 M40 0
FRCT 0 FRCT 0
SATD 0 SATD 0指令5
ADD *AR1 T0, AC1, AC0
Before After
AC0 00 0000 0000 AC0 00 2330 0000
AC1 00 2300 0000 AC1 00 2300 0000
T0 000C T0 000C
AR1 0200 AR1 0200
200 0300 200 0300
SXMD 0 SXMD 0
M40 0 M40 0
ACOV0 0 ACOV0 0
CARRY 0 AC0V1 1指令分析 ADD *AR3, T0, T1这是一个寄存器操作指令。它将 AR3 指向的内存位置的值与寄存器 T0 的值相加结果存储在寄存器 T1 中并递增 AR3 的值。 MOV *AR3 16, AC1这是一个移位和加载指令。它将 AR3 指向的内存位置的值左移 16 位二进制左移16位相当于十六进制左移四位所以在右边补四个0然后将结果加载到累加器 AC1 中并递增 AR3 的值。 ADDSUBCC *AR1, AC0, TC2, AC1这是一个累加-减指令。它将 AR1 指向的内存位置的值和 AC0 寄存器中的值相加并将结果存储到 AC1 寄存器中同时将进位carry结果存储到 TC2 寄存器。 AMAR *AR2 :: MAC uns(*AR1), uns(*CDP), AC0 #16这是一系列的宏指令。它是一种特殊的操作包含了更多的操作代码宏定义主要用于特定的运算或功能。这里的宏定义了一些不同的操作包括了取模运算和移位操作。 ADD *AR1 T0, AC1, AC0这是一个寄存器操作指令。它将 *AR1 指向的内存位置的值左移 T0 寄存器中的值所指定的位数并将结果与 AC1 寄存器中的值相加最终结果存储在 AC0 寄存器中。
这些指令主要是对寄存器进行操作、内存加载和移位运算等实现了对数据的加减、移位等操作。
四、实验程序
.mmregs.model callc55_std;.model memlarge.global x.bss x,1,0,0.sym x,x, 4, 2, 16.global y.bss y,1,0,0.sym y,y, 4, 2, 16.global z.bss z,1,0,0.sym z,z, 4, 2, 16.sect .text.align 4.global start.sym start,start, 36, 2, 0
start:MOV #2, *(#y) MOV #1, *(#x)
L1: MOV *(#y), AR3ADD *(#x), AR3, AR3MOV AR1, *(#z) ;ADD *AR3, T0, T1;MOV *AR3 #16, AC1;ADDSUBCC *AR3,AC0,TC2,AC1AMAR *AR2
:: MAC uns(*AR1), uns(*CDP), AC0 #16ADD *AR1 T0, AC1, AC0B L1 这段汇编代码是为 C55x DSP 架构编写的程序主要包含了一些寄存器操作和指令。下面对代码的不同部分进行解释和分析 .mmregs这个部分主要是定义了寄存器变量和分配内存为代码中使用的寄存器和内存空间分配了一定的存储空间。 .model callc55_std指定使用 C55x 标准模型。 .sect .text定义了一个文本段通常用于存放可执行代码。 .global start声明一个名为 start 的全局标签。 MOV #2, *(#y) 和 MOV #1, *(#x)将值 2 和 1 分别存储到 y 和 x 所指向的内存位置。这里使用 # 表示立即数*() 表示存储到内存的操作。 L1:定义一个标签 L1用于在程序中作为一个跳转的目标点。 MOV *(#y), AR3将 y 所指向的内存位置的值加载到 AR3 寄存器中。 ADD *(#x), AR3, AR3将 x 所指向的内存位置的值与 AR3 寄存器中的值相加结果存储回 AR3 寄存器。 MOV AR1, *(#z)将 AR1 寄存器中的值存储到 z 所指向的内存位置。 AMAR *AR2 :: MAC uns(*AR1), uns(*CDP), AC0 #16这是一个复杂的宏指令涉及到一些特殊操作包括乘法和移位等。具体的操作需要参考相关的宏定义和上下文这个宏指令的含义需要更多代码或宏定义的信息才能完全解释清楚。 ADD *AR1 T0, AC1, AC0将 *AR1 所指向的内存位置的值左移 T0 寄存器中的值所指定的位数并将结果与 AC1 寄存器中的值相加最终结果存储在 AC0 寄存器中。
需要注意的是这段代码在涉及到宏定义和一些特殊指令时其具体含义和操作需要结合整个程序的上下文和宏定义来理解。