例7-2,64位减法运算程序。文件名为:sub64asm mmregs model call=c55 std model mem=large 指针分配 AR1->X3(偶地址)100h n水米米水米水米水米米米水米米米米水 X2 64位减法 X1 地 XO 址 ;X3X2Ⅺ1X0AR2->Y3(偶地址)值404h Y2 -Y3 Y2 Y1 Y0 Y1 依 YO 次 WBW2W1W0AR3>W3(偶地址)增100h W2 WO 31
例7-2 , 64位减法运算程序。文件名为: sub64.asm .mmregs .model call=c55_std .model mem=large 31 ;***************** ; 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->×3(偶地址)|100 X2 align 4 分 地址 global start AR2->(偶地址)100h ,. sym start, start, 36, 2, 0 start MOV #0100h,AR1 AR3->W3(偶地址)1008h MOV #0104h,AR2 W MOV #0108h,AR3 WO MOV40 dbl(* AR1(#2)),ACo j AC0=X1X0 SUB dbl(AR2(2)),ACO aco=x1X0-Yly0 MOV ACO dbl(*AR3(#2))保存W1W0 MOV40 dbI( ARI,ACO ACO=X3X2 SUB uns(*AR2(#I)), BORROW, ACO j AC0=X3X2-00Y2 -BORROW SUB AR2<<#16,ACO ACO=X3X2-Y3Y2-BORROW MOV ACO, dbl( AR3) ;保存W3W2 BL1 除加法换成减法,CARY换成 BORROW外,步骤相同
.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 32 AR1 -> X3(偶地址) X2 X1 X0 AR2 -> Y3(偶地址) Y2 Y1 Y0 AR3 -> W3(偶地址) W2 W1 W0 1000h 地 址 值 依 次 增 加 1004h 1008h 指 针 分 配 除加法换成减法, CARRY换成BORROW外, 步骤相同
72基础算术运算 ■721加减运算 722乘法运算 723除法运算 724小数乘法
7.2 基础算术运算 ◼ 7.2.1 加减运算 ◼ 7.2.2 乘法运算 ◼ 7.2.3 除法运算 ◼ 7.2.4 小数乘法 33
722乘法运算 C55X提供了硬件乘法器,16位乘法可在一个 指令周期内完成。 ●高于16位的乘法运算可以采用下述方法实现 (以32位乘法为例)
7.2.2 乘法运算 ⚫ C55x提供了硬件乘法器,16位乘法可在一个 指令周期内完成。 ⚫ 高于16位的乘法运算可以采用下述方法实现 (以32位乘法为例)。 34
例7-3,32位整数乘法运算。文件名mpy32asm mmregs model cal=c55 std model mem=large 米水米米米米米水米米米米米米米米米米水米米米米米米水米米水米米米米米米水米米水米米米米米米水米米 本子程序是两个32位整数乘法,得到一个64位结果 操作数取自数据存储器,运算结果送回数据存储器 数据存储: 指针分配: X1 X0 32位操作数AR0->X1 ×Y1YQ32位操作数 XO W3W2W1W064位结果 AR1-> Y1 YO 入口条件: AR2-> WO SXMD=1(允许符号扩展) W1 SATD=0(不做饱和处理) W2 FRCT=0(关小数模式) W3 限制条件:延迟链和输入序列必须指定为长字类型。 米米米米米水米米米米米米米米*水米米米米水米米米米米米水米水米米米米米米米米*水米米米米水米米米米米米水 35
例7-3, 32位整数乘法运算。文件名:mpy32.asm .mmregs .model call=c55_std .model mem=large 35 ;************************************************** ; 本子程序是两个32位整数乘法, 得到一个64位结果。 ; 操作数取自数据存储器, 运算结果送回数据存储器。 ;; 数据存储: 指针分配: ; X1 X0 32位操作数 AR0 -> X1 ; × Y1 Y0 32位操作数 X0 ; W3 W2 W1 W0 64位结果 AR1 -> Y1 ; Y0 ; 入口条件: AR2 -> W0 ; SXMD = 1 (允许符号扩展) W1 ; SATD = 0 (不做饱和处理) W2 ; FRCT = 0 (关小数模式) W3 ;;限制条件: 延迟链和输入序列必须指定为长字类型。 ;*************************************************************