data segment
str db 'the result is:$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset str
mov ah,09h ;輸出字串的功能,但是使用前必須將字串的位址放到dx中 lea dx str 或者 mov dx,offset str
int 21h
mov ax,0ffffh ;初始化
mov cx,16 ;迴圈變數
mov dl,0 ;統計1的個數
next:
rol ax,1 ;迴圈左移
jnc next1 ;表示cf=0,則跳轉到next1
inc dl ;計數
next1:
dec cx
jnz next
mov al,dl
aam ;調整
push ax ;先將這個ax的值儲存在棧中
mov dl,ah ;檢視高位的值
add dl,30h ;數字+30h程式設計字母 0的ascii碼30h
mov ah,02h ;ah放2,是2號功能,字元輸出,並且要輸出的字元是已經放在dl裡面的
int 21h
pop ax
mov dl,al
add dl,30h
mov ah,02h
int 21h
code ends
end start
統計二進位制中1的個數
題目 統計乙個無符號數中的二進位制表示中1的個數。此演算法名為平行計算法。基本思想如下 先兩兩 兩個二進位制位 分組統計每組出現的1的個數,而每組1的個數只可能是0個 00 1個 01 或2個 10 由 相加所得的 兩位的二進位制完全可以表示每組 兩個二進位制數 中1的個數 接著四四 4個二進位制位...
二進位制 二進位制中1的個數
題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...
二進位制中1的個數 二進位制中0的個數
1 題目 實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數,例如把9表示成二進位制是1001,有2位是1。因此如果輸入9,該函式輸出2。2 解法 解法 一 可能會引起死迴圈的解法 基本思路 先判斷整數二進位制表示中最右邊一位是不是1。接著把輸入的整數右移一位,此時原理處於從右邊數起的第二位...