;-------------------------------------------------------
;例:计算一个数据的阶乘
;若结果较小,可放在 EAX 寄存器
;若结果较小,可放在 EDX:EAX 寄存器
;文件名:7.asm
.386
.model flat,stdcall
option casemap:none
include windows.inc
include masm32.inc
include kernel32.inc
include user32.inc
includelib masm32.lib
includelib kernel32.lib
includelib user32.lib
.data?
CharOut db 100 dup(?)
.code
OutEdxEax PROTO :DWord ;将EDX:EAX中的数据转换成十进制输出字符串形式!
OutEdxEax proc lpString ;比如:EDX=0,EAX=01234567H,则转换后的字符串为:
-> ''19088743'',0
mov edi,lpString ;指向存放结果的地址
mov esi,lpString
mov ecx,10 ;转换成十进制
.while eax!=0 || edx!=0
push eax
mov eax,edx
xor edx,edx
div ecx
mov ebx,eax
pop eax
div ecx
add dl,''0''
mov [edi],dl ;存放结果
inc edi
mov edx,ebx
.endw
mov BYTE ptr [edi],0;字符串以0为结尾
dec edi
.while edi>esi ;结果前变后,后变前!
&
