отчет asm 8 (Готовая лаба №8)

2018-01-09СтудИзба

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

Файл "отчет asm 8" внутри архива находится в папке "Готовая лаба №8". Документ из архива "Готовая лаба №8", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "системное программирование" в общих файлах.

Онлайн просмотр документа "отчет asm 8"

Текст из документа "отчет asm 8"

Защищено:

Гапанюк Ю. Е.

"__"_____________2014 г.

Демонстрация:

Гапанюк Ю. Е.

"__"_____________2014 г.

Отчет по лабораторной работе № 8 по курсу

Системное программирование

Вывод дампа оперативной памяти по введенному адресу

4

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

Вариант № 9

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

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

_____________________

(подпись)

Зайков С.А.

"__"_____________2014 г.

Москва, МГТУ - 2014

_____________________________________________________________________________________________





СОДЕРЖАНИЕ



1. Цель и задание работы 3

2. Блок-схема алгоритма программы 3

3. Листинг кода 4

4. Результаты работы программы 4



1 Цель и задание работы

Разработать и отладить программу на языке Ассемблер для вывода на экран дампа оперативной памяти в шестнадцатеричном виде (распечатки содержимого ОП) по адресу, задаваемому с клавиатуры в шестнадцатеричном виде (адрес FAR - пара чисел, например - 00EF:012A0). Вывод информации на экран производиться как в отладчиках.

2 Блок-схема алгоритма программы

3. Листинг кода

Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 1

lab8.asm

1 0000 text SEGMENT 'CODE'

2 ASSUME CS:text

3 org 100h

4 0100 BEGIN:

5 0100 E9 014E JMP MAIN

6 ;----------------------------------------

7 ;Объявление данных

8 0103 30 31 32 33 34 35 36+ hex_tab DB '0123456789ABCDEF'

9 37 38 39 41 42 43 44+

10 45 46

11 0113 87 A0 A9 AA AE A2 20+ out_str DB 'Зайков Сергей ИУ5-42 Вариант 9','$'

12 91 A5 E0 A3 A5 A9 20+

13 88 93 35 2D 34 32 20+

14 82 A0 E0 A8 A0 AD E2+

15 20 39 24

16 =0010 STR_LEN EQU 16

17 =000F STRINGS EQU 15

18 =00F0 BUF_LEN EQU STR_LEN*STRINGS

19 0132 F0*(00) BUF DB BUF_LEN DUP(0)

20 0222 0000 rBP DW 0

21 0224 0000 rDI DW 0

22 0226 0000 rSI DW 0

23 0228 0000 rSP DW 0

24 022A 0000 rES DW 0

25 022C 0000 rSS DW 0

26 022E 0000 rDS DW 0

27 0230 0000 rCS DW 0

28 0232 0000 DUMP_sm DW 0

29 0234 0000 DUMP_seg DW 0

30 0236 00 EXIT_FL DB 0

31 0237 82 A2 A5 A4 A8 E2 A5+ inp_str DB 'Введите адрес: ','$'

32 20 A0 A4 E0 A5 E1 3A+

33 20 24

34 0247 2710 03E8 0064 000A + coef DW 10000,1000,100,10,1

35 0001

36 ;----------------------------------------

37 0251 MAIN PROC

38 0251 E8 02BD CALL CLRSCR

39 0254 MAIN_LOOP:

40 ;сохранение регистров для выдачи

41 0254 E8 004D CALL SAVE_REG

42 0257 B4 09 MOV AH,09H

43 0259 BA 0237r MOV DX,OFFSET inp_str

44 025C CD 21 INT 21H

45 025E E8 0209 call Input_Near ;Ввод сегментной части адреса

46 0261 2E: 80 3E 0236r 01 cmp EXIT_FL,1

47 0267 74 2B je MAIN_EXIT

48 0269 2E: 89 1E 0234r MOV DUMP_seg,BX

49 026E B2 3A mov dl,':'

50 0270 E8 027E call PUTCH

51 0273 E8 01F4 call Input_Near ;Ввод смещения

52 0276 2E: 80 3E 0236r 01 cmp EXIT_FL,1

53 027C 74 16 je MAIN_EXIT

54 027E 2E: 89 1E 0232r MOV DUMP_sm,BX

55 ;вывод регистров

56 0283 E8 0047 CALL WRITE_REG

57 ;чтение области памяти для дампа

Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 2

lab8.asm

58 0286 E8 015C CALL DUMP_IN

59 ;вывод дампа

60 0289 E8 0177 CALL DUMP_OUT

61 028C E8 026C CALL GETCH_NE

62 028F B9 0002 MOV CX,2

63 0292 E2 C0 LOOP MAIN_LOOP

64 0294 MAIN_EXIT:

65 0294 E8 027A CALL CLRSCR

66 0297 B4 09 MOV AH,09H

67 0299 BA 0113r MOV DX,OFFSET out_str

68 029C CD 21 INT 21H

69 029E E8 0255 CALL GETCH

70 02A1 E8 025C CALL QUIT

71 02A4 MAIN ENDP

72 ;-------------------------------------

73 ; Сохранение регистров

74 ;-------------------------------------

75 02A4 SAVE_REG PROC

76 02A4 2E: 89 2E 0222r MOV rBP,BP

77 02A9 2E: 89 3E 0224r MOV rDI,DI

78 02AE 2E: 89 36 0226r MOV rSI,SI

79 02B3 2E: 89 26 0228r MOV rSP,SP

80 02B8 2E: 8C 06 022Ar MOV rES,ES

81 02BD 2E: 8C 16 022Cr MOV rSS,SS

82 02C2 2E: 8C 1E 022Er MOV rDS,DS

83 02C7 2E: 8C 0E 0230r MOV rCS,CS

84 02CC C3 RET

85 02CD SAVE_REG ENDP

86 ;-------------------------------------

87 ; Вывод регистров

88 ;-------------------------------------

89 02CD WRITE_REG PROC

90 02CD E8 0236 CALL CLRF

91 02D0 B2 43 MOV DL,'C'

92 02D2 E8 021C CALL PUTCH

93 02D5 B2 53 MOV DL,'S'

94 02D7 E8 0217 CALL PUTCH

95 02DA B2 3D MOV DL,'='

96 02DC E8 0212 CALL PUTCH

97 02DF 2E: 8B 16 0230r MOV DX,rCS

98 02E4 E8 01DE CALL HEXW

99 02E7 B2 20 mov dl,' '

100 02E9 E8 0205 call PUTCH

101 02EC B2 44 MOV DL,'D'

102 02EE E8 0200 CALL PUTCH

103 02F1 B2 53 MOV DL,'S'

104 02F3 E8 01FB CALL PUTCH

105 02F6 B2 3D MOV DL,'='

106 02F8 E8 01F6 CALL PUTCH

107 02FB 2E: 8B 16 022Er MOV DX,rDS

108 0300 E8 01C2 CALL HEXW

109 0303 B2 20 mov dl,' '

110 0305 E8 01E9 call PUTCH

111 0308 B2 53 MOV DL,'S'

112 030A E8 01E4 CALL PUTCH

113 030D B2 53 MOV DL,'S'

114 030F E8 01DF CALL PUTCH

Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 3

lab8.asm

115 0312 B2 3D MOV DL,'='

116 0314 E8 01DA CALL PUTCH

117 0317 2E: 8B 16 022Cr MOV DX,rSS

118 031C E8 01A6 CALL HEXW

119 031F B2 20 mov dl,' '

120 0321 E8 01CD call PUTCH

121 0324 B2 45 MOV DL,'E'

122 0326 E8 01C8 CALL PUTCH

123 0329 B2 53 MOV DL,'S'

124 032B E8 01C3 CALL PUTCH

125 032E B2 3D MOV DL,'='

126 0330 E8 01BE CALL PUTCH

127 0333 2E: 8B 16 022Ar MOV DX,rES

128 0338 E8 018A CALL HEXW

129 033B B2 20 mov dl,' '

130 033D E8 01B1 call PUTCH

131 0340 B2 53 MOV DL,'S'

132 0342 E8 01AC CALL PUTCH

133 0345 B2 50 MOV DL,'P'

134 0347 E8 01A7 CALL PUTCH

135 034A B2 3D MOV DL,'='

136 034C E8 01A2 CALL PUTCH

137 034F 2E: 8B 16 0228r MOV DX,rSP

138 0354 E8 016E CALL HEXW

139 0357 B2 20 mov dl,' '

140 0359 E8 0195 call PUTCH

141 035C B2 53 MOV DL,'S'

142 035E E8 0190 CALL PUTCH

143 0361 B2 49 MOV DL,'I'

144 0363 E8 018B CALL PUTCH

145 0366 B2 3D MOV DL,'='

146 0368 E8 0186 CALL PUTCH

147 036B 2E: 8B 16 0226r MOV DX,rSI

148 0370 E8 0152 CALL HEXW

149 0373 B2 20 mov dl,' '

150 0375 E8 0179 call PUTCH

151 0378 B2 44 MOV DL,'D'

152 037A E8 0174 CALL PUTCH

153 037D B2 49 MOV DL,'I'

154 037F E8 016F CALL PUTCH

155 0382 B2 3D MOV DL,'='

156 0384 E8 016A CALL PUTCH

157 0387 2E: 8B 16 0224r MOV DX,rDI

158 038C E8 0136 CALL HEXW

159 038F B2 20 mov dl,' '

160 0391 E8 015D call PUTCH

161 0394 B2 42 MOV DL,'B'

162 0396 E8 0158 CALL PUTCH

163 0399 B2 50 MOV DL,'P'

164 039B E8 0153 CALL PUTCH

165 039E B2 3D MOV DL,'='

166 03A0 E8 014E CALL PUTCH

167 03A3 2E: 8B 16 0222r MOV DX,rBP

168 03A8 E8 011A CALL HEXW

169 03AB E8 0158 CALL CLRF

170 03AE 2E: 8B 16 0234r MOV DX,DUMP_seg

171 03B3 E8 010F CALL HEXW

Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 4

lab8.asm

172 03B6 B2 3A mov dl,':'

173 03B8 E8 0136 call PUTCH

174 03BB 2E: 8B 16 0232r MOV DX,DUMP_sm

175 03C0 E8 0102 CALL HEXW

176 03C3 B2 2D mov dl,'-'

177 03C5 E8 0129 call PUTCH

178 03C8 2E: 8B 16 0234r MOV DX,DUMP_seg

179 03CD E8 00F5 CALL HEXW

180 03D0 B2 3A mov dl,':'

181 03D2 E8 011C call PUTCH

182 03D5 2E: 8B 16 0232r MOV DX,DUMP_sm

183 03DA 81 C2 00F0 ADD DX,BUF_LEN

184 03DE E8 00E4 CALL HEXW

185 03E1 E8 0122 CALL CLRF

186 03E4 C3 RET

187 03E5 WRITE_REG ENDP

188 ;-------------------------------------

189 ; Ввод строки

190 ;-------------------------------------

191 03E5 DUMP_IN PROC

192 03E5 2E: A1 0234r MOV AX,DUMP_seg

193 03E9 50 PUSH AX

194 03EA 07 POP ES

195 03EB 2E: 8B 3E 0232r MOV DI,DUMP_sm

196 03F0 BE 0000 MOV SI,0

197 03F3 B9 00F0 MOV CX,BUF_LEN

198 03F6 DUMP_IN_LOOP:

199 03F6 26: 8A 05 MOV AL,BYTE PTR ES:[DI]

200 03F9 2E: 88 84 0132r MOV BUF[SI],AL ;Занесение символа в буфер

201 03FE 47 INC DI

202 03FF 46 INC SI

203 0400 E2 F4 LOOP DUMP_IN_LOOP

204 0402 C3 RET

205 0403 DUMP_IN ENDP

206 ;-------------------------------------

207 ; Вывод DUMP

208 ;-------------------------------------

209 0403 DUMP_OUT PROC

210 0403 B9 000F MOV CX,STRINGS

211 0406 BE 0000 MOV SI,0

212 0409 DUMP_OUT_LOOP:

213 0409 51 PUSH CX

214 040A E8 0004 CALL STR_OUT

215 040D 59 POP CX

216 040E E2 F9 LOOP DUMP_OUT_LOOP

217 0410 C3 RET

218 0411 DUMP_OUT ENDP

219 ;-------------------------------------

220 ; Вывод строки в DUMP

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

222 0411 STR_OUT PROC

223 ;Вывод адреса

224 0411 2E: 8B 16 0234r MOV DX,DUMP_seg

225 0416 E8 00AC CALL HEXW

226 0419 B2 3A MOV DL,':'

227 041B E8 00D3 CALL PUTCH

228 041E 2E: 8B 16 0232r MOV DX,DUMP_sm

Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 5

lab8.asm

229 0423 03 D6 ADD DX,SI

230 0425 E8 009D CALL HEXW

231 0428 B2 3A MOV DL,':'

232 042A E8 00C4 CALL PUTCH

233 042D B2 20 MOV DL,' '

234 042F E8 00BF CALL PUTCH

235 ;Вывод байтов в шестнадцатиричном виде

236 0432 56 PUSH SI

237 0433 B9 0010 MOV CX,STR_LEN

238 0436 STR_OUT_LOOP:

239 0436 2E: 8A 94 0132r MOV DL,BUF[SI] ;Занесение текущего символа в DL

240 043B 46 INC SI

241 043C E8 00E3 CALL HEX ;Вывод символа в HEX

242 043F B2 20 MOV DL,' '

243 0441 E8 00AD CALL PUTCH ;Вывод пробела

244 0444 E2 F0 LOOP STR_OUT_LOOP

245 0446 B2 3A MOV DL,':'

246 0448 E8 00A6 CALL PUTCH

247 044B B2 20 MOV DL,' '

248 044D E8 00A1 CALL PUTCH

249 ;Вывод в виде символов

250 0450 5E POP SI

251 0451 B9 0010 MOV CX,STR_LEN

252 0454 STR_OUT_LOOP2:

253 0454 2E: 8A 94 0132r MOV DL,BUF[SI] ;Занесение текущего символа в DL

254 0459 46 INC SI

255 045A 80 FA 20 CMP DL,32 ;Код пробела

256 045D 73 02 JAE PRINT

257 045F B2 2A MOV DL,'*'

258 0461 PRINT:

259 0461 E8 008D CALL PUTCH ;Вывод пробела

260 0464 E2 EE LOOP STR_OUT_LOOP2

261 0466 E8 009D CALL CLRF

262 0469 C3 RET

263 046A STR_OUT ENDP

264 ;-------------------------------------

265 ; Перевод near-адреса в двоичное число

266 ;-------------------------------------

267 046A Input_Near PROC

268 046A BD 0000 mov bp,0 ;счетчик введенных символов

269 046D BB 0000 mov bx,0 ;число

270 0470 IN_LOOP:

271 0470 E8 0088 call GETCH_NE

272 0473 8A D0 mov dl,al

273 0475 EB 19 90 jmp CHECK

274

275 0478 SHIFT:

276 0478 E8 0076 call PUTCH

277 047B 58 pop ax

278 047C B4 00 mov ah,0

279 047E D1 E3 D1 E3 D1 E3 D1+ shl bx,4

280 E3

281 0486 03 D8 add bx,ax

282 0488 45 inc bp ;счетчик ввода

283 0489 83 FD 04 cmp bp,4

284 048C 74 36 je EXIT

285 048E EB E0 jmp IN_LOOP

Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 6

lab8.asm

286 0490 CHECK:

287 0490 3C 2A cmp al,'*'

288 0492 75 09 jne NUMBER

289 0494 2E: C6 06 0236r 01 mov EXIT_FL,1

290 049A EB 28 90 jmp EXIT

291 049D NUMBER:

292 ;проверка цифр

293 049D 3C 30 cmp al,'0'

294 049F 72 09 jb BIG

295 04A1 3C 39 cmp al,'9'

296 04A3 77 05 ja BIG

297 04A5 2C 30 sub al,'0' ;AL-число

298 04A7 50 push ax

299 04A8 EB CE jmp SHIFT

300 04AA 3C 41 BIG: cmp al,'A'

301 04AC 72 09 jb SMAL

302 04AE 3C 46 cmp al,'F'

303 04B0 77 05 ja SMAL

304 04B2 2C 37 sub al,'A'-10

305 04B4 50 push ax

306 04B5 EB C1 jmp SHIFT

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