Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Список использованных источников. 1 Зубков С. В. Assembler для DOS, Windows и UNIX



1 Зубков С. В. Assembler для DOS, Windows и UNIX. – М.: ДМК, 2000. – 608 с.

2 Кулаков В. Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. – СПб.: Питер, 2003. – 847 с. ил.

3 Финогенов К. Г., Самоучитель по системным функциям MS DOS. –3-е изд., – М.: Горячая линия – Телеком, 2001. – 382с.

4 Фролов А.В., Фролов Г.В. Аппаратное обеспечение персонального компьютера. – М.: Диалог-МИФИ, 1997. – 304 с (БСП т.33).

5 Юров В. И. Assembler. Учебник для вузов.2-е изд. – СПб.: Питер, 2006. – 637 с.: ил.


Приложение А

Схема формирования звука для встроенного динамика


Приложение Б

Листинг файла cur.lst

Turbo Assembler Version 3.1 07/11/09 17:58:34 Page 1

cur.ASM

1 0000.model tiny;модель COM-файла

2 0000.code

3.486

4 org 100h

5 0100 main:;начало резидентной части

6 0100 E9 01EA jmp iniz;переход на транзитную часть

7 0103 new_2Fh proc

8 0103 3D C801 cmp ax, 0C801h

9 0106 74 07 90 90 jz unins

10 010A 2E: FF 2E 01C2r jmp cs:old_2Fh

11 010F unins:;восстановление 2Fh

12 010F 9C pushf

13 0110 1E push ds

14 0111 06 push es

15 0112 B8 252F mov ax, 252Fh

16 0115 2E: C5 16 01C2r lds dx, cs:old_2Fh

17 011A CD 21 int 21h

18 011C 2E: 8E 06 002F mov es, cs:2Fh

19 0121 B4 49 mov ah, 49h

20 0123 CD 21 int 21h

21 0125 0E push cs

22 0126 07 pop es

23 0127 B4 49 mov ah, 49h

24 0129 CD 21 int 21h

25 012B 07 pop es

26 012C 1F pop ds

27 012D 9D popf

28 012E CF iret

29 012F new_2Fh endp

31 012F resident proc far

32 012F asmb:

33 012F EB 03 90 jmp next

34 0132 1234 marker dw 1234h

35 0134 next:

36 0134 1E push ds

37 0135 06 push es

38 0136 60 pusha

41 0137 B4 09 mov ah,09h

42 0139 BA 01C6r mov dx,offset cs:exit_mess

43 013C CD 21 int 21h

45 013E go:

46 013E B4 0C mov ah,0Ch

47 0140 CD 21 int 21h

48;заносим слово состояния 10110110b(0B6h) в командный регистр (порт 43h)

49 0142 B0 B6 mov al, 10110110b;канал 2, режим 3

50 0144 E6 43 out 43h, al

52 0146 B8 0000 mov ax, 0

53 0149 8E C0 mov es, ax

54 014B 26: 8B 36 0180 mov si, word ptr es:[60h*4]

55 0150 8B 0C mov cx, ds:[si]

56;установим частоту сигнала канала 2 таймера

57 0152 BA 0012 mov dx, 0012h

Turbo Assembler Version 3.1 07/11/09 17:58:34 Page 2

cur.ASM

58 0155 B8 3428 mov ax, 3428h

59 0158 F7 F1 div cx

60 015A E6 42 out 42h, al

61 015C 86 C4 xchg al, ah;обмен между al и ah

62 015E E6 42 out 42h, al

63;включение динамика

64 0160 E4 61 in al, 61h

65 0162 0C 03 or al, 3

66 0164 E6 61 out 61h, al

67;формирование задержки для выполнения длительности звука

68 0166 B8 0000 mov ax, 0

69 0169 8E C0 mov es, ax

70 016B 26: 8B 36 0180 mov si, word ptr es:[60h*4]

71 0170 26: 8E 1E 0182 mov ds, word ptr es:[60h*4+2]

72 0175 8B 4C 02 mov cx, ds:[si+2]

73 0178 56 push si

74 0179 8B F1 mov si, cx;dlit

75 017B B4 00 mov ah, 0

76 017D CD 1A int 1ah

77 017F 8B DA mov bx, dx

78 0181 03 DE add bx, si

79 0183 delay_loop:

