觉得短2除法运算还麻烦了,干脆用移位。右移一位就是除以二。以下是参考代码,不懂再问。
STACKS SEGMENT
DW 40H DUP(?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,SS:STACKS
START:
;此处输入代码段代码
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP
MOV BX,1234 ;将要转换的数字给到BX,这里值可按需要更改
XOR CX,CX
L1: SHR BX,1 ;右移1位,将最低位放入标志寄存器的CF位(最低位)
PUSHF
POP DX ;标志寄存器中的值给到DX
AND DL,1 ;高位清零,保留最低位
ADD DL,30H ;从数字转换为字符
PUSH DX ;因为从最低位开始读的,所以要利用先读入后输出的机制
INC CX ;CX记录要输出的二进制数位的数量
CMP BX,0
JNE L1
;以上实现了到二进制的转换,和到字符的转换,现在我们把它输出
MOV AH,2
L2:
POP DX
INT 21H
LOOP L2 ;这里要用到上面的CX
MOV AH,4CH
INT 21H
CODES ENDS
END START
进行2短除,每次的余数按倒序排列即为10011010010
10011010010
其实很简单的