问答题 试编写一个工作在16位空间的486段内调用子程序,完成将8位二进制中的各位数字转换成用“0”、“1”表示的ASCII码数字串的操作,要求:
   (1)子程序入口地址(标号):BINCHR;
   (2)入口参数:AL=8位二进制数;
   DI=ASCII数字串首地址(位于数据段中);
   (3)出口参数:无;
   (4)不影响其他寄存器。
【正确答案】BINCHR:PUSHF ;保护F、AX、CX、DI
   PUSHAX
   PUSHCX
   PUSHDI
   MOVCX,8 ;置循环计数初值
   NEXT:    RORAL,1 ;循环右移,CF←AL的LSB
   MOVAH,'0'
   ADCAH,0;AH='0'+CF
   MOV[DI],AH ;存结果
   INCDI ;调整指针
   LOOPNEXT;CX←CX-1,若CX≠0转NEXT
   POPDI ;恢复DI、CX、AX、F
   POPCX
   POPAX
   POPF
   RET ;返回
【答案解析】