СП - ЛР 9 (1075972)

Файл №1075972 СП - ЛР 9 (Готовая лаба №9)СП - ЛР 9 (1075972)2018-01-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

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

Гапанюк Ю.Е.

"__"_____________2010 г.

Утверждаю:

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

"__"_____________2010 г.

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

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

"Разработка и использование макрокоманд Ассемблера"

8

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

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

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

________________

Сидякин А.А.

"12" апреля 2010 г.



Москва - 2010

__________________________________________________________

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

Разработать собственные макрокоманды Ассемблера и проверить их работу

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

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

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

prgr segment

assume CS:prgr,DS:data ; соответствие сегментных регистров

begin: mov AX,data

mov DS,AX

mov AX,02h

int 10h

PRINT MACRO symb, newl

IFB <symb>

.ERR

%OUT No parameter #1

ENDIF

IFB <newl>

.ERR

%OUT No parameter #2

ENDIF

PER EQU <'Y'>

mov AH,02h

mov DL,symb

int 21h

IFIDN <newl>,PER

mov AH,02h

mov DL,10

int 21h

mov DL,13

int 21h

ENDIF

ENDM

PRINT 'A','Y'

push AX

CALL CLRF

pop AX

MAS MACRO sz, nm, bs, stp

tmp = bs

&nm db bs

rept sz-1

tmp = tmp * stp

db tmp

endm

endm

MAS 6, array, 4, 2

AGREGATE MACRO nam, siz, vrb

local next

XOR CX,CX

mov CL,siz

mov SI,0

XOR BX,BX

next: XOR DX,DX

mov DL,nam[SI]

add BX,DX

inc SI

loop next

mov vrb,BX

endm

AGREGATE array, 6, variable

mov AX,variable

CALL hex2dec

CALL CLRF

CALL CLRF

PRINT_MAS MACRO nme, sze, cnt

local nxt,txn

mov CX,cnt

mov SI,0

nxt: XOR AX,AX

mov AL,nme[SI]

push CX

CALL hex2dec

pop CX

mov AH,02h

mov DL,32

int 21h

inc SI

inc SI

loop nxt

mov SI,1

CALL CLRF

mov DX,sze

sub DX,cnt

mov CX,DX

txn: XOR AX,AX

mov AL,nme[SI]

push CX

CALL hex2dec

pop CX

mov AH,02h

mov DL,32

int 21h

inc SI

inc SI

loop txn

endm

PRINT_MAS array, 6, 3

mov AX,4C00h

int 21h

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

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

mov AH,02h

mov DL,10

int 21h

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

int 21h

RET

CLRF endp

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

hex2dec proc

; делим шестнадцатеричного на 10 до упора

mov CX,0 ; количество цифр в десятичном числе

xor BX,BX ;

xor DX,DX ;

mov BX,10 ; основание системы счисления

dvsn: div BX ; делим AX на BX, результат в AX, остаток в DX

push DX ; скинули остаток в стек

xor DX,DX ; обнулили DX, иначе повлияет на деление

inc CX ; увеличили счётчик количества цифр в числе

test AX,AX ; если пока ещё делится нацело,

jnz dvsn ; то делим ещё раз

; вывод десятичного числа поциферно

mov AH,02h

ot: pop DX ; подняли первую цифру десятичного числа

add DX,'0' ; получили её ASCII-код

int 21h ; вывели на экран

loop ot ; повторять CX раз (по количеству цифр)

RET

hex2dec endp

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

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

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

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

variable dw 0

hx db 2 dup (32)

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

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

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

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

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

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

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

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

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

Turbo Assembler Version 2.51 12/04/10 00:37:56 Page 1

lr9.ASM

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

2 ;===============================================================================

3 0000 prgr segment

4

5 assume CS:prgr,DS:data

6

7 0000 B8 0000s begin: mov AX,data

8 0003 8E D8 mov DS,AX

9

10 0005 B8 0002 mov AX,02h

11 0008 CD 10 int 10h

12

13 PRINT MACRO symb, newl

14 IFB <symb>

15 .ERR

16 %OUT No parameter #1

17 ENDIF

18 IFB <newl>

19 .ERR

20 %OUT No parameter #2

21 ENDIF

22 PER EQU <'Y'>

23 mov AH,02h

24 mov DL,symb

25 int 21h

26 IFIDN <newl>,PER

27 mov AH,02h

28 mov DL,10

29 int 21h

30 mov DL,13

31 int 21h

32 ENDIF

33 ENDM

34

35 PRINT 'A','Y'

1 36 000A B4 02 mov AH,02h

1 37 000C B2 41 mov DL,'A'

1 38 000E CD 21 int 21h

1 39 0010 B4 02 mov AH,02h

1 40 0012 B2 0A mov DL,10

1 41 0014 CD 21 int 21h

1 42 0016 B2 0D mov DL,13

1 43 0018 CD 21 int 21h

44

45 001A 50 push AX

46 001B E8 0071 CALL CLRF

47 001E 58 pop AX

48

49 MAS MACRO sz, nm, bs, stp

50 tmp = bs

51 &nm db bs

52 rept sz-1

53 tmp = tmp * stp

54 db tmp

55 endm

56 endm

57

58 MAS 6, array, 4, 2

1 59 001F 04 array db 4

2 60 0020 08 db tmp

2 61 0021 10 db tmp

2 62 0022 20 db tmp

2 63 0023 40 db tmp

2 64 0024 80 db tmp

65

66 AGREGATE MACRO nam, siz, vrb

67 local next

68 XOR CX,CX

69 mov CL,siz

70 mov SI,0

71 XOR BX,BX

72 next: XOR DX,DX

73 mov DL,nam[SI]

74 add BX,DX

75 inc SI

76 loop next

77 mov vrb,BX

78 endm

79

80 AGREGATE array, 6, variable

1 81 0025 33 C9 XOR CX,CX

1 82 0027 B1 06 mov CL,6

1 83 0029 BE 0000 mov SI,0

1 84 002C 33 DB XOR BX,BX

1 85 002E 33 D2 ??0000: XOR DX,DX

1 86 0030 2E: 8A 94 001Fr mov DL,array[SI]

1 87 0035 03 DA add BX,DX

1 88 0037 46 inc SI

1 89 0038 E2 F4 loop ??0000

1 90 003A 89 1E 0000r mov variable,BX

91 003E A1 0000r mov AX,variable

92 0041 E8 0056 CALL hex2dec

93 0044 E8 0048 CALL CLRF

94

95 0047 E8 0045 CALL CLRF

96 PRINT_MAS MACRO nme, sze, cnt

97 local nxt,txn

98 mov CX,cnt

99 mov SI,0

100 nxt: XOR AX,AX

101 mov AL,nme[SI]

102 push CX

103 CALL hex2dec

104 pop CX

105 mov AH,02h

106 mov DL,32

107 int 21h

108 inc SI

109 inc SI

110 loop nxt

111 mov SI,1

112 CALL CLRF

113 mov DX,sze

114 sub DX,cnt

115 mov CX,DX

116 txn: XOR AX,AX

117 mov AL,nme[SI]

118 push CX

119 CALL hex2dec

120 pop CX

121 mov AH,02h

122 mov DL,32

123 int 21h

124 inc SI

125 inc SI

126 loop txn

127 endm

128

129 PRINT_MAS array, 6, 3

1 130 004A B9 0003 mov CX,3

1 131 004D BE 0000 mov SI,0

1 132 0050 33 C0 ??0001: XOR AX,AX

1 133 0052 2E: 8A 84 001Fr mov AL,array[SI]

1 134 0057 51 push CX

1 135 0058 E8 003F CALL hex2dec

1 136 005B 59 pop CX

1 137 005C B4 02 mov AH,02h

1 138 005E B2 20 mov DL,32

1 139 0060 CD 21 int 21h

1 140 0062 46 inc SI

1 141 0063 46 inc SI

1 142 0064 E2 EA loop ??0001

1 143 0066 BE 0001 mov SI,1

1 144 0069 E8 0023 CALL CLRF

1 145 006C BA 0006 mov DX,6

1 146 006F 83 EA 03 sub DX,3

1 147 0072 8B CA mov CX,DX

1 148 0074 33 C0 ??0002: XOR AX,AX

1 149 0076 2E: 8A 84 001Fr mov AL,array[SI]

1 150 007B 51 push CX

1 151 007C E8 001B CALL hex2dec

1 152 007F 59 pop CX

1 153 0080 B4 02 mov AH,02h

1 154 0082 B2 20 mov DL,32

1 155 0084 CD 21 int 21h

1 156 0086 46 inc SI

1 157 0087 46 inc SI

1 158 0088 E2 EA loop ??0002

159

160 008A B8 4C00 mov AX,4C00h

161 008D CD 21 int 21h

162

163 008F CLRF proc

164 008F B4 02 mov AH,02h

165 0091 B2 0A mov DL,10

166 0093 CD 21 int 21h

167 0095 B2 0D mov DL,13

168 0097 CD 21 int 21h

169 0099 C3 RET

170 009A CLRF endp

171

172 009A hex2dec proc

173

174 009A B9 0000 mov CX,0

175 009D 33 DB xor BX,BX

176 009F 33 D2 xor DX,DX

177 00A1 BB 000A mov BX,10

178 00A4 F7 F3 dvsn: div BX

179 00A6 52 push DX

180 00A7 33 D2 xor DX,DX

181 00A9 41 inc CX

182 00AA 85 C0 test AX,AX

183 00AC 75 F6 jnz dvsn

184

185 00AE B4 02 mov AH,02h

186 00B0 5A ot: pop DX

187 00B1 83 C2 30 add DX,'0'

188 00B4 CD 21 int 21h

189 00B6 E2 F8 loop ot

190 00B8 C3 RET

191 00B9 hex2dec endp

192

193 00B9 prgr ends

194

195 0000 data segment

196 0000 0000 variable dw 0

197 0002 02*(20) hx db 2 dup (32)

198 0004 data ends

199

200 0000 stk segment stack

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

202 0100 stk ends

203

204 end begin

Symbol Name Type Value

??0000 Near PRGR:002E

??0001 Near PRGR:0050

??0002 Near PRGR:0074

??DATE Text "12/04/10"

??FILENAME Text "lr9 "

??TIME Text "00:37:56"

??VERSION Number 0205

@CPU Text 0101H

@CURSEG Text STK

@FILENAME Text LR9

@WORDSIZE Text 2

ARRAY Byte PRGR:001F

BEGIN Near PRGR:0000

CLRF Near PRGR:008F

DVSN Near PRGR:00A4

HEX2DEC Near PRGR:009A

HX Byte DATA:0002

OT Near PRGR:00B0

PER Text 'Y'

TMP Number 0080

VARIABLE Word DATA:0000

Macro Name

AGREGATE

MAS

PRINT

PRINT_MAS

Groups & Segments Bit Size Align Combine Class

DATA 16 0004 Para none

PRGR 16 00B9 Para none

STK 16 0100 Para Stack

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

A

252

4 16 64

8 32 128

Характеристики

Тип файла
Документ
Размер
72,5 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лабораторной работы

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