📄 int2mu.asm
字号:
; INT2MU.ASM
;
; u律编码 = u律符号位 : u律段落码 : u律电平码
;
; u律段落码 = (19h - T|EXP)<<4
; = 190h - (T|EXP)*16
; = 180h - (T|EXP)*16 + 10h
;
; u律符号位 = (AH * (-1)) <<7
; = (AH * FFFFh) * 128 = AH * (FFFFh * 128)
; = AH * (FFFFh << 7) = AH * FF80h
;
; u律电平码 = (((|int| + 33) << (T|EXP)) << -26) - 10h
;
; 将 8-bit u律编码反向:
;
; 反向u律编码' = FF - u律编码
; = FF - u律符号位 - u律段落码 - u律电平码
;
; 反向u律编码' = FF-180h-AH*FF80h+(T|EXP)*16-((|int|+33)<<(T|EXP))>>26
;
.def INT2MU
.mmregs
.data
BIAS1 .word 0FFh-180h
BIAS2 .word 0FF80h
BIAS3 .word 21h
BIAS4 .word 16
TABLEINT .word -2460,-1505,-650,-338,-90,-1,102,169,420,499,980,7000
RESULTMU .space 16*16
.text
INT2MU
LD #BIAS1, DP
STM #TABLEINT, AR0
STM #RESULTMU, AR1
STM #12, AR2
cbeg LD *AR0+, A ;读取需要转换的整数
LD BIAS1, B ;装载常数 (FFh-180h)
MASA BIAS2, B ;B = (FFh-180h-AH*FF80h)
ABS A ;A = |int|
ADD BIAS3, A ;A = |int| + 33 (33 = 21H)
EXP A ;# 前导0 -> (T|EXP)
MAC BIAS4, B ;B += (T|EXP)*16
NORM A ;A<<(T|EXP)
SFTA A,-16 ;(A<<(T|EXP))>>16
SUB A,-10, B ;反向u律编码' = B - (A<<(T|EXP))>>26
STL B, *AR1+ ;保存结果
BANZ cbeg, *AR2- ;计算下一个
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -