1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| 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
MOV [ONE],DX --将DX中的值存入one中 MOV BX,16 SUB BX,DX MOV [ZERO],BX --将为0的值存入zero中 MOV AH,4CH INT 21H --结束程序 MAIN ENDP CODES ENDS END MAIN --MAIN作为程序的入口
|