问答题
已知有两个8位有符号数分别存放在字节变量VX、VY中,试编写一个程序段,将其中的大数放在字节变量MAX中。
【正确答案】在有符号数大小时,为了避免补码相减后的溢出问题,可先将补码转换移码后再比较它们之间的大小。设变量VX、VY分别存放着有符号数X、Y的补码。
LD AR,VX ;取[x]补
LD BR,VY ;取[y]补
CLRC
ADC AR,#128 ;AR=[x]移
CLRC
ADC BR,#128 ;BR=[y]移
CMP AR,BR ;比较[x]移-[y]移
JNC PASS ;若x≥Y,转PASS
MOV AR,BR ;将最大数放在AR中
PASS: CLRC
SBB AR,#128 ;将移码转换成补码
ST AR,MAX ;存最大数
【答案解析】