问答题 试编制一个程序,把BX寄存器中的二进制数以十六进制的形式显示在屏幕上。
   注意:根据题目要求应将BX中的内容从左到右每4位一组显示出来,共显示4个十六进制数位。如果显示的数位是0~9,则把4位二进制数加上30H,转换成相应的ASCII码30H~39H;如果是A~F,则应加上37H(30H+7),转换成ASCII码41H~46H。
【正确答案】显示字符可以使用DOS功能调用来实现。
   以BTOH.ASM为文件名,建立源程序如下:
      CODE SEGMENT    ;定义代码段
      MAIN PROC FAR
      ASSUME CS:CODE  ;程序从此处开始执行
      MOV    CH,4   ;4组二进制数
 ROT:MOV    CL,4   ;每组4个二进制位
      ROL    BX,CL    ;把BX循环左移4位
      MOV    AL,BL    ;暂存BL到AL中
      AND    AL,0FH    ;仅保留AL的低4位
      ADD    AL,30H    ;转换成ASCII码
      CMP    AL,3AH    ;要显示的数大于9?
      JL     DISPLAY    ;如果数在0~9之间则显示
      ADD    AL,7H    ;数在A~F之间则调整
DISPLAY:MOV DL,AL    ;把要显示字符的ASCII码送DL
      MOV    AH,2    ;功能号2送AH
      INT    21H       ;DOS功能调用
      DEC    CH    ;(CH)-1
     JNZ    ROT    ;4组都处理完?否,循环处理下一组
     MOV    AX,4C00H
     INT    21H    ;返回DOS
     MAIN    ENDP    ;主程序MAIN结束
     CODE  ENDS    ;代码段结束
     END    MAIN    ;结束汇编
【答案解析】