Skip to main content

MASM Over Explained

Jun 29, 2021LeifMessinger
Loading...

More Plaintext Posts

</script>

Mar 29, 2023Helper

1 like • 3 views

test

Untitled

May 30, 2025kimdylan05-04cd

0 likes • 1 view

refre

Untitled

Feb 21, 2025leafboo

0 likes • 1 view

console/log

x86 MASM C Linking

Jun 30, 2021LeifMessinger

0 likes • 2 views

;Main.asm
.386
.model small,c ;This bit is important, I think.
.stack 1000h
.data
hello db "Hello world!",0
.code
;includelib libucrt.lib ;All this shit is already here if you have a C object file
includelib legacy_stdio_definitions.lib ;Except for this. Basically printf, puts etc
;includelib libcmt.lib
;includelib libvcruntime.lib ;Visual Studio exception handling and type checking. Not needed otherwise
extrn printf:near ;Extern everything you are gonna use from the c obj files
extrn plusTwo:near
extrn exit:near
public plusOne ;Have to declare it public for the linker to see it. In NASM, it's .globl or global
plusOne proc ;Our int plusOne(int) function.
pop eax ;Parameters are stored on the stack.
add eax, 1
ret ;eax is whatever is returned from functions. Also why you can only return one thing.
plusOne endp
public main
main proc
push offset hello
call printf
push 1
call plusTwo
push 0
call exit
main endp
end ;End of file, not program
//bruh.c
//#include <stdio.h> Has to be included with "includelib legacy_stdio_definitions.lib" in the asm file for some reason.
//int printf(const char* format, ...);
extern int plusOne(int); //Extern everything you are gonna use from the asm obj files
int plusTwo(int num) {
return plusOne(plusOne(num)); //Plus one is defined in the assembly.
}

Untitled

Jan 10, 2025alexandr.zaikin.9999-c10d

0 likes • 2 views

import os

Untitled

Jun 1, 2025abeRodrz99

0 likes • 2 views

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>