用汇编语言编写一个程序,统计寄存器AX中二进制“1”的个数,结果一位十六进制数的形式显示
发布网友
发布时间:2022-03-31 10:44
我来回答
共3个回答
热心网友
时间:2022-03-31 12:13
;程序已实现,主要考虑的是怎样获取1的个数
;具体以怎样的形式显示没有太在意
;个数存在BL中,若想以各种形式显示,调用不同的子函数即可(现在各种进制转换的汇编代码网上一堆)
code segment
assume cs:code
start:
mov ax,1234
mov bl,0;统计1的个数
mov cx,16;循环次数
loop1:
test ax,8000h;不断的左移,与8000h比较获取1的个数
jnz loop2
inc bl
shl ax,1
loop2:
loop loop1
;输出1的个数
mov dl,bl
add dl,30h
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end start
热心网友
时间:2022-03-31 13:31
mov cx,16
;bx中统计ax中1的个数
mov bx,0
;循环左移16次
s0:rol ax,1
jnc s1
inc bx
s1:loop s0
热心网友
时间:2022-03-31 15:06
CLC
MOV BL,0
MOV CX,16
LAB:
SHL AX,1
ADC BL,0
LOOP LAB