📄 mu2int.asm
字号:
; MU2INT.ASM
;
; u律编码 = u律符号位 : u律段落码 : u律电平码
; X XXX XXXX
;
; INTNUM = [((2 * u律电平码 + 33) << u律段落码) - 33] * SGN(u律符号位)
;
; 注意: u律编码一般反向传输, 接收的编码为
; 反向u律编码' = 反向u律符号位': 反向u律段落码': 反向u律电平码'
;
; 将 8-bit u律编码反向, 并扩展为15比特
;
; u律编码 = 7FFFh - 反向u律编码'
;
.def MU2INT
.mmregs
.data
BIAS .word 21h
MASK .word 7FFFh,1Fh
TABLEMU .word 1CH,27H,3ah,48h,61h,7eh,0dfh,0d6h,0c3h,0bfh,0b0h,084h
RESULTINT .space 16*16
TREG .equ 14
.text
MU2INT
LD #BIAS, DP ; 设置DP
STM #RESULTINT, AR0 ; AR0=转换结果地址
STM #12, AR1 ; AR1=转换长度
STM #MASK, AR2 ; AR2=MASK起始地址
STM #TREG, AR3 ; AR3=14
STM #TABLEMU, AR4 ; AR4=待转换的数据地址
LD #-12, ASM ; ASM=-12
cbeg SUB *AR2+,*AR4, A ;7FFFh - u律编码 -> AH
AND A,8 ;去除极性比特
;(A<<8 AND A)=(7F AND A(16-23))<<24
ST A,*AR3 ;保存段落码: (A<<ASM-16)-> T
|| LD *AR2-,B ;加载电平码掩码 B=1F<<16
AND A,-7,B ;电平码 (17-20): BH = 2*电平码
ADD BIAS,16,B ;BH = 2*电平码 + 33
BIT *AR4+,8 ;保存U律码的符号位->TC
NORM B ;BH = (2*电平码+33)<<(段落码)
SUB BIAS,16,B ;BH = (2*电平码+33)<< 段落码) - 33
XC 1,NTC ;为负数?(BIT8 == 0; TC ==0)
NEG B ;BH *= -1
STH B,*AR0+ ;保存结果
BANZ cbeg, *AR1- ;进行下一次解码
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -