СП - ЛР 5 (Готовая лаба №5)

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

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

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

Онлайн просмотр документа "СП - ЛР 5"

Текст из документа "СП - ЛР 5"

Согласовано:

Гапанюк Ю.Е.

"__"_____________2010 г.

Утверждаю:

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

"__"_____________2010 г.

Лабораторная работа №5 по курсу

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

"Ввод строки и вывод в машинном формате"

9

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

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

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

________________

Сидякин А.А.

"20" марта 2010 г.



Москва - 2010

__________________________________________________________

Цель лабораторной работы:

Разработать и отладить программу на языке Ассемблер для ввода строки символов с клавиатуры (последовательности символов) и вывода их в шестнадцатеричном представлении (через пробел)

Исходный текст программы:

; Лабораторная работа №5

;===============================================================================

prgr segment ; начало сегмента команд

assume CS:prgr, DS:data ; сегментный регистр CS - сегмент команд

; сегментный регистр DS - сегмент данных

begin: mov AX,data ; адрес сегмента данных сначала загрузить в AX

; так как нельзя загрузить сразу напрямую в DS

mov DS,AX ; теперь из AX загружаем в DS

mov AX,02h ; очистка экрана

int 10h

mov AH,09h ; функция DOS вывода на экран строки

mov DX,offset greet ; адреса строки содержится в DX

int 21h ; прерывание, вызывающее DOS

CALL CLRF

mov AH,09h

mov DX,offset defl

int 21h

CALL CLRF

mov AH,02h ; запись функции DOS вывода символа

mov DL,36 ; запись кода символа новой строки

int 21h

mov AH,09h

mov DX,offset info1

int 21h

CALL CLRF

mov AH,09h

mov DX,offset info2

int 21h

CALL CLRF

CALL CLRF

mov BX,offset hextb ; указатель DS:BX на таблицу для XLAT

inp: mov CX,4 ; максимальная длина вводимой строки

mov SI,3 ; пропускаем 3 символа (пробел, =, пробел)

trsc: CALL GETCH

cmp AL,'$' ; если введено $,

JE enst ; то ввод строки закончен

cmp SI,3 ; если сейчас был введён первый символ,

JE chck ; то пойдём проверять

kego: CALL HEX

inc SI

loop trsc

enst: push BX

mov AH,40h ; функция DOS вывода на экран строки

mov BX,1 ; дескриптор экрана

push CX

dec SI

mov CX,SI ; число выводимых байтов

mov DX,offset line ; адрес строки содержится в DX

int 21h ; прерывание, вызывающее DOS

mov CX,11 ; до конца преобразованной строки

mov SI,3 ; начиная с после пробела после =

clr: mov line[SI],32 ; вписать пробел

inc SI ; следующий элемент строки

loop clr

pop CX

pop BX

mov CX,4 ; предотвращение ошибочного завершения ввода строк

CALL CLRF

loop inp

fin: CALL CLRF

CALL CLRF

mov AH,09h ; функция DOS вывода на экран строки

mov DX,offset msg ; адреса строки содержится в DX

int 21h ; прерывание, вызывающее DOS

CALL GETCH

mov AX,02h ; очистка экрана

int 10h

mov AX,4C00h ; функция DOS 4Ch завершения программы

; код 0 успешного завершения

int 21h

chck: cmp AL,'*' ; если введено *,

JE fin ; то шабаш,

JNE kego ; инче (just 'инче') продолжаем ввод

; ------------------------------------------------------------------------------

GETCH proc ; процедура ввода символа

mov AH,01h ; функция DOS ожидания символа из стандартного ввода

int 21h

RET ; выход из процедуры

GETCH endp

; ------------------------------------------------------------------------------

CLRF proc ; процедура переноса строки и возврата каретки

mov AH,02h ; запись функции DOS вывода символа

mov DL,10 ; запись кода символа новой строки

int 21h

mov AH,02h ; запись функции DOS вывода символа (на всякий)

mov DL,13 ; запись символа возврата каретки

int 21h

RET

CLRF endp

; ------------------------------------------------------------------------------

HEX proc ; процедура перевода из DEC в HEX

push AX

shr AL, 1 ; сдвигаем вправо на 1 разряд

shr AL, 1

shr AL, 1

shr AL, 1

XLAT ; записываем ASCII код в AL

mov line[SI],AL

inc SI ; перейти ко второму элементу массива

pop AX ; восстанавить число

and AL, 00001111b ; маскировка старшей цифры

XLAT ; записать ASCII код в AL

mov line[SI],AL ; поместить это значение во второй элемент массива

inc SI

mov AL,45

mov line[SI],AL

RET

HEX endp

; ------------------------------------------------------------------------------

prgr ends ; конец сегмента команд

; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

data segment ; начало сегмента данных

hextb db '0123456789ABCDEF'

hexdgt db 2 dup ('*')

def db ' - $'

line db 14 dup (' = ')

msg db 'Press any key to exit... $'

greet db 'Type any chars, maximum length - 4$'

defl db '----------------------------------$'

info1 db ' - end of string$'

info2 db '* - end of input$'

data ends ; конец сегмента данных

; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

stk segment stack ; начало сегмента стека

db 256 dup (0) ; резервирование 256 байт для стека

stk ends ; конец сегмента стека

; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

end begin ; конец текста программы, установка точки входа

;===============================================================================

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

Turbo Assembler Version 2.51 20/03/10 13:40:45 Page 1

lr5.ASM

1 ; Лабораторная работа №5

2

3 0000 prgr segment

4

5 assume CS:prgr, DS:data

6

7 0000 B8 0000s begin: mov AX,data

8

9 0003 8E D8 mov DS,AX

10

11 0005 B8 0002 mov AX,02h

12 0008 CD 10 int 10h

13

14 000A B4 09 mov AH,09h

15 000C BA 005Ar mov DX,offset greet

16 000F CD 21 int 21h

17 0011 E8 00AF CALL CLRF

18 0014 B4 09 mov AH,09h

19 0016 BA 007Dr mov DX,offset defl

20 0019 CD 21 int 21h

21 001B E8 00A5 CALL CLRF

22 001E B4 02 mov AH,02h

23 0020 B2 24 mov DL,36

24 0022 CD 21 int 21h

25 0024 B4 09 mov AH,09h

26 0026 BA 00A0r mov DX,offset info1

27 0029 CD 21 int 21h

28 002B E8 0095 CALL CLRF

29 002E B4 09 mov AH,09h

30 0030 BA 00B1r mov DX,offset info2

31 0033 CD 21 int 21h

32 0035 E8 008B CALL CLRF

33 0038 E8 0088 CALL CLRF

34

35 003B BB 0000r mov BX,offset hextb

36

37

38 003E B9 0004 inp: mov CX,4

39 0041 BE 0003 mov SI,3

40 0044 E8 0057 trsc: CALL GETCH

41 0047 3C 24 cmp AL,'$'

42 0049 74 0B JE enst

43 004B 83 FE 03 cmp SI,3

44 004E 74 48 JE chck

45 0050 E8 007D kego: CALL HEX

46 0053 46 inc SI

47 0054 E2 EE loop trsc

48

49 0056 53 enst: push BX

50 0057 B4 40 mov AH,40h

51 0059 BB 0001 mov BX,1

52 005C 51 push CX

53 005D 4E dec SI

54 005E 8B CE mov CX,SI

55 0060 BA 0016r mov DX,offset line

56 0063 CD 21 int 21h

57

58 0065 B9 000B mov CX,11

59 0068 BE 0003 mov SI,3

60 006B C6 84 0016r 20 90 clr: mov line[SI],32

61 0071 46 inc SI

62 0072 E2 F7 loop clr

63

64 0074 59 pop CX

65 0075 5B pop BX

66 0076 B9 0004 mov CX,4

67 0079 E8 0047 CALL CLRF

68 007C E2 C0 loop inp

69

70 007E E8 0042 fin: CALL CLRF

71 0081 E8 003F CALL CLRF

72 0084 B4 09 mov AH,09h

73 0086 BA 0040r mov DX,offset msg

74 0089 CD 21 int 21h

75 008B E8 0010 CALL GETCH

76

77 008E B8 0002 mov AX,02h

78 0091 CD 10 int 10h

79

80 0093 B8 4C00 mov AX,4C00h

81

82 0096 CD 21 int 21h

83

84 0098 3C 2A chck: cmp AL,'*'

85 009A 74 E2 JE fin

86 009C 75 B2 JNE kego

87

88

89 009E GETCH proc

90 009E B4 01 mov AH,01h

91 00A0 CD 21 int 21h

92 00A2 C3 RET

93 00A3 GETCH endp

94

95

96 00C3 CLRF proc

97 00C3 B4 02 mov AH,02h

98 00C5 B2 0A mov DL,10

99 00C7 CD 21 int 21h

100 00C9 B4 02 mov AH,02h

101 00CB B2 0D mov DL,13

102 00CD CD 21 int 21h

103 00CF C3 RET

104 00D0 CLRF endp

105

106 00D0 HEX proc

107 00D0 50 push AX

108 00D1 D0 E8 shr AL, 1

109 00D3 D0 E8 shr AL, 1

110 00D5 D0 E8 shr AL, 1

111 00D7 D0 E8 shr AL, 1

112 00D9 D7 XLAT

113 00DA 88 84 0016r mov line[SI],AL

114 00DE 46 inc SI

115 00DF 58 pop AX

116 00E0 24 0F and AL, 00001111b

117 00E2 D7 XLAT

118 00E3 88 84 0016r mov line[SI],AL

119 00E7 46 inc SI

120 00E8 B0 2D mov AL,45

121 00EA 88 84 0016r mov line[SI],AL

122 00EE C3 RET

123 00EF HEX endp

124

125 00EF prgr ends

126

127 0000 data segment

128

129 0000 30 31 32 33 34 35 36+ hextb db '0123456789ABCDEF'

130 37 38 39 41 42 43 44+

131 45 46

132 0010 02*(2A) hexdgt db 2 dup ('*')

133 0012 20 2D 20 24 def db ' - $'

134 0016 0E*(20 3D 20) line db 14 dup (' = ')

135 0040 50 72 65 73 73 20 61+ msg db 'Press any key to exit.. $'

136 6E 79 20 6B 65 79 20+

137 74 6F 20 65 78 69 74+

138 2E 2E 2E 20 24

139 005A 54 79 70 65 20 61 6E+ greet db 'Type any chars, maximum 4$'

140 79 20 63 68 61 72 73+

141 2C 20 6D 61 78 69 6D+

142 75 6D 20 6C 65 6E 67+

143 74 68 20 2D 20 34 24

144 007D 2D 2D 2D 2D 2D 2D 2D+ defl db '------------------------$'

145 2D 2D 2D 2D 2D 2D 2D+

146 2D 2D 2D 2D 2D 2D 2D+

147 2D 2D 2D 2D 2D 2D 2D+

148 2D 2D 2D 2D 2D 2D 24

149 00A0 20 2D 20 65 6E 64 20+ info1 db ' – end of string$'

150 6F 66 20 73 74 72 69+

151 6E 67 24

152 00B1 2A 20 2D 20 65 6E 64+ info2 db '* - end of input$'

153 20 6F 66 20 69 6E 70+

154 75 74 24

155

156 00C2 data ends

157

158 0000 stk segment stack

159 0000 0100*(00) db 256 dup (0)

160 0100 stk ends

161

162 end begin

Symbol Name Type Value

??DATE Text "20/03/10"

??FILENAME Text "lr5 "

??TIME Text "13:40:45"

??VERSION Number 0205

@CPU Text 0101H

@CURSEG Text STK

@FILENAME Text LR5

@WORDSIZE Text 2

BEGIN Near PRGR:0000

CHCK Near PRGR:0098

CLR Near PRGR:006B

CLRF Near PRGR:00C3

DEF Byte DATA:0012

DEFL Byte DATA:007D

ENST Near PRGR:0056

FIN Near PRGR:007E

GETCH Near PRGR:009E

GREET Byte DATA:005A

HEX Near PRGR:00D0

HEXDGT Byte DATA:0010

HEXTB Byte DATA:0000

INFO1 Byte DATA:00A0

INFO2 Byte DATA:00B1

INP Near PRGR:003E

KEGO Near PRGR:0050

LINE Byte DATA:0016

MSG Byte DATA:0040

PUTCH Near PRGR:00A3

TRSC Near PRGR:0044

Groups & Segments Bit Size Align Combine Class

DATA 16 00C2 Para none

PRGR 16 00EF Para none

STK 16 0100 Para Stack

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

Type any chars, maximum length - 4

----------------------------------

$ - end of string

* - end of input

AAaA = 41-41-61-41

ABCD = 41-42-43-44

abcd = 61-62-63-64

asfl = 61-73-66-6C

sd$ = 73-64

dfgg = 64-66-67-67

hee* = 68-65-65-2A

$ =

q$ = 71

f**k = 66-2A-2A-6B

gtyy = 67-74-79-79

*

Press any key to exit...

Блок-схема программы:

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