the_king
مدیرکل انجمن
برای آنکه یک عدد 32 بیتی را در مبنای 16 نمایش دهیم، تابع print_hex_eax مناسب است.
فرض می کنیم که عدد مورد نظر در EAX قرار داشته باشد :
به عنوان مثال کد زیر عدد 123ABC را نمایش می دهد :
فرض می کنیم که عدد مورد نظر در 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