问答题
试编写一个工作在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 ;返回
【答案解析】