نمایش اعداد 32 بیتی بصورت مبنای 16 در زبان اسمبلی

the_king

مدیرکل انجمن
برای آنکه یک عدد 32 بیتی را در مبنای 16 نمایش دهیم، تابع print_hex_eax مناسب است.
فرض می کنیم که عدد مورد نظر در EAX قرار داشته باشد :

کد:
print_hex_eax:
    MOV     CX, 0
    MOV     EBX, 16
loop_1:
    MOV     EDX, 0
    DIV     EBX
    PUSH    DX
    INC     CX
    CMP     EAX, 0
    JNE     loop_1
    MOV     AH, 2
loop_2:
    POP     DX
    ADD     DL, "0"
    CMP     DL, "9"
    JNA     next_1
    ADD     DL, 7
next_1:
    INT     21H
    LOOP    loop_2
    RET

به عنوان مثال کد زیر عدد 123ABC را نمایش می دهد :
کد:
.MODEL SMALL
.STACK
.DATA
    msg DB 13,10,"Press any key to continue.",13,10,"$"
.CODE
.STARTUP
.386
    MOV     EAX, 123ABCh
    CALL    [B]print_hex_eax[/B]
    MOV     AH, 9
    LEA     DX, msg
    INT     21H
    MOV     AH, 8
    INT     21H
    .EXIT

print_hex_eax:
    MOV     CX, 0
    MOV     EBX, 16
loop_1:
    MOV     EDX, 0
    DIV     EBX
    PUSH    DX
    INC     CX
    CMP     EAX, 0
    JNE     loop_1
    MOV     AH, 2
loop_2:
    POP     DX
    ADD     DL, "0"
    CMP     DL, "9"
    JNA     next_1
    ADD     DL, 7
next_1:
    INT     21H
    LOOP    loop_2
    RET
END
 

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

بالا