STACKS SEGMENT STACK
DW 100H DUP(?) --定义一个空间大小为100字大小的栈空间
TOP LABEL WORD --Top表示栈的开始地址
STACKS ENDS
DATAS SEGMENT
X DW 2767 --设置x的值为2767
ONE DW DUP(?) --定义两个变量来存储
ZERO DW DUP(?)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,SS:STACKS,DS:DATAS
MAIN PROC FAR --定义主函数为MAIN
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP --栈顶指向SP
MOV AX,DATAS
MOV DS,AX
XOR DX,DX --清空DX
MOV CX,16 --将16存入CX中,意为将循环16次
MOV AX,X --将x的值存入AX
L1: SHR AX,1 --逻辑右移一位,如果是1,CF将置1,0则置0
ADC DX,0 --DX带进位CF加0,相当于加CF中的值
LOOP L1 --循环L1