虚拟实现汉字系统----VVDOS -- 源码 -- 保护模式程序 - 3

来源:互联网 发布:a标签js跳转 target 编辑:程序博客网 时间:2024/04/29 04:23

虚拟实现汉字系统----VVDOS -- 源码 -- 保护模式程序 - 3

1、I27.INC
; i27.inc

data segment use16 public
IDTBegin label dword
int0 dw offset inter0
dw OS32CodeSel
db 0       ;noused
db 0eeh   ;386 intr dpl=3
db 0 ;32bits,limit16_19=0
db 0   ;base24_31
int1 dw offset inter1
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int2 dw offset inter2
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int3 dw offset inter3
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int4 dw offset inter4
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int5 dw offset inter5
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int6 dw offset inter6
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int7 dw offset inter7
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int8 dw offset inter8
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int9 dw offset inter9
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int10 dw offset inter10
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int11 dw offset inter11
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int12 dw offset inter12
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int13 dw offset inter13
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int14 dw offset inter14
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int15 dw offset inter15
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int16 dw offset inter16
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int17 dw offset inter17
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int18 dw offset inter18
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int19 dw offset inter19
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int20 dw offset inter20
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int21 dw offset inter21
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int22 dw offset inter22
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int23 dw offset inter23
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int24 dw offset inter24
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int25 dw offset inter25
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int26 dw offset inter26
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int27 dw offset inter27
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int28 dw offset inter28
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int29 dw offset inter29
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int30 dw offset inter30
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int31 dw offset inter31
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int32 dw offset inter32
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int33 dw offset inter33
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int34 dw offset inter34
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int35 dw offset inter35
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int36 dw offset inter36
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int37 dw offset inter37
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int38 dw offset inter38
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int39 dw offset inter39
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int40 dw offset inter40
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int41 dw offset inter41
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int42 dw offset inter42
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int43 dw offset inter43
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int44 dw offset inter44
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int45 dw offset inter45
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int46 dw offset inter46
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int47 dw offset inter47
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int48 dw offset inter48
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int49 dw offset inter49
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int50 dw offset inter50
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int51 dw offset inter51
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int52 dw offset inter52
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int53 dw offset inter53
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int54 dw offset inter54
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int55 dw offset inter55
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int56 dw offset inter56
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int57 dw offset inter57
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int58 dw offset inter58
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int59 dw offset inter59
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int60 dw offset inter60
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int61 dw offset inter61
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int62 dw offset inter62
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int63 dw offset inter63
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int64 dw offset inter64
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int65 dw offset inter65
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int66 dw offset inter66
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int67 dw offset inter67
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int68 dw offset inter68
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int69 dw offset inter69
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int70 dw offset inter70
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int71 dw offset inter71
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int72 dw offset inter72
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int73 dw offset inter73
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int74 dw offset inter74
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int75 dw offset inter75
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int76 dw offset inter76
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int77 dw offset inter77
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int78 dw offset inter78
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int79 dw offset inter79
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int80 dw offset inter80
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int81 dw offset inter81
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int82 dw offset inter82
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int83 dw offset inter83
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int84 dw offset inter84
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int85 dw offset inter85
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int86 dw offset inter86
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int87 dw offset inter87
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int88 dw offset inter88
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int89 dw offset inter89
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int90 dw offset inter90
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int91 dw offset inter91
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int92 dw offset inter92
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int93 dw offset inter93
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int94 dw offset inter94
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int95 dw offset inter95
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int96 dw offset inter96
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int97 dw offset inter97
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int98 dw offset inter98
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int99 dw offset inter99
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int100 dw offset inter100
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int101 dw offset inter101
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int102 dw offset inter102
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int103 dw offset inter103
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int104 dw offset inter104
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int105 dw offset inter105
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int106 dw offset inter106
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int107 dw offset inter107
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int108 dw offset inter108
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int109 dw offset inter109
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int110 dw offset inter110
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int111 dw offset inter111
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int112 dw offset inter112
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int113 dw offset inter113
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int114 dw offset inter114
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int115 dw offset inter115
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int116 dw offset inter116
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int117 dw offset inter117
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int118 dw offset inter118
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int119 dw offset inter119
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int120 dw offset inter120
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int121 dw offset inter121
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int122 dw offset inter122
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int123 dw offset inter123
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int124 dw offset inter124
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int125 dw offset inter125
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int126 dw offset inter126
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int127 dw offset inter127
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int128 dw offset inter128
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int129 dw offset inter129
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int130 dw offset inter130
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int131 dw offset inter131
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int132 dw offset inter132
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int133 dw offset inter133
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int134 dw offset inter134
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int135 dw offset inter135
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int136 dw offset inter136
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int137 dw offset inter137
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int138 dw offset inter138
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int139 dw offset inter139
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int140 dw offset inter140
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int141 dw offset inter141
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int142 dw offset inter142
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int143 dw offset inter143
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int144 dw offset inter144
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int145 dw offset inter145
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int146 dw offset inter146
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int147 dw offset inter147
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int148 dw offset inter148
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int149 dw offset inter149
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int150 dw offset inter150
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int151 dw offset inter151
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int152 dw offset inter152
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int153 dw offset inter153
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int154 dw offset inter154
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int155 dw offset inter155
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int156 dw offset inter156
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int157 dw offset inter157
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int158 dw offset inter158
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int159 dw offset inter159
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int160 dw offset inter160
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int161 dw offset inter161
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int162 dw offset inter162
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int163 dw offset inter163
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int164 dw offset inter164
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int165 dw offset inter165
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int166 dw offset inter166
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int167 dw offset inter167
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int168 dw offset inter168
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int169 dw offset inter169
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int170 dw offset inter170
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int171 dw offset inter171
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int172 dw offset inter172
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int173 dw offset inter173
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int174 dw offset inter174
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int175 dw offset inter175
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int176 dw offset inter176
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int177 dw offset inter177
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int178 dw offset inter178
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int179 dw offset inter179
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int180 dw offset inter180
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int181 dw offset inter181
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int182 dw offset inter182
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int183 dw offset inter183
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int184 dw offset inter184
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int185 dw offset inter185
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int186 dw offset inter186
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int187 dw offset inter187
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int188 dw offset inter188
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int189 dw offset inter189
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int190 dw offset inter190
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int191 dw offset inter191
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int192 dw offset inter192
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int193 dw offset inter193
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int194 dw offset inter194
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int195 dw offset inter195
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int196 dw offset inter196
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int197 dw offset inter197
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int198 dw offset inter198
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int199 dw offset inter199
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int200 dw offset inter200
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int201 dw offset inter201
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int202 dw offset inter202
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int203 dw offset inter203
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int204 dw offset inter204
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int205 dw offset inter205
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int206 dw offset inter206
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int207 dw offset inter207
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int208 dw offset inter208
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int209 dw offset inter209
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int210 dw offset inter210
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int211 dw offset inter211
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int212 dw offset inter212
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int213 dw offset inter213
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int214 dw offset inter214
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int215 dw offset inter215
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int216 dw offset inter216
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int217 dw offset inter217
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int218 dw offset inter218
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int219 dw offset inter219
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int220 dw offset inter220
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int221 dw offset inter221
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int222 dw offset inter222
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int223 dw offset inter223
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int224 dw offset inter224
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int225 dw offset inter225
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int226 dw offset inter226
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int227 dw offset inter227
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int228 dw offset inter228
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int229 dw offset inter229
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int230 dw offset inter230
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int231 dw offset inter231
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int232 dw offset inter232
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int233 dw offset inter233
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int234 dw offset inter234
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int235 dw offset inter235
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int236 dw offset inter236
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int237 dw offset inter237
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int238 dw offset inter238
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int239 dw offset inter239
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int240 dw offset inter240
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int241 dw offset inter241
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int242 dw offset inter242
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int243 dw offset inter243
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int244 dw offset inter244
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int245 dw offset inter245
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int246 dw offset inter246
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int247 dw offset inter247
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int248 dw offset inter248
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int249 dw offset inter249
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int250 dw offset inter250
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int251 dw offset inter251
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int252 dw offset inter252
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int253 dw offset inter253
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int254 dw offset inter254
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
int255 dw offset inter255
dw OS32CodeSel
db 0
db 0eeh
db 0
db 0
IDTEnd label dword
data ends

os32_code segment use32 public
assume cs:os32_code,ds:data
inter0: push ebp
mov ebp,0
jmp reflect
inter1:     ;special
jmp ext_int1
inter2: push ebp
mov ebp,2
jmp reflect
inter3: push ebp
mov ebp,3
jmp reflect
inter4: push ebp
mov ebp,4
jmp reflect
inter5: push ebp
mov ebp,5
jmp reflect
inter6: push ebp
mov ebp,6
jmp ext_int
inter7: push ebp
mov ebp,7
jmp ext_int
inter8:
jmp ext_int8
inter9: push ebp
mov ebp,9
jmp reflect
inter10:
; add esp,4 ;jmp over error code
push ebp
mov ebp,esp
jmp reflect
inter11:
; add esp,4
push ebp
mov ebp,11
jmp reflect
inter12:
; add esp,4
push ebp
mov ebp,12
jmp reflect
inter13:     ;special
jmp ext_int13
inter14:
jmp ext_int14
inter15: push ebp
mov ebp,15
jmp reflect
inter16:
; push ebp
; mov ebp,16
; jmp reflect
jmp ext_int16
inter17: push ebp
mov ebp,17
jmp reflect
inter18: push ebp
mov ebp,18
jmp reflect
inter19: push ebp
mov ebp,19
jmp reflect
inter20: push ebp
mov ebp,20
jmp reflect
inter21:
jmp ext_int21
inter22: push ebp
mov ebp,22
jmp reflect
inter23: push ebp
mov ebp,23
jmp reflect
inter24: push ebp
mov ebp,24
jmp reflect
inter25: push ebp
mov ebp,25
jmp reflect
inter26: push ebp
mov ebp,26
jmp reflect
inter27: push ebp
mov ebp,27
jmp reflect
inter28: push ebp
mov ebp,28
jmp reflect
inter29: push ebp
mov ebp,29
jmp reflect
inter30: push ebp
mov ebp,30
jmp reflect
inter31: push ebp
mov ebp,31
jmp reflect
inter32: push ebp
mov ebp,32
jmp reflect
inter33: push ebp
mov ebp,33
jmp reflect
inter34: push ebp
mov ebp,34
jmp reflect
inter35: push ebp
mov ebp,35
jmp reflect
inter36: push ebp
mov ebp,36
jmp reflect
inter37: push ebp
mov ebp,37
jmp reflect
inter38: push ebp
mov ebp,38
jmp reflect
inter39: push ebp
mov ebp,39
jmp reflect
inter40: push ebp
mov ebp,40
jmp reflect
inter41: push ebp
mov ebp,41
jmp reflect
inter42: push ebp
mov ebp,42
jmp reflect
inter43: push ebp
mov ebp,43
jmp reflect
inter44: push ebp
mov ebp,44
jmp reflect
inter45: push ebp
mov ebp,45
jmp reflect
inter46: push ebp
mov ebp,46
jmp reflect
inter47:
jmp ext_int47
push ebp
mov ebp,47
jmp reflect
inter48: push ebp
mov ebp,48
jmp reflect
inter49: push ebp
mov ebp,49
jmp reflect
inter50: push ebp
mov ebp,50
jmp reflect
inter51: push ebp
mov ebp,51
jmp reflect
inter52: push ebp
mov ebp,52
jmp reflect
inter53: push ebp
mov ebp,53
jmp reflect
inter54: push ebp
mov ebp,54
jmp reflect
inter55: push ebp
mov ebp,55
jmp reflect
inter56: push ebp
mov ebp,56
jmp reflect
inter57: push ebp
mov ebp,57
jmp reflect
inter58: push ebp
mov ebp,58
jmp reflect
inter59: push ebp
mov ebp,59
jmp reflect
inter60: push ebp
mov ebp,60
jmp reflect
inter61: push ebp
mov ebp,61
jmp reflect
inter62: push ebp
mov ebp,62
jmp reflect
inter63: push ebp
mov ebp,63
jmp reflect
inter64: push ebp
mov ebp,64
jmp reflect
inter65: push ebp
mov ebp,65
jmp reflect
inter66: push ebp
mov ebp,66
jmp reflect
inter67: push ebp
mov ebp,67
jmp reflect
inter68: push ebp
mov ebp,68
jmp reflect
inter69: push ebp
mov ebp,69
jmp reflect
inter70: push ebp
mov ebp,70
jmp reflect
inter71: push ebp
mov ebp,71
jmp reflect
inter72: push ebp
mov ebp,72
jmp reflect
inter73: push ebp
mov ebp,73
jmp reflect
inter74: push ebp
mov ebp,74
jmp reflect
inter75: push ebp
mov ebp,75
jmp reflect
inter76: push ebp
mov ebp,76
jmp reflect
inter77: push ebp
mov ebp,77
jmp reflect
inter78: push ebp
mov ebp,78
jmp reflect
inter79: push ebp
mov ebp,79
jmp reflect
inter80: push ebp
mov ebp,80
jmp reflect
inter81: push ebp
mov ebp,81
jmp reflect
inter82: push ebp
mov ebp,82
jmp reflect
inter83: push ebp
mov ebp,83
jmp reflect
inter84: push ebp
mov ebp,84
jmp reflect
inter85: push ebp
mov ebp,85
jmp reflect
inter86: push ebp
mov ebp,86
jmp reflect
inter87: push ebp
mov ebp,87
jmp reflect
inter88: push ebp
mov ebp,88
jmp reflect
inter89: push ebp
mov ebp,89
jmp reflect
inter90: push ebp
mov ebp,90
jmp reflect
inter91: push ebp
mov ebp,91
jmp reflect
inter92: push ebp
mov ebp,92
jmp reflect
inter93: push ebp
mov ebp,93
jmp reflect
inter94: push ebp
mov ebp,94
jmp reflect
inter95: push ebp
mov ebp,95
jmp reflect
inter96: push ebp
mov ebp,96
jmp reflect
inter97: push ebp
mov ebp,97
jmp reflect
inter98: push ebp
mov ebp,98
jmp reflect
inter99: push ebp
mov ebp,99
jmp reflect
inter100: push ebp
mov ebp,100
jmp reflect
inter101: push ebp
mov ebp,101
jmp reflect
inter102: push ebp
mov ebp,102
jmp reflect
inter103: push ebp
mov ebp,103
jmp reflect
inter104: push ebp
mov ebp,104
jmp reflect
inter105: push ebp
mov ebp,105
jmp reflect
inter106: push ebp
mov ebp,106
jmp reflect
inter107: push ebp
mov ebp,107
jmp reflect
inter108: push ebp
mov ebp,108
jmp reflect
inter109: push ebp
mov ebp,109
jmp reflect
inter110: push ebp
mov ebp,110
jmp reflect
inter111: push ebp
mov ebp,111
jmp reflect
inter112: push ebp
mov ebp,112
jmp reflect
inter113: push ebp
mov ebp,113
jmp reflect
inter114: push ebp
mov ebp,114
jmp reflect
inter115: push ebp
mov ebp,115
jmp reflect
inter116: push ebp
mov ebp,116
jmp reflect
inter117: push ebp
mov ebp,117
jmp reflect
inter118: push ebp
mov ebp,118
jmp reflect
inter119: push ebp
mov ebp,119
jmp reflect
inter120: push ebp
mov ebp,120
jmp reflect
inter121: push ebp
mov ebp,121
jmp reflect
inter122: push ebp
mov ebp,122
jmp reflect
inter123: push ebp
mov ebp,123
jmp reflect
inter124: push ebp
mov ebp,124
jmp reflect
inter125: push ebp
mov ebp,125
jmp reflect
inter126: push ebp
mov ebp,126
jmp reflect
inter127: push ebp
mov ebp,127
jmp reflect
inter128: push ebp
mov ebp,128
jmp reflect
inter129: push ebp
mov ebp,129
jmp reflect
inter130: push ebp
mov ebp,130
jmp reflect
inter131: push ebp
mov ebp,131
jmp reflect
inter132: push ebp
mov ebp,132
jmp reflect
inter133: push ebp
mov ebp,133
jmp reflect
inter134: push ebp
mov ebp,134
jmp reflect
inter135: push ebp
mov ebp,135
jmp reflect
inter136: push ebp
mov ebp,136
jmp reflect
inter137: push ebp
mov ebp,137
jmp reflect
inter138: push ebp
mov ebp,138
jmp reflect
inter139: push ebp
mov ebp,139
jmp reflect
inter140: push ebp
mov ebp,140
jmp reflect
inter141: push ebp
mov ebp,141
jmp reflect
inter142: push ebp
mov ebp,142
jmp reflect
inter143: push ebp
mov ebp,143
jmp reflect
inter144: push ebp
mov ebp,144
jmp reflect
inter145: push ebp
mov ebp,145
jmp reflect
inter146: push ebp
mov ebp,146
jmp reflect
inter147: push ebp
mov ebp,147
jmp reflect
inter148: push ebp
mov ebp,148
jmp reflect
inter149: push ebp
mov ebp,149
jmp reflect
inter150: push ebp
mov ebp,150
jmp reflect
inter151: push ebp
mov ebp,151
jmp reflect
inter152: push ebp
mov ebp,152
jmp reflect
inter153: push ebp
mov ebp,153
jmp reflect
inter154: push ebp
mov ebp,154
jmp reflect
inter155: push ebp
mov ebp,155
jmp reflect
inter156: push ebp
mov ebp,156
jmp reflect
inter157: push ebp
mov ebp,157
jmp reflect
inter158: push ebp
mov ebp,158
jmp reflect
inter159: push ebp
mov ebp,159
jmp reflect
inter160: push ebp
mov ebp,160
jmp reflect
inter161: push ebp
mov ebp,161
jmp reflect
inter162: push ebp
mov ebp,162
jmp reflect
inter163: push ebp
mov ebp,163
jmp reflect
inter164: push ebp
mov ebp,164
jmp reflect
inter165: push ebp
mov ebp,165
jmp reflect
inter166: push ebp
mov ebp,166
jmp reflect
inter167: push ebp
mov ebp,167
jmp reflect
inter168: push ebp
mov ebp,168
jmp reflect
inter169: push ebp
mov ebp,169
jmp reflect
inter170: push ebp
mov ebp,170
jmp reflect
inter171: push ebp
mov ebp,171
jmp reflect
inter172: push ebp
mov ebp,172
jmp reflect
inter173: push ebp
mov ebp,173
jmp reflect
inter174: push ebp
mov ebp,174
jmp reflect
inter175: push ebp
mov ebp,175
jmp reflect
inter176: push ebp
mov ebp,176
jmp reflect
inter177: push ebp
mov ebp,177
jmp reflect
inter178: push ebp
mov ebp,178
jmp reflect
inter179: push ebp
mov ebp,179
jmp reflect
inter180: push ebp
mov ebp,180
jmp reflect
inter181: push ebp
mov ebp,181
jmp reflect
inter182: push ebp
mov ebp,182
jmp reflect
inter183: push ebp
mov ebp,183
jmp reflect
inter184: push ebp
mov ebp,184
jmp reflect
inter185: push ebp
mov ebp,185
jmp reflect
inter186: push ebp
mov ebp,186
jmp reflect
inter187: push ebp
mov ebp,187
jmp reflect
inter188: push ebp
mov ebp,188
jmp reflect
inter189: push ebp
mov ebp,189
jmp reflect
inter190: push ebp
mov ebp,190
jmp reflect
inter191: push ebp
mov ebp,191
jmp reflect
inter192: push ebp
mov ebp,192
jmp reflect
inter193: push ebp
mov ebp,193
jmp reflect
inter194: push ebp
mov ebp,194
jmp reflect
inter195: push ebp
mov ebp,195
jmp reflect
inter196: push ebp
mov ebp,196
jmp reflect
inter197: push ebp
mov ebp,197
jmp reflect
inter198: push ebp
mov ebp,198
jmp reflect
inter199: push ebp
mov ebp,199
jmp reflect
inter200: push ebp
mov ebp,200
jmp reflect
inter201: push ebp
mov ebp,201
jmp reflect
inter202: push ebp
mov ebp,202
jmp reflect
inter203: push ebp
mov ebp,203
jmp reflect
inter204: push ebp
mov ebp,204
jmp reflect
inter205: push ebp
mov ebp,205
jmp reflect
inter206: push ebp
mov ebp,206
jmp reflect
inter207: push ebp
mov ebp,207
jmp reflect
inter208: push ebp
mov ebp,208
jmp reflect
inter209: push ebp
mov ebp,209
jmp reflect
inter210: push ebp
mov ebp,210
jmp reflect
inter211: push ebp
mov ebp,211
jmp reflect
inter212: push ebp
mov ebp,212
jmp reflect
inter213: push ebp
mov ebp,213
jmp reflect
inter214: push ebp
mov ebp,214
jmp reflect
inter215: push ebp
mov ebp,215
jmp reflect
inter216: push ebp
mov ebp,216
jmp reflect
inter217: push ebp
mov ebp,217
jmp reflect
inter218: push ebp
mov ebp,218
jmp reflect
inter219: push ebp
mov ebp,219
jmp reflect
inter220: push ebp
mov ebp,220
jmp reflect
inter221: push ebp
mov ebp,221
jmp reflect
inter222: push ebp
mov ebp,222
jmp reflect
inter223: push ebp
mov ebp,223
jmp reflect
inter224: push ebp
mov ebp,224
jmp reflect
inter225: push ebp
mov ebp,225
jmp reflect
inter226: push ebp
mov ebp,226
jmp reflect
inter227: push ebp
mov ebp,227
jmp reflect
inter228: push ebp
mov ebp,228
jmp reflect
inter229: push ebp
mov ebp,229
jmp reflect
inter230: push ebp
mov ebp,230
jmp reflect
inter231: push ebp
mov ebp,231
jmp reflect
inter232: push ebp
mov ebp,232
jmp reflect
inter233: push ebp
mov ebp,233
jmp reflect
inter234: push ebp
mov ebp,234
jmp reflect
inter235: push ebp
mov ebp,235
jmp reflect
inter236: push ebp
mov ebp,236
jmp reflect
inter237: push ebp
mov ebp,237
jmp reflect
inter238: push ebp
mov ebp,238
jmp reflect
inter239: push ebp
mov ebp,239
jmp reflect
inter240: push ebp
mov ebp,240
jmp reflect
inter241: push ebp
mov ebp,241
jmp reflect
inter242: push ebp
mov ebp,242
jmp reflect
inter243: push ebp
mov ebp,243
jmp reflect
inter244: push ebp
mov ebp,244
jmp reflect
inter245: push ebp
mov ebp,245
jmp reflect
inter246: push ebp
mov ebp,246
jmp reflect
inter247: push ebp
mov ebp,247
jmp reflect
inter248: push ebp
mov ebp,248
jmp reflect
inter249: push ebp
mov ebp,249
jmp reflect
inter250: push ebp
mov ebp,250
jmp reflect
inter251: push ebp
mov ebp,251
jmp reflect
inter252: push ebp
mov ebp,252
jmp reflect
inter253: push ebp
mov ebp,253
jmp reflect
inter254: push ebp
mov ebp,254
jmp reflect
inter255: push ebp
mov ebp,255
jmp reflect

TR_GS equ word ptr [ebp]+36
TR_FS equ word ptr [ebp]+32
TR_DS equ word ptr [ebp]+28
TR_ES equ word ptr [ebp]+24
TR_SS equ word ptr [ebp]+20
TR_SP equ word ptr [ebp]+16
TR_FLAG equ word ptr [ebp]+12
TR_CS equ word ptr [ebp]+8
TR_IP equ word ptr [ebp]+4
TR_ERR equ word ptr [ebp]
ext_int:
jmp tmp_int
ext_int1:
push ebp
push eax
mov ebp,esp ;esp also add 4 (twice push)
add ebp,4
push ebx
mov ax,User32DataSel ; base: 0,limit: 4000M
mov es,ax
xor eax,eax
mov ax,TR_SP
sub ax,6 ;6 bytes for real mode's ip,cs,flags
mov TR_SP,ax
xor ebx,ebx
mov bx,TR_SS
sal ebx,4
add ebx,eax
mov ax,TR_IP
mov es:[ebx],ax
mov ax,TR_CS
mov es:[ebx]+2,ax
mov ax,TR_FLAG
mov es:[ebx]+4,ax
mov ebx,1   ; number=1
sal ebx,2     ; address=number*4
mov ax,es:[ebx]
mov TR_IP,ax
mov ax,es:[ebx]+2
mov TR_CS,ax
or TR_FLAG+2,2   ;set VM=1
and TR_FLAG,0fcffh   ;clr intr and step flag
pop ebx
pop eax
pop ebp
iretd
jmp tmp_int
ext_int8:
cmp esp,(offset os_stack_top)-36
jb double_fault
pushad
mov ax,OS32DataSel
mov ds,ax
mov ax,User32DataSel
mov es,ax
call Arrow
inc Int8IsRun
cmp Int8IsRun,3
jae screenOpti
jmp quitnow
screenOpti:
  call GetPageIsNotClean
  cmp al,0
  je is_clean_page
  call SetIDTStack         ; set stack
  call CompScreenAndTextBuf
  call RestoreStack   ; restore stack
  mov Int8IsRun,0
  jmp quitnow
is_clean_page:
  mov Int8IsRun,0
quitnow:
  popad
  push ebp
  mov ebp,8
  jmp reflect
double_fault:
jmp tmp_int
; INTR 13 hasn't error code,but FAIL has
ext_int13:   ; Int 0dh not push ebp
cmp esp,(offset os_stack_top)-36
jb protected_fault
push ebp
mov ebp,13
jmp reflect
protected_fault:
push eax ; set our ds
mov ax,OS32DataSel
mov ds,ax
mov ax,User32DataSel
mov es,ax
pop eax
add esp,4
push ebp ; no error code use
mov ebp,esp
pushad
or TR_FLAG,3200h ;set IOPL=3
xor eax,eax
xor ebx,ebx
mov bx,TR_CS
sal ebx,4
mov ax,TR_IP
add ebx,eax
cmp byte ptr es:[ebx],0f4h ;Is HALT
je is_hlt
  mov eax,dword ptr es:[ebx]
  jmp tmp_int
is_hlt:
  jmp tmp_int
ext_int13_end:
popad
add esp,4
iretd
jmp tmp_int
ext_int14:
cmp esp,(offset os_stack_top)-36
jb page_fault
push ebp
mov ebp,14
jmp reflect
page_fault:
jmp tmp_int
ext_int16:
; push ebp
; mov ebp,16
; jmp reflect
push ebp
mov bp,OS32DataSel
mov ds,bp
mov bp,User32DataSel
mov es,bp
pop ebp
push esi
push edi
call SetIDTStack
cmp ah,0
je isSetDisplayMode
cmp ah,1
je isSetCursorType
cmp ah,2
je isGotoXY
cmp ah,3
je isGetXY
cmp ah,6
je isScrollUpScreen
cmp ah,7
je isScrollDownScreen
cmp ah,8
je isGetCharAndAttrib
cmp ah,9
je isPutCharAndAttrib
cmp ah,0ah
je isPutCharAndNotPutAttrib
cmp ah,0bh
je isSetCGAPattle
cmp ah,0eh
je isTTYPutCharAndAttrib
cmp ah,0fh
je isGetDisplayMode
call RestoreStack   ; for default we call BIOS
pop edi
pop esi
; to real mode int 10h
push ebp
mov ebp,16
jmp reflect
isSetDisplayMode:
jmp int10hEnd
isSetCursorType:
mov CurFirstLine,ch
mov CurLastLine,cl
jmp int10hEnd
isGetDisplayMode:
mov al,3
mov ah,80
mov bh,0
jmp int10hEnd
isGotoXY:
call GotoXY
jmp int10hEnd
isGetXY:
call GetXY
jmp int10hEnd
isScrollUpScreen:
isScrollDownScreen:
cmp al,0
jne isScroll
mov al,dh
sub al,ch
inc al
isScroll:
  pushad
  call ScrollScreen
  popad
  jmp int10hEnd
