Code: Select all
Procedure.l gcd(a,b)
While b <> 0
t = b
b = a % b
a = t
Wend
ProcedureReturn a
EndProcedure
Code: Select all
Procedure.l gcd(a,b)
While b <> 0
t = b
b = a % b
a = t
Wend
ProcedureReturn a
EndProcedure
Code: Select all
Procedure gcd(a,b)
While b
a % b
Swap a, b
Wend
ProcedureReturn a
EndProcedure
Code: Select all
; :
; Procedure.l gcd(a,b)
macro MP0{
_Procedure0:
PUSH ebx
PS0=12
XOR eax,eax
PUSH eax
; While b <> 0
_While1:
MOV ebx,dword [esp+PS0+4]
AND ebx,ebx
JE _Wend1
; t = b
MOV eax,dword [esp+PS0+4]
MOV dword [esp],eax
; b = a % b
MOV ebx,dword [esp+PS0+0]
MOV eax,ebx
CDQ
IDIV dword [esp+PS0+4]
MOV ebx,edx
MOV dword [esp+PS0+4],ebx
; a = t
MOV eax,dword [esp]
MOV dword [esp+PS0+0],eax
; Wend
JMP _While1
_Wend1:
; ProcedureReturn a
MOV eax,dword [esp+PS0+0]
JMP _EndProcedure1
; EndProcedure
XOR eax,eax
_EndProcedure1:
ADD esp,4
POP ebx
RET 8
}