листанг (КП - индикатор регистров, 2 вариант)

2017-12-28СтудИзба

Описание файла

Файл "листанг" внутри архива находится в следующих папках: КП - индикатор регистров, 2 вариант, Программа для вывода содержимого регистров МП. Документ из архива "КП - индикатор регистров, 2 вариант", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.

Онлайн просмотр документа "листанг"

Текст из документа "листанг"

16


Московский государственный технический университет им. Н.Э.Баумана

Утверждаю:

Большаков С.А.

"__"_____________200 г.

Курсовая работа по системному программированию “Программа для вывода содержимого регистров МП”

исходные тексты

(вид документа)

писчая бумага

(вид носителя)

13

(количество листов)

ИСПОЛНИТЕЛЬ:

студент группы ИУ5-51

_____________________

Земляк А.А.

"__"_____________200 г.



Москва - 2000

________________________________________________________________

Содержание:

  1. Листинг программы………………………………………………3

  1. Листинг программы:

Turbo Assembler Version 3.1 24/12/00 23:09:51 Page 1

fin.ASM

1 ;Преамбула

2 0000 text segment 'code'

3 assume CS:text,DS:text

4 org 100h

5 =0016 alt_q equ 16h

6

7 0100 myproc:

8 0100 E9 0358 jmp init

9

10 ;эта секция относится к данным резидентной секции программы

11

12 0103 41 48 41 4C 52 regstring db "AHALR"

13

14 0108 41 58 3A 20 20 20 20+ regs_s1 db "AX: BX: CX: DX: "

15 20 20 42 58 3A 20 20+

16 20 20 20 20 43 58 3A+

17 20 20 20 20 20 20 44+

18 58 3A 20 20 20 20

19 =0022 regs_s1_len = $-regs_s1

20 012A 53 49 3A 20 20 20 20+ regs_s2 db "SI: DI: SP: BP: "

21 20 20 44 49 3A 20 20+

22 20 20 20 20 53 50 3A+

23 20 20 20 20 20 20 42+

24 50 3A 20 20 20 20

25 =0022 regs_s2_len = $-regs_s2

26 014C 44 53 3A 20 20 20 20+ regs_s3 db "DS: ES: SS: CS: "

27 20 20 45 53 3A 20 20+

28 20 20 20 20 53 53 3A+

29 20 20 20 20 20 20 43+

30 53 3A 20 20 20 20

31 =0022 regs_s3_len = $-regs_s3

32

33 016E 0000 my_ax dw 0

34 0170 0000 my_bx dw 0

35 0172 0000 my_cx dw 0

36 0174 0000 my_dx dw 0

37 0176 0000 my_si dw 0

38 0178 0000 my_di dw 0

39 017A 0000 my_sp dw 0

40 017C 0000 my_bp dw 0

41 017E 0000 my_ds dw 0

42 0180 0000 my_cs dw 0

43 0182 0000 my_es dw 0

44 0184 0000 my_ss dw 0

45

46 0186 00000000 old_09h dd 0

47 018A 00000000 old_2fh dd 0

48 018E 90 20 A5 20 A7 20 A8+ mesr db 'Р е з и д е н т в ы г р у ж е н , '

49 20 A4 20 A5 20 AD 20+

50 E2 20 20 20 A2 20 EB+

51 20 A3 20 E0 20 E3 20+

52 A6 20 A5 20 AD 20 2C+

53 20 20 20

54 01B4 AF 20 E0 20 AE 20 A3+ db 'п р о г р а м м а у с п е ш н о з а в е р ш е н а '

55 20 E0 20 A0 20 AC 20+

56 AC 20 A0 20 20 20 E3+

57 20 E1 20 AF 20 A5 20+

Turbo Assembler Version 3.1 24/12/00 23:09:51 Page 2

fin.ASM

58 E8 20 AD 20 AE 20 20+

59 20 A7 20 A0 20 A2 20+

60 A5 20 E0 20 E8 20 A5+

61 20 AD 20 A0 20

62 =005C mesrlen=$-mesr

63

64 ;резидентная секция программы

65 01EA FA new_09h:cli

66 01EB 9C pushf

67

68 ;вызов системного обработчика прерывания от кл.

69 01EC 2E: FF 1E 0186r call CS:old_09h

70 ;сохраняем регистры в стеке и в пеpеменных

71 01F1 2E: 89 26 017Ar mov cs:my_sp,sp

72

73 01F6 50 push ax

74 01F7 53 push bx

75 01F8 51 push cx

76 01F9 52 push dx

77 01FA 55 push bp

78 01FB 1E push ds

79 01FC 06 push es

80 01FD 57 push di

81 01FE 56 push si

82

83 01FF 2E: 8C 16 0184r mov cs:my_ss,ss

84 0204 2E: A3 016Er mov cs:my_ax,ax

85 0208 2E: 89 1E 0170r mov cs:my_bx,bx

86 020D 2E: 89 0E 0172r mov cs:my_cx,cx

87 0212 2E: 89 16 0174r mov cs:my_dx,dx