isGetCharAndAttrib:
call BIOSGetCharAndAttrib
jmp int10hEnd
isPutCharAndAttrib:
pushad
call BIOSPutCharAndAttrib
; call SetPageInvalid
popad
jmp int10hEnd
isPutCharAndNotPutAttrib:
pushad
call BIOSPutCharAndNotPutAttrib
; call SetPageInvalid
popad
jmp int10hEnd
isSetCGAPattle:
jmp int10hEnd
isTTYPutCharAndAttrib:
pushad
call TTYPutChar
; call SetPageInvalid
popad
jmp int10hEnd
int10hEnd:
call RestoreStack
pop edi
pop esi
iretd

ext_int21:   ; int15h
cmp ah,89h   ;not allowed into protected mode
jne int15h_cont
push ebp
mov ebp,esp
or TR_FLAG,1   ;CF=1
mov ah,0ffh         ;error code
pop ebp
iretd
int15h_cont:
cmp ah,87h   ; we allowed to move expend memory
jne not_mem_copy
push ebp
mov ebp,esp
push eax
push ebx
push ecx
push edx
push esi
push edi
mov ax,User32DataSel
mov ds,ax
mov es,ax
xor eax,eax
mov ax,TR_ES
sal eax,4
and esi,0ffffh
add eax,esi
mov ebx,eax
mov eax,[ebx]+12
and eax,0ffffffh
mov esi,eax
mov eax,[ebx]+1ah
and eax,0ffffffh
mov edi,eax
and ecx,0ffffh
rep movsw
and TR_FLAG,0fffeh ; set CF=0,OK
pop edi
pop esi
pop edx
pop ecx
pop ebx
pop eax
xor ah,ah           ;ah:error code
pop ebp
iretd
not_mem_copy:
push ebp
mov ebp,21
jmp reflect
ext_int47:   ; 1605h 1606h windows enter/leave boardcasting
cmp ah,'W'
jne notThisFunc
cmp al,'X'     ; a0000h to expend memory
je isFunc1
cmp al,'Z'         ; a0000h back
je isFunc2
jmp notThisFunc
isFunc1:
pushad
mov ax,OS32DataSel
mov ds,ax
mov ax,User32DataSel
mov es,ax
call SetA0000HExpend
popad
iretd
isFunc2:
pushad
mov ax,OS32DataSel
mov ds,ax
mov ax,User32DataSel
mov es,ax
call RestoreA0000h
popad
iretd
notThisFunc:
push ebp
mov ebp,47
jmp reflect
reflect:
  ;In fact,those intr no error so push ebp instead
push eax
mov eax,ebp
mov ebp,esp ;esp also add 4 (twice push)
add ebp,4
push ebx
push eax
mov ax,OS32DataSel
mov ds,ax
mov ax,User32DataSel
mov es,ax
xor eax,eax
mov ax,TR_SP
sub ax,6 ;6 bytes for real mode's ip,cs,flags
mov TR_SP,ax
xor ebx,ebx
mov bx,TR_SS
sal ebx,4
add ebx,eax
mov ax,TR_IP
mov es:[ebx],ax
mov ax,TR_CS
mov es:[ebx]+2,ax
mov ax,TR_FLAG
mov es:[ebx]+4,ax
pop ebx   ; intr number
sal ebx,2     ; address=number*4
mov ax,es:[ebx]
mov TR_IP,ax
mov ax,es:[ebx]+2
mov TR_CS,ax
or TR_FLAG+2,2   ;set VM=1
and TR_FLAG,NOT 200h   ;clr intr
pop ebx
pop eax
pop ebp
iretd
jmp tmp_int
tmp_int:
mov ax,OS32DataSel
mov ds,ax
mov ax,User32DataSel
mov es,ax
mov esp,offset os_stack_top
Beep
db 0eah     ; jmp far releave_32
dw offset releave_32,0
dw OS32CodeSel
int 8h
SetIDTStack proc near
pop edi
mov si,ss
mov save_os_stack_ss,si
mov save_os_stack_esp,esp
mov si,ds
mov ss,si
mov esp,idt_stack_top
push edi
ret
SetIDTStack endp
RestoreStack proc near
pop edi
mov si,save_os_stack_ss
mov ss,si
mov esp,save_os_stack_esp
push edi
ret
RestoreStack endp
os32_code ends
data segment use16 public
  dd 1024 dup (?)
idt_stack_top label dword
  dd 4 dup (?)
save_os_stack_ss dw 0,0
save_os_stack_esp   dd ?
data ends
 
 

原创粉丝点击