محاسبه تعداد بیت های 1 در یک عدد باینری در زبان اسمبلی

the_king

مدیرکل انجمن
اگر بخواهیم تعداد بیت های 1 را در یک عدد باینری بدست آوریم، کد زیر مناسب است،
به عنوان مثال عدد 1011010011101000 در مبنای باینری بررسی شده و تعداد بیت های
1 آن (8 بیت) اعلام می شود :

کد:
.MODEL  SMALL
.CODE
.STARTUP
    MOV     AX, 1011010011101000b
    PUSH    AX
    CALL    Return_1_Digits
    CALL    Print_DX
    .EXIT   0

Return_1_Digits:
    PUSH    BP
    MOV     BP, SP
    MOV     AX, SS:[BP + 4]
    MOV     BX, 1
    MOV     CX, 16
    MOV     DX, 0
Loop1:
    TEST    AX, BX
    JZ      Next1
    INC     DX
Next1:
    SHL     BX, 1
    LOOP    Loop1
    POP     BP
    RET     2

Print_DX:
    PUSH    AX
    PUSH    BX
    PUSH    CX
    PUSH    DX
    MOV     AX, DX
    MOV     CX, 0
    MOV     BX, 10
loop_2:
    MOV     DX, 0
    DIV     BX
    PUSH    DX
    INC     CX
    CMP     AX, 0
    JNE     loop_2
    MOV     AH, 2
loop_3:
    POP     DX
    ADD     DL, "0"
    INT     21H
    LOOP    loop_3
    POP     DX
    POP     CX
    POP     BX
    POP     AX    
    RET
.STACK
END
 

جدیدترین ارسال ها

بالا