输入十进制数,显示其二进制形式中 1 的个数
来源:互联网 发布:svg3dtagcloud.js 编辑:程序博客网 时间:2024/06/05 19:46
;要求:从键盘输入一个10进制数(不超过2000),然后输出其二进制数中 1 的个数。
;程序如下:
;================================
DISP_STR MACRO X ;宏定义.
MOV DX, OFFSET X
MOV AH, 9
INT 21H
ENDM
;--------------------------------
DATA SEGMENT ;数据段.
MSG1 DB 13, 10, 'Please Input : $'
MSG3 DB 13, 10, 'The n(1) is : $'
x DW ? ;存放新输入数据.
DATA ENDS
;--------------------------------I
CODE SEGMENT ;代码段.
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
;--------------------------------
IN_LOOP:
DISP_STR MSG1 ;宏调用,提示 Please Input :
;--------------------------------
MOV x, 0 ;数据清零.
_INX:
MOV AH, 1 ;输入字符.
INT 21H
;--------------------------------
CMP AL, 13 ;回车?
JE _IN_END ;是则结束输入.
CMP AL, '0'
JB IN_LOOP ;小于'0',不是数字.
CMP AL, '9'
JA IN_LOOP ;大于'9',不是数字.
SUB AL, '0' ;变成数字
MOV CL, AL
MOV CH, 0 ;CX 就是新输入的数字.
MOV AX, x
MOV BX, 10 ;老数据乘以10
MUL BX
ADD AX, CX ;加上新数据.
MOV x, AX ;保存.
CMP AX, 2000 ;与2000比较
JA IN_LOOP ;大于,就重新输入
JMP _INX ;不大,就继续输入下一位数
;--------------------------------
_IN_END:
DISP_STR MSG3 ;宏调用,提示 The n(1) is :
MOV AX, 0
MOV BX, x
MOV CX, 16 ;判断16位数.
DDDD:
CMP BX, 8000H
JB EEEE
INC AX ;个数加一.
EEEE:
SHL BX, 1 ;左移.
LOOP DDDD ;CX-1,非零转移.
;--------------------------------
DISP: ;以十进制显示AX内容
MOV BX, 10
MOV CX, 0
D_1:MOV DX, 0
DIV BX
ADD DL, '0'
PUSH DX
INC CX
CMP AX, 0
JNE D_1
MOV AH, 2
D_2:POP DX
INT 21H
LOOP D_2
;--------------------------------
MOV AH, 4CH ;到此结束
INT 21H
;--------------------------------
CODE ENDS
END START
;================================
程序经过编译、连接后,执行效果如下:
C:\MASM>_1_N
Please Input : 1998
The n(1) is : 8
C:\MASM>_1_N
Please Input : 536
The n(1) is : 3
利用计算器,把 1998、536,变成二进制数,可以看到,它们其中确实是有 8 个和 3 个 1。
大家再试试别的数字,看看做而论道编写的程序是否正确。
;===============================
原题网址:http://zhidao.baidu.com/question/428152175.html
提问者对回答的评价:谢谢啊
;===============================
- 输入十进制数,显示其二进制形式中 1 的个数
- 使用do-while编程实现进制转换。输入一个十进制整数n,输出其二进制形式,并统计二进制数中1的个数。
- 关于求一个十进制的数在二进制形式中1的个数
- 用c语言实现输入一个十进制数,计算其转换为二进制数后其中包含1的个数
- 十进制数转化为二进制数中1的个数
- 输入一个数计算其二进制中连续1的个数
- 请输入一个数,计算其二进制中1的个数
- 求一个十进制数的二进制形式的1的个数
- 统计十进制数的二进制形式里数字1的个数
- 一个整形数的二进制形式中“1”的个数
- 查找一个数的二进制形式中‘1’的个数
- 十进制数含有的二进制1个数
- 统计一个数二进制形式中1的个数
- 确定一个数二进制形式中 1 的个数
- 整型数其二进制表示中”1“的个数
- 输入十进制数,计算其二进制表达中的零的个数(遇到第一个1之前的零不计入统计)
- 输入一个整形数,计算这个数二进制形式里面1的个数。
- C语言快速统计其二进制形式中1的个数
- 8086汇编语言编程--大小写转换、统计个数、显示时还要求发音
- 单片机流水灯闪烁问题
- “在场人数”的统计
- 3DSOURCE云平台客户端下载 v5.1.48官方版
- DS18B20 与数字温度计
- 输入十进制数,显示其二进制形式中 1 的个数
- LeetCode----Power of Three
- 用 8550 和 ULN2003 驱动小型直流电机正反转
- 80x86汇编编程:把一串字符从键盘输入,然后逆序输出
- 大尺寸共阴数码管驱动电路
- ;单片机汇编语言编程:汽车转向灯控制器
- 80x86汇编语言编程:按下任意键,以二进制和16进制输出该键所对应的 ASCII 码
- 如何监控 Tomcat?Zabbix 与 Cloud Insight 对比
- 多路温度检测