.sect ".text" .align 4 .global 存储单元0100hw0107h中的数据, start 例题中没有给出,可添加数据测试: ;.sym start,start,36,2,0 RPT #7 start: MOV #8888H,*AR1+ MOV #0100h,AR1 MOV #1288H,*(#0100h) MOV #0104h,AR2 MOV #1288H,*(#0104h) MOV #0108h,AR3 MOV #0100h,AR1 L1: MOV40 dbl(*AR1(#2)),ACO ;ACO =X1 XO ADD dbl(*AR2(#2)),ACO ;ACO X1 XO Y1 Y0 MOV ACO,dbl(*AR3(#2)) ;保存W1W0. MOV40 dbl(*AR1),ACO ;ACO X3 X2 五 ADD uns(*AR2(#1)),CARRY,ACO ;ACO=X3X2+00Y2 +CARRY ADD *AR2<<#16,ACO ;两行完成AC0=X3X2+Y3Y2+CARRY MOV ACO,dbl(*AR3) ;保存W3W2. BL1 29
.sect ".text" .align 4 .global start ;.sym start,start,36,2,0 start: MOV #0100h,AR1 MOV #0104h,AR2 MOV #0108h,AR3 L1: MOV40 dbl(*AR1(#2)), AC0 ;AC0 = X1 X0 ADD dbl(*AR2(#2)), AC0 ;AC0 = X1 X0 + Y1 Y0 MOV AC0,dbl(*AR3(#2)) ;保存W1 W0. MOV40 dbl(*AR1), AC0 ;AC0 = X3 X2 ADD uns(*AR2(#1)),CARRY,AC0 ;AC0=X3X2+00Y2 +CARRY ADD *AR2<< #16, AC0 ;两行完成AC0=X3X2+Y3Y2+CARRY MOV AC0, dbl(*AR3) ;保存 W3 W2. B L1 29 无带进位的 32位加指令 存储单元0100h~0107h中的数据, 例题中没有给出,可添加数据测试: RPT #7 MOV #8888H,*AR1+ MOV #1288H,*(#0100h) MOV #1288H,*(#0104h) MOV #0100h,AR1
例7-2,64位减法运算程序。文件名为:sub64.asm .mmregs .model call=c55 std model mem=large 指针分配 AR1-> X3(偶地址) 1000h 米米米米米米米米米米米米米米米米米 X2 ◆ 64位减法 站 地 I AR2-> Y3(偶地址) 址值 1004h 1 X3 X2 X1 XO -Y3 Y2 Y1 YO 1 ◆ Y品 依次 ◆ W3 W2 W1 WO AR3-> W3(偶地址) 增 1008h W2 加 W1 WO 30
例7-2 , 64位减法运算程序。文件名为: sub64.asm .mmregs .model call=c55_std .model mem=large 30 ;***************** ; 64位减法 ; ; X3 X2 X1 X0 ; − Y3 Y2 Y1 Y0 ; --------------------- ; W3 W2 W1 W0 指针分配 AR1 -> X3(偶地址) X2 X1 X0 AR2 -> Y3(偶地址) Y2 Y1 Y0 AR3 -> W3(偶地址) W2 W1 W0 1000h 地 址 值 依 次 增 加 1004h 1008h
.sect ".text" AR1->X3(偶地址) 1000h .align 4 指针分配 2X 地 .global start AR2 -> (保 值依次增 1004h ;.sym start,start,36,2,0 start: MOV #0100h,AR1 AR3-> 3(偶地址) 1008h MOV #0104h,AR2 MOV #0108h,AR3 O L1: MOV40 dbl(*AR1(#2)),ACO ;ACO=X1X0 SUB dbl(*AR2(#2)),ACO ;ACO=X1X0-Y1Y0 MOV ACO,dbl(*AR3(#2)) ;保存W1W0. MOV40 dbl(*AR1),ACO ;ACO=X3X2 SUB uns(*AR2(#1)),BORROW,ACO ;ACO=X3X2-00Y2-BORROW SUB *AR2<<#16,ACO :ACO=X3X2-Y3Y2-BORROW MOV ACO,dbl(*AR3) ;保存W3W2. BL1 除加法换成减法,CARRY换成BORROW外,步骤相同. 31
.sect ".text" .align 4 .global start ;.sym start, start,36,2,0 start: MOV #0100h,AR1 MOV #0104h,AR2 MOV #0108h,AR3 L1: MOV40 dbl(*AR1(#2)),AC0 ;AC0=X1X0 SUB dbl(*AR2(#2)),AC0 ;AC0=X1X0-Y1Y0 MOV AC0,dbl(*AR3(#2)) ;保存W1W0. MOV40 dbl(*AR1),AC0 ;AC0=X3X2 SUB uns(*AR2(#1)),BORROW,AC0 ;AC0=X3X2-00Y2-BORROW SUB *AR2<<#16,AC0 ;AC0=X3X2-Y3Y2-BORROW MOV AC0,dbl(*AR3) ;保存 W3W2. B L1 31 AR1 -> X3(偶地址) X2 X1 X0 AR2 -> Y3(偶地址) Y2 Y1 Y0 AR3 -> W3(偶地址) W2 W1 W0 1000h 地 址 值 依 次 增 加 1004h 1008h 指 针 分 配 除加法换成减法, CARRY换成BORROW外, 步骤相同
7.2基础算术运算 ·7.2.1加减运算 ■7.2.2乘法运算 ·7.2.3除法运算 ■7.2.4小数乘法 32
7.2 基础算术运算 ◼ 7.2.1 加减运算 ◼ 7.2.2 乘法运算 ◼ 7.2.3 除法运算 ◼ 7.2.4 小数乘法 32
7.2.2 ,乘法运算 C55x提供了硬件乘法器,16位乘法可在一个 指令周期内完成。 ·高于16位的乘法运算可以采用下述方法实现 (以32位乘法为例)。 33
7.2.2 乘法运算 ⚫ C55x提供了硬件乘法器,16位乘法可在一个 指令周期内完成。 ⚫ 高于16位的乘法运算可以采用下述方法实现 (以32位乘法为例)。 33