娱乐娱乐,这是纯asm版本,很基础的东西。
几个函数的实现memset

代码:
memset proc src:DWORD,char:BYTE,sze:DWORD
    push ebx
    push ecx
    push edx
    mov ecx,[ebp+16]
    mov bl,[ebp+12]
    mov edx,[ebp+8]
@loop:
    mov [edx],bl
    inc edx
    loop @loop
    pop edx
    pop ecx
    pop ebx
    ret 
memset endp
memcpy
代码:
memcpy proc dst:BYTE,src:BYTE
    push eax
    push ebx
    push edx
    push esi
    mov eax,[ebp+8]
    mov ebx,[ebp+12]
    mov esi,ebx
@Zero:
    mov dl,[esi]
    cmp dl,0h
    je @loop
    xor dl,dl
    mov [esi],dl
    inc esi
    jmp @Zero
@loop:
    mov dl,[ebx]
    cmp dl,30h
    jl  Exit
    cmp dl,39h
    jg  Exit
    mov [eax],dl
    inc ebx
    inc eax
    jmp @loop
Exit:
    pop esi
    pop edx
    pop ebx
    pop eax
    ret 
memcpy endp
memlen
代码:
memlen proc src:DWORD
    push ecx
    push ebx
    xor ecx,ecx
    mov eax,[ebp+8]
@loop:
    mov bl,[eax]
    cmp bl,13
    je Exit
    inc eax
    inc ecx
    jmp @loop
Exit:
    mov eax,ecx
    pop ebx
    pop ecx
    ret 
memlen endp
adding
代码:
adding proc dst:DWORD,src:DWORD
    sub esp,272
    push 272
    push 0
    push esp
    call memset
    mov eax,[ebp+8]
    push eax
    call memlen
    dec eax
    mov [esp],eax
    mov eax,[ebp+12]
    push eax
    call memlen
    dec eax
    mov [esp+4],eax
    xor edx,edx
    mov edi,[ebp+8]
    mov esi,[ebp+12]
@l1:
    xor ebx,ebx
    cmp [esp],ebx
    jl @l2
    cmp [esp+4],ebx
    jl @l2
    mov eax,[esp]
    mov ecx,[esp+4]
    mov bl,[edi+eax]
    add bl,[esi+ecx]
    sub bl,60h
    mov [esp+8+edx],ebx
    add edx,4
    mov eax,[esp]
    dec eax
    mov [esp],eax
    mov eax,[esp+4]
    dec eax
    mov [esp+4],eax
    jmp @l1
@l2:
    mov eax,[esp]
    jl @l3
    mov ebx,[edi+eax]
    sub ebx,30h
    mov [esp+8+edx],ebx
    dec eax
    mov [esp],eax
    jmp @l2
@l3:
    mov eax,[esp+4]
    jl @tp
    mov ebx,[esi+eax]
    sub ebx,30h
    mov [esp+8+edx],ebx
    dec eax
    mov [esp+4],eax
    jmp @l3
@tp:
    xor ebx,ebx
@l4:
    cmp ebx,edx
    jge @l5
    mov eax,[esp+8+ebx]
    push edx
    cdq
    push ebx
    mov ebx,10
    idiv ebx
    pop ebx
    pop edx
    add [esp+8+ebx+4],eax
    mov eax,[esp+8+ebx]
    push edx
    cdq
    push ebx
    mov ebx,10
    idiv ebx
    pop ebx
    mov [esp+8+ebx+4],edx
    pop edx
    add ebx,4
    jmp @l4
@l5:
    mov eax,[esp+8+edx]
    test eax,eax
    jne @tp1
    sub edx,4
@tp1:
    xor ebx,ebx
@l6:
    test edx,edx
    jl @Exit
    add [esp+8+edx],30h
    mov eax,[esp+8+edx]
    mov [edi+ebx],al
    add ebx,1
    sub edx,4
    jmp @l6
@Exit:
    add esp,272
    ret
adding endp
调用:
代码:
.386
.model flat, stdcall
option casemap :none

include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
include gdi32.inc

includelib gdi32.lib
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
include macro.asm
.data
  lpMsg    db "请输入大数:",0
  lpMsg1   db "大数的结果:",0
  
.data?
  buffer  db MAX_PATH dup(?)
  
.CODE
START:
  
  invoke locate,2,2      ;设定输出文本的坐标
  invoke StdOut,offset lpMsg
  invoke StdIn,addr buffer,sizeof buffer
  push offset buffer
  push offset buffer
  call adding
  invoke locate,2,4
  invOke StdOut,offset lpMsg1
  invoke StdOut,offset buffer
  invoke StdIn,addr buffer,sizeof buffer
  invoke ExitProcess,0
上传的附件 adding.zip