compiler-go/test/print.asm

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