88 0217 2E: 89 2E 017Cr mov cs:my_bp,bp

89 021C 2E: 8C 1E 017Er mov cs:my_ds,ds

90 0221 2E: 8C 06 0182r mov cs:my_es,es

91 0226 2E: 89 3E 0178r mov cs:my_di,di

92 022B 2E: 89 36 0176r mov cs:my_si,si

93

94 0230 8C C8 mov ax, cs ;настpаиваем ds

95 0232 8E D8 mov ds, ax

96

97 0234 2E: 8B 36 017Ar mov si,cs:my_sp

98 0239 16 push ss

99 023A 07 pop es

100 023B 26: 8B 44 02 mov ax,es:[si+2]

101 023F 2E: A3 0180r mov cs:my_cs,ax

102 0243 2E: 83 06 017Ar 06 add cs:my_sp,6

103

104 ;настраиваем ES на системную область данных

105 0249 B8 0040 mov AX,40h

106 024C 8E C0 mov ES,AX

107 ;получаем первый необработанный скен код клавиатуры

108 024E 26: 8B 1E 001A mov BX,ES:1ah

109 0253 26: 8B 07 mov AX,ES:BX

110 ;пpовеpка на клавишу вызова (F12)

111 0256 3D 8600 cmp AX,8600h

112 0259 74 1B je print_regs1

113 ;проверка на то, что этот скен код - код выгрузки

114 025B 80 FC 16 cmp AH,alt_q

Turbo Assembler Version 3.1 24/12/00 23:09:51 Page 3

fin.ASM

115 025E 75 0B jne not_u

116 0260 26: F6 06 0017 04 test byte ptr ES:17h,00000100b

117 0266 74 03 jz not_u

118 0268 EB 0F 90 jmp altq

119 026B not_u:

120 026B home:

121 ;выход из обработчика прерываний и восстановление используемых регистров

122 026B 5E pop si

123 026C 5F pop di

124 026D 07 pop es

125 026E 1F pop ds

126 026F 5D pop bp

127 0270 5A pop dx

128 0271 59 pop cx

129 0272 5B pop bx

130 0273 58 pop ax

131 0274 endi:

132 0274 FB sti

133 0275 CF iret

134 ;--------------------------------------------------------------------

135 0276 print_regs1:

136 0276 E9 008F jmp print_regs

137 ;---------------------------------------------------------------------

138 0279 altq:

139 ;Если нажата клавиша выгрузки

140 ; настроим ES на системную область и проверим, наш ли обработчик загружен

141 ; последним, если нет, то на выход из прерывания

142 0279 B8 0000 mov AX,0

143 027C 8E C0 mov ES,AX

144 027E 8C C8 mov AX,CS

145 0280 26: 3B 06 0026 cmp AX,word ptr ES:26h

146 0285 75 E4 jne home

147

148 ;восстановим старые вектора прерываний

149 0287 A1 0186r mov AX,word ptr old_09h

150 028A 26: A3 0024 mov word ptr ES:24h,AX

151 028E A1 0188r mov AX,word ptr old_09h+2

152 0291 26: A3 0026 mov word ptr ES:26h,AX

153

154 0295 A1 018Ar mov AX,word ptr old_2fh

155 0298 26: A3 00BC mov word ptr ES:0bch,AX

156 029C A1 018Cr mov AX,word ptr old_2fh+2

157 029F 26: A3 00BE mov word ptr ES:0beh,AX

158

159 ;уберем символ выгрузки из кольцевого буфера клавиатуры

160 02A3 BB 001A mov BX,1ah

161 02A6 B8 0040 mov AX,40h

162 02A9 8E C0 mov ES,AX

163 02AB queue_cont:

164 02AB 26: 8B 07 mov AX,word ptr ES:BX

165 02AE 48 dec AX

166 02AF 48 dec AX

167 02B0 26: 89 07 mov ES:BX,AX

168 02B3 BB 001C mov BX,1ch

169 02B6 26: 8B 07 mov AX,word ptr ES:BX

170 02B9 48 dec AX

171 02BA 48 dec AX

Turbo Assembler Version 3.1 24/12/00 23:09:51 Page 4

fin.ASM

172 02BB 48 dec AX

173 02BC 48 dec AX

174 02BD 26: 89 07 mov ES:BX,AX

175

176 02C0 queue_end:

177 ;выведем сообщение о выгрузке программы на экран

178 02C0 B8 B800 mov AX,0b800h

179 02C3 8E C0 mov ES,AX

180 02C5 B4 1E mov AH,1Eh

181 02C7 B9 005C mov CX,mesrlen

182 02CA BB 0000 mov BX,0

183 02CD l:

184 02CD 8A 87 018Er mov AL,mesr[BX]

185 02D1 26: 88 87 0640 mov byte ptr ES:1600[BX],AL

186 02D6 43 inc BX

187 02D7 E2 F4 loop l

188

189

190 ; здесь осуществляется выгрузка

191 02D9 8C C8 mov AX,CS

192 02DB 48 dec AX

193 02DC 8E D8 mov DS,AX

194 02DE BB 0001 mov BX,1

195 02E1 C7 07 0000 mov word ptr DS:BX,word ptr 0

196

197 02E5 8C C8 mov AX,CS

198 02E7 8E D8 mov DS,AX

199

200 02E9 BB 002C mov BX,002ch

201 02EC 8B 07 mov AX,word ptr DS:BX

202 02EE 48 dec AX

203

204 02EF 8E D8 mov DS,AX

205 02F1 BB 0001 mov BX,1

206 02F4 C7 07 0000 mov word ptr DS:BX,word ptr 0

207 02F8 E9 FF70 jmp home

208

209 ;наш обработчик функции FF прерывания 2F

210 02FB new_2fh proc

211 ;обработчик просто заносит в AL значение 0ffh

212 02FB 3D C000 cmp AX,0c000h

213 02FE 75 03 jne not_my

214 0300 B0 FF mov AL,0ffh

215 0302 CF iret

216 0303 not_my:

217 0303 2E: FF 2E 018Ar jmp CS:old_2fh

218 0308 new_2fh endp

219

220 ;конец обработчика прерывания

221 ;----------------------------------------------------------------------------

222 ;--- Вывод значений pегистpов ---

223 ;-----------------------------------

224 0308 print_regs:

225 ;- печать стpок с пустыми местами для значений pегистpов

226 0308 0E push cs

227 0309 1F pop ds

228

Turbo Assembler Version 3.1 24/12/00 23:09:51 Page 5

fin.ASM

229 030A B6 00 mov dh, 0

230 030C B2 00 mov dl, 0

231 030E BD 0108r mov bp, offset regs_s1

232 0311 B9 0022 mov cx, regs_s1_len

233 0314 E8 0136 call printstr

234

235 0317 B6 01 mov dh, 1

236 0319 B2 00 mov dl, 0

237 031B BD 012Ar mov bp, offset regs_s2

238 031E B9 0022 mov cx, regs_s2_len

239 0321 E8 0129 call printstr

240

241 0324 B6 02 mov dh, 2

242 0326 B2 00 mov dl, 0

243 0328 BD 014Cr mov bp, offset regs_s3

244 032B B9 0022 mov cx, regs_s3_len

245 032E E8 011C call printstr

246 ;-------

247

248 ;---

249 0331 8B 1E 016Er mov bx,my_ax ;печать AX

250 0335 E8 00EC call encodeascii

251 0338 B6 00 mov dh, 0

252 033A B2 03 mov dl, 3

253 033C BD 0103r mov bp, offset regstring

254 033F B9 0004 mov cx, 4

255 0342 E8 0108 call printstr

256 ;---

257

258 ;---

259 0345 8B 1E 0170r mov bx, my_bx ;печать BX

260 0349 E8 00D8 call encodeascii

261 034C B6 00 mov dh, 0

262 034E B2 0C mov dl, 12

263 0350 BD 0103r mov bp, offset regstring

264 0353 B9 0004 mov cx, 4

265 0356 E8 00F4 call printstr

266 ;---

267

268 ;---

269 0359 8B 1E 0172r mov bx, my_cx ;печать CX

270 035D E8 00C4 call encodeascii

271 0360 B6 00 mov dh, 0

272 0362 B2 15 mov dl, 21

273 0364 BD 0103r mov bp, offset regstring

274 0367 B9 0004 mov cx, 4

275 036A E8 00E0 call printstr

276 ;---

277

278 ;---

279 036D 8B 1E 0174r mov bx, my_dx ;печать DX

280 0371 E8 00B0 call encodeascii

281 0374 B6 00 mov dh, 0

282 0376 B2 1E mov dl, 30

283 0378 BD 0103r mov bp, offset regstring

284 037B B9 0004 mov cx, 4

285 037E E8 00CC call printstr

Turbo Assembler Version 3.1 24/12/00 23:09:51 Page 6

fin.ASM

286 ;---

287

288 ;---

289 0381 8B 1E 0176r mov bx, my_si ;печать si

290 0385 E8 009C call encodeascii

291 0388 B6 01 mov dh, 1

292 038A B2 03 mov dl, 3

293 038C BD 0103r mov bp, offset regstring

294 038F B9 0004 mov cx, 4

295 0392 E8 00B8 call printstr

296 ;---

297

298 ;---

299 0395 8B 1E 0178r mov bx, my_di ;печать di

300 0399 E8 0088 call encodeascii

301 039C B6 01 mov dh, 1

302 039E B2 0C mov dl, 12

303 03A0 BD 0103r mov bp, offset regstring

304 03A3 B9 0004 mov cx, 4

305 03A6 E8 00A4 call printstr

306 ;---

307

308 ;---

309 03A9 8B 1E 017Ar mov bx, my_sp ;печать sp

310 03AD E8 0074 call encodeascii

311 03B0 B6 01 mov dh, 1

312 03B2 B2 15 mov dl, 21

313 03B4 BD 0103r mov bp, offset regstring

314 03B7 B9 0004 mov cx, 4

315 03BA E8 0090 call printstr

316 ;---

317

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее