54 lines
844 B
NASM
54 lines
844 B
NASM
; print.asm
|
|
global myprint ; 设置print为全局可见
|
|
|
|
|
|
myprint:
|
|
push ebp
|
|
mov ebp, esp
|
|
|
|
push eax
|
|
push ebx
|
|
push ecx
|
|
push edx
|
|
push esi
|
|
|
|
mov edi, 0
|
|
|
|
sub esp, 1
|
|
mov byte [esp], 0
|
|
add edi, 1
|
|
|
|
sub esp, 1
|
|
mov byte [esp], 10
|
|
add edi, 1
|
|
|
|
mov edx, 0
|
|
mov eax, [ebp + 8]
|
|
; mov eax, 98765
|
|
mov ecx, 10
|
|
LOOP_:
|
|
div ecx
|
|
add edx, 48
|
|
sub esp, 1
|
|
mov byte [esp], dl
|
|
add edi, 1
|
|
mov edx, 0
|
|
cmp eax, 0
|
|
jne LOOP_
|
|
|
|
mov eax, 4 ; 发起系统调用
|
|
mov ebx, 1 ; ebx表示stdout
|
|
mov ecx, esp ; 表示字符串的地址
|
|
mov edx, edi ; 表示字符的个数
|
|
int 0x80 ; int 0x80表示系统调用
|
|
|
|
add esp, edi
|
|
|
|
pop esi
|
|
pop edx
|
|
pop ecx
|
|
pop ebx
|
|
pop eax
|
|
pop ebp
|
|
ret
|