问答题 试编子程序,返回16位二进制数中指定位段的零状态。已知:
   入口参数:AX=16位二进制数;
   BL=高4位b1、低4位b0;
   其中b1和b0分别为位段最高位编号和最低位的编号(15~0)。
   出口参数:CE=0;
   若指定位段为0,ZF=1,否则ZF=0。
   注意:若b1小于b0,则不予处理,返回CF=1。
【正确答案】BITSZ:PUSH  AX
   PUSH    BX
   PUSH    CX
   PUSH DX
   MOV    CH,BL
   MOV    CL,4
   SHR  CH,CL    ;CH=高位编号b1
   MOV    CL,OFH
   AND    CL,BL    ;CL=低位编号b0
   SUB    CH,CL
   JB    EXIT    ;若b1<b0,则退出(CF=1)
   INC  CH    ;计算位段位数(b1-b0+1)
   MOV DX,1
   SHL DX,CL    ;DX=2^b0
   MOV    BX,DX    ;BX=2^b0
   XCHG  CH,CL
   SHL DX,CL    ;DX=2^(b1+1)
   SUB  DX,BX    ;在DX中形成字段屏蔽字
   AND  AX,DX    ;设置字段的零状态到ZF(CF=0)
   EXIT:POP DX
   POP    CX
   POP    BX
   POP    AX
   RET
【答案解析】