View difference between Paste ID: YacmNSpk and qMeY1Dqx
SHOW: | | - or go back to the newest paste.
1
	sys_exit        equ     1
2
	sys_read        equ     3
3
	sys_write       equ     4
4
	sys_open        equ     5
5
	sys_close       equ     6
6
	sys_brk         equ     45
7
	sys_newstat     equ     106
8
	 
9
	O_RDONLY        equ     0
10
	O_WRONLY        equ     1
11
	O_RDWR          equ     2
12
	 
13
	stdin           equ     0
14
	stdout          equ     1
15
	stderr          equ     2
16
	 
17
	struc STAT       
18
	    .st_dev:        resd 1      
19
	    .st_ino:        resd 1   
20
	    .st_mode:       resw 1   
21
	    .st_nlink:      resw 1   
22
	    .st_uid:        resw 1   
23
	    .st_gid:        resw 1   
24
	    .st_rdev:       resd 1       
25
	    .st_size:       resd 1   
26
	    .st_blksize:    resd 1   
27
	    .st_blocks:     resd 1   
28
	    .st_atime:      resd 1   
29
	    .st_atime_nsec: resd 1   
30
	    .st_mtime:      resd 1   
31
	    .st_mtime_nsec: resd 1
32
	    .st_ctime:      resd 1   
33
	    .st_ctime_nsec: resd 1   
34
	    .unused4:       resd 1   
35
	    .unused5:       resd 1   
36
	endstruc
37
	 
38
	%define sizeof(x) x %+ _size
39
	 
40
	SECTION     .data
41
	szFile      db      "TEST", 0
42
	File_Len    equ     $-szFile
43
	 
44
	 
45
	SECTION     .bss
46
	stat        resb    sizeof(STAT)
47
	Org_Break   resd    1
48
	TempBuf     resd    1
49
	 
50
	SECTION     .text
51
	global      _start
52
	     
53
	_start:
54
	    ;~ Get file size
55
	    mov     ebx, szFile
56
	    mov     ecx, stat
57
	    mov     eax, sys_newstat
58
	    int     80H
59
	 
60
	    ;~ Get end of bss section
61
	    xor     ebx, ebx
62
	    mov     eax, sys_brk
63
	    int     80H
64
	    mov     [Org_Break], eax
65
	    mov     [TempBuf], eax
66
	    push    eax
67
	     
68
	    ; extend it by file size
69
	    pop     ebx
70
	    add     ebx, dword [stat + STAT.st_size]
71
	    mov     eax, sys_brk
72
	    int     80H
73
	     
74
	    ;~ open file
75
	    mov     ebx, szFile
76
	    mov     ecx, O_RDONLY
77
	    xor     edx, edx
78
	    mov     eax, sys_open
79
	    int     80H
80
	    xchg    eax, esi
81
	     
82
	    ;~ read in file to buffer
83
	    mov     ebx, esi
84
	    mov     ecx, [TempBuf]
85
	    mov     edx, dword [stat + STAT.st_size]
86
	    mov     eax, sys_read
87
	    int     80H
88
	 
89
	    ;~ display to terminal
90
	    mov     ebx, stdout
91
	    mov     ecx, [TempBuf]
92
	    mov     edx, eax
93
	    mov     eax, sys_write
94
	    int     80H
95
	     
96
	    ;~ close file
97
	    mov     ebx, esi
98
	    mov     eax, sys_close
99
	    int     80H
100
	 
101
	    ;~ "free" memory
102
	    mov     ebx, [Org_Break]
103
	    mov     eax, sys_brk
104
	    int     80H
105
	     
106
	Exit: 
107
	    mov     eax, sys_exit
108
	    xor     ebx, ebx
109
	    int     80H