80 0183 CD 1A int 1ah

81 0185 3B D3 cmp dx, bx

82 0187 75 FA jne delay_loop

83 0189 5E pop si

84;выключение динамика

85 018A E4 61 in al, 61h

86 018C 24 FC and al, 0fch

87 018E E6 61 out 61h, al

88;формирование задержки

89 0190 B8 0000 mov ax, 0

90 0193 8E C0 mov es, ax

91 0195 26: 8B 36 0180 mov si, word ptr es:[60h*4]

92 019A 26: 8E 1E 0182 mov ds, word ptr es:[60h*4+2]

93 019F 8B 4C 04 mov cx, ds:[si+4]

94 01A2 56 push si

95 01A3 8B F1 mov si, cx;pausa

96 01A5 B4 00 mov ah, 0

97 01A7 CD 1A int 1ah

98 01A9 8B DA mov bx, dx

99 01AB 03 DE add bx, si

100 01AD delay_loop2:

101 01AD CD 1A int 1ah

102 01AF 3B D3 cmp dx, bx

103 01B1 75 FA jne delay_loop2

104 01B3 5E pop si

106;проверка на нажатие клавиши "пробел"

107 01B4 B8 1100 mov ax, 1100h

108 01B7 CD 16 int 16h

109 01B9 80 FC 39 cmp ah, 039h

110 01BC 75 80 jne go

111 01BE 61 popa

112 01BF 07 pop es

113 01C0 1F pop ds

114 01C1 CB ret

Turbo Assembler Version 3.1 07/11/09 17:58:34 Page 3

cur.ASM

115;резидентные данные

116 01C2???????? old_2Fh dd?

117 01C6 49 66 20 79 6F 75 20+ exit_mess db 'If you wont exit, please press Space.',10,13,'$'

118 77 6F 6E 74 20 65 78+

119 69 74 2C 20 70 6C 65+

120 61 73 65 20 70 72 65+

121 73 73 20 53 70 61 63+

122 65 2E 0A 0D 24

123 01EE resident endp

125 =00EE ResidentSize = $ - main

127;транзитная часть

128;транзитные данные

129 01EE 52 65 7A 69 64 65 6E+ mess1 db 'Rezident is load.',10,13,'$'

130 74 20 69 73 20 6C 6F+

131 61 64 2E 0A 0D 24

132 0202 52 65 7A 69 64 65 6E+ mess2 db 'Rezident is already load!!!. ',10,13,'For RUN please press Shift or Caps Lock.', +

133 74 20 69 73 20 61 6C+ 10,13,'$'

134 72 65 61 64 79 20 6C+

135 6F 61 64 21 21 21 2E+

136 20 0A 0D 46 6F 72 20+

137 52 55 4E 20 70 6C 65+

138 61 73 65 20 70 72 65+

139 73 73 20 53 68 69 66+

140 74 20 6F 72 20 43 61+

141 70 73 20 4C 6F 63 6B+

142 2E 0A 0D 24

143 024C 52 65 7A 69 64 65 6E+ mess3 db 'Rezident is unload.',10,13,'$'

144 74 20 69 73 20 75 6E+

145 6C 6F 61 64 2E 0A 0D+

146 24

147 0262 45 6E 74 65 72 20 66+ toneMsg db 'Enter frequency of a sound:',10,13,'$'

148 72 65 71 75 65 6E 63+

149 79 20 6F 66 20 61 20+

150 73 6F 75 6E 64 3A 0A+

151 0D 24

152 0280 45 6E 74 65 72 20 61+ pausaMsg db 'Enter a pause:',10,13,'$'

153 20 70 61 75 73 65 3A+

154 0A 0D 24

155 0291 45 6E 74 65 72 20 64+ dlitMsg db 'Enter duration of a sound:',10,13,'$'

156 75 72 61 74 69 6F 6E+

157 20 6F 66 20 61 20 73+

158 6F 75 6E 64 3A 0A 0D+

159 24

160 02AE???? tone dw?;частота звучания Гц

161 02B0???? dlit dw?;пауза в звучании

162 02B2???? pausa dw?;пауза в звучании

163 02B4 12 dop db 18

165 02B5 StrToInt proc

166 02B5 inp:

167 02B5 51 push cx

168 02B6 52 push dx

169 02B7 53 push bx

170 02B8 33 DB xor bx, bx

171 02BA B1 02 mov cl, 02h

Turbo Assembler Version 3.1 07/11/09 17:58:34 Page 4

cur.ASM

172 02BC B4 01 mov ah, 01h

173 02BE goon:

174 02BE CD 21 int 21h

175 02C0 3C 30 cmp al, 30h

176 02C2 72 19 90 90 jb all

177 02C6 3C 39 cmp al, 39h

178 02C8 77 13 90 90 ja all

179 02CC 2C 30 sub al, 30h

180 02CE D1 E3 shl bx, 1

181 02D0 8B D3 mov dx, bx

182 02D2 D3 E3 shl bx, cl

183 02D4 03 DA add bx, dx

184 02D6 02 D8 add bl, al

185 02D8 80 D7 00 adc bh, 00h

186 02DB EB E1 jmp goon

187 02DD all:

188 02DD B4 02 mov ah, 02h

189 02DF B2 0A mov dl, 0Ah

190 02E1 CD 21 int 21h

191 02E3 B2 0D mov dl, 0Dh

192 02E5 CD 21 int 21h

193 02E7 8B C3 mov ax, bx

194 02E9 5B pop bx

195 02EA 5A pop dx

196 02EB 59 pop cx

197 02EC C3 ret

198 02ED StrToInt endp

200 02ED iniz proc;точка входа в транзитную часть

201;проверка на повторную загрузку

202 02ED 0E push cs

203 02EE 1F pop ds

204 02EF B8 0040 mov ax, 0040h

205 02F2 8E C0 mov es, ax

206 02F4 1E push ds

207 02F5 26: 8B 3E 00F0 mov di, word ptr es:[0F0h]

208 02FA 26: 8E 1E 00F2 mov ds, word ptr es:[0F2h]

209 02FF 8B 45 03 mov ax, word ptr ds:[di+3]

210 0302 1F pop ds

211 0303 3D 1234 cmp ax, 1234h

212 0306 74 36 90 90 jz installed

213;будет выполнена первая загрузка резидента

214 030A B8 0040 mov ax, 0040h

215 030D 8E C0 mov es, ax

216 030F 26: C7 06 00F0 012Fr mov word ptr es:[0F0h], offset asmb

217 0316 26: 8C 0E 00F2 mov es:[0F2h], cs

218 031B B8 352F mov ax, 352Fh

219 031E CD 21 int 21h

220 0320 89 1E 01C2r mov word ptr old_2Fh, bx

221 0324 8C 06 01C4r mov word ptr old_2Fh+2, es

222 0328 B8 252F mov ax, 252Fh

223 032B BA 0103r lea dx, new_2Fh

224 032E CD 21 int 21h

226 0330 B4 09 mov ah, 09h

227 0332 BA 01EEr mov dx, offset mess1

228 0335 CD 21 int 21h

Turbo Assembler Version 3.1 07/11/09 17:58:34 Page 5

cur.ASM

230 0337 B4 31 mov ah, 31h

231 0339 BA 001F mov dx, (ResidentSize + 10Fh)/16

232 033C CD 21 int 21h

233;вызывающая часть резидентной программы

234 033E installed:

237 033E B4 09 mov ah, 09h

238 0340 BA 0202r mov dx, offset mess2

239 0343 CD 21 int 21h

241 0345 rezz:

242 0345 B4 12 mov ah,12h

243 0347 CD 16 int 16h; в ah байт2 состояния клавиатуры

244 0349 80 E4 40 and ah,01000000b; проверка

245 034C 80 FC 00 cmp ah,0; нажатия клавиши

246 034F 75 0C 90 90 jnz goo

247 0353 24 01 and al,00000001b

248 0355 3C 00 cmp al,0; нажатия клавиши

249 0357 75 04 90 90 jnz goo

250 035B EB E8 jmp rezz

252 035D goo:

254;передача данных в резидентную часть

255 035D B4 09 mov ah, 09h

256 035F BA 0262r lea dx, toneMsg

257 0362 CD 21 int 21h

259 0364 E8 FF4E call StrToInt

260 0367 A3 02AEr mov tone, ax

262 036A B4 09 mov ah, 09h

263 036C BA 0291r lea dx, dlitMsg

264 036F CD 21 int 21h

265 0371 E8 FF41 call StrToInt

266 0374 F6 26 02B4r mul dop

267 0378 A3 02B0r mov dlit, ax

269 037B B4 09 mov ah, 09h

270 037D BA 0280r lea dx, pausaMsg

271 0380 CD 21 int 21h

272 0382 E8 FF30 call StrToInt

273 0385 F6 26 02B4r mul dop

274 0389 A3 02B2r mov pausa, ax

275 038C 06 push es

276 038D B8 0000 mov ax, 0

277 0390 8E C0 mov es, ax

278 0392 26: C7 06 0180 02AEr mov word ptr es:60h*4, offset tone

279 0399 26: 8C 0E 0182 mov word ptr es:60h*4+2, cs

280 039E 07 pop es

282;передача управления резидентной части путем вызова подпрограммы

283;call resident

284 039F B8 0040 mov ax,0040h

285 03A2 8E C0 mov es,ax


Turbo Assembler Version 3.1 07/11/09 17:58:34 Page 6

cur.ASM

286 03A4 26: FF 1E 00F0 call dword ptr es:[0f0h]

287;передача команды на выпуск резидентной части из опер. памяти

288 03A9 B4 09 mov ah, 09h

289 03AB BA 024Cr mov dx, offset mess3

290 03AE CD 21 int 21h

292 03B0 B8 C801 mov ax, 0C801h

293 03B3 CD 2F int 2Fh

295 03B5 exit:

296 03B5 B8 4C00 mov ax, 4C00h

297 03B8 CD 21 int 21h

298 03BA iniz endp

299 end main

Turbo Assembler Version 3.1 07/11/09 17:58:34 Page 7

Symbol Table

Symbol Name Type Value Cref (defined at #)

??DATE Text "07/11/09"

??FILENAME Text "cur "

??TIME Text "17:58:34"

??VERSION Number 030A

@32BIT Text 0 #1

@CODE Text DGROUP #1

@CODESIZE Text 0 #1

@CPU Text 1F1FH #3

@CURSEG Text _TEXT #2

@DATA Text DGROUP #1

@DATASIZE Text 0 #1

@FILENAME Text CUR

@INTERFACE Text 00H #1

@MODEL Text 1 #1

@STACK Text DGROUP #1

@WORDSIZE Text 4 #2 #3

ALL Near DGROUP:02DD 176 178 #187

ASMB Near DGROUP:012F #32 216

DELAY_LOOP Near DGROUP:0183 #79 82

DELAY_LOOP2 Near DGROUP:01AD #100 103

DLIT Word DGROUP:02B0 #161 267

DLITMSG Byte DGROUP:0291 #155 263

DOP Byte DGROUP:02B4 #163 266 273

EXIT Near DGROUP:03B5 #295

EXIT_MESS Byte DGROUP:01C6 42 #117

GO Near DGROUP:013E #45 110

GOO Near DGROUP:035D 246 249 #252

GOON Near DGROUP:02BE #173 186

INIZ Near DGROUP:02ED 6 #200

INP Near DGROUP:02B5 #166

INSTALLED Near DGROUP:033E 212 #234

MAIN Near DGROUP:0100 #5 125 299

MARKER Word DGROUP:0132 #34

MESS1 Byte DGROUP:01EE #129 227

MESS2 Byte DGROUP:0202 #132 238

MESS3 Byte DGROUP:024C #143 289

NEW_2FH Near DGROUP:0103 #7 223

NEXT Near DGROUP:0134 33 #35

OLD_2FH Dword DGROUP:01C2 10 16 #116 220 221

PAUSA Word DGROUP:02B2 #162 274

PAUSAMSG Byte DGROUP:0280 #152 270

RESIDENT Far DGROUP:012F #31

RESIDENTSIZE Number 00EE #125 231

REZZ Near DGROUP:0345 #241 250

STRTOINT Near DGROUP:02B5 #165 259 265 272

TONE Word DGROUP:02AE #160 260 278

TONEMSG Byte DGROUP:0262 #147 256

UNINS Near DGROUP:010F 9 #11

Groups & Segments Bit Size Align Combine Class Cref (defined at #)

DGROUP Group #1 1

_DATA 16 0000 Word Public DATA #1

_TEXT 16 03BA Word Public CODE #1 #2





Дата публикования: 2014-12-08; Прочитано: 251 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.028 с)...