-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathc18_app0.lst
87 lines (87 loc) · 5.99 KB
/
c18_app0.lst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
1 ;代码清单18-2
2 ;文件名:c18_app0.asm
3 ;文件说明:用户程序
4 ;创建日期:2020-10-30
5
6 ;===============================================================================
7 SECTION header vstart=0
8
9 00000000 [00000000] program_length dd program_end ;程序总长度#0x00
10
11 00000004 [28040000] head_len dd header_end ;程序头部的长度#0x04
12
13 00000008 [00000000] prgentry dd start ;程序入口#0x08
14 0000000C [00000000] code_seg dd section.code.start ;代码段位置#0x0c
15 00000010 [21000000] code_len dd code_end ;代码段长度#0x10
16
17 00000014 [00000000] data_seg dd section.data.start ;数据段位置#0x14
18 00000018 [27000000] data_len dd data_end ;数据段长度#0x18
19
20 0000001C [00000000] stack_seg dd section.stack.start ;栈段位置#0x1c
21 00000020 [00080000] stack_len dd stack_end ;栈段长度#0x20
22 ;-------------------------------------------------------------------------------
23 ;符号地址检索表
24 00000024 04000000 salt_items dd (header_end-salt)/256 ;#0x24
25
26 salt: ;#0x28
27 00000028 405072696E74537472- PrintString db '@PrintString'
27 00000031 696E67
28 00000034 00<rep F4h> times 256-($-PrintString) db 0
29
30 00000128 405465726D696E6174- TerminateProgram db '@TerminateProgram'
30 00000131 6550726F6772616D
31 00000139 00<rep EFh> times 256-($-TerminateProgram) db 0
32
33 00000228 40526561644469736B- ReadDiskData db '@ReadDiskData'
33 00000231 44617461
34 00000235 00<rep F3h> times 256-($-ReadDiskData) db 0
35
36 00000328 40496E69745461736B- InitTaskSwitch db '@InitTaskSwitch'
36 00000331 537769746368
37 00000337 00<rep F1h> times 256-($-InitTaskSwitch) db 0
38
39 header_end:
40
41 ;===============================================================================
42 SECTION data vstart=0
43
44 00000000 5B5553455220544153- message_1 db '[USER TASK]: ,,,,,,,,,,,,,,,,,,,,,,,',0x0d,0x0a,0
44 00000009 4B5D3A202C2C2C2C2C-
44 00000012 2C2C2C2C2C2C2C2C2C-
44 0000001B 2C2C2C2C2C2C2C2C2C-
44 00000024 0D0A00
45
46 data_end:
47
48 ;===============================================================================
49 SECTION stack vstart=0
50
51 00000000 00<rep 800h> times 2048 db 0 ;保留2KB的栈空间
52
53 stack_end:
54
55 ;===============================================================================
56 [bits 32]
57 ;===============================================================================
58 SECTION code vstart=0
59 start:
60 ;任务启动时,DS指向头部段,也不需要设置堆栈
61 00000000 8CD8 mov eax,ds
62 00000002 8EE0 mov fs,eax
63
64 00000004 66A1[14000000] mov ax,[data_seg]
65 0000000A 8ED8 mov ds,ax
66
67 .do_prn:
68 0000000C BB[00000000] mov ebx,message_1
69 00000011 64FF1D[28000000] call far [fs:PrintString]
70 00000018 EBF2 jmp .do_prn
71
72 0000001A 64FF1D[28010000] call far [fs:TerminateProgram] ;退出,并将控制权返回到核心
73
74 code_end:
75
76 ;-------------------------------------------------------------------------------
77 SECTION trail
78 ;-------------------------------------------------------------------------------
79 program_end: