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

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

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

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

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

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

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

Гапанюк Ю.Е.

"__"_____________2010 г.

Утверждаю:

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

"__"_____________2010 г.

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

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

"Перевод символов в шестнадцатеричный вид"

7

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

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

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

________________

Сидякин А.А.

"15" марта 2010 г.



Москва - 2010

__________________________________________________________

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

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

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

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

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

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 DX,DS ; дополнительный сегмент данных

mov ES,DX ; через перевалочный DX

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

mov CX,20 ; число шагов в цикле

mov AX,0041h ; число для перевода записывается в AL

trscd:

CALL HEX

push AX ; скинуть в стек содержимое AX

push BX

CALL PUTCH

pop BX

pop AX ; восстановить значение AX из стека

mov AH,00 ; затереть старшую часть AX

inc AX ; перейти к следующей букве

loop trscd ; на новый круг цикла

CALL CLRF

;mov AH,09h

;mov DX,offset msg

;int 21

CALL GETCH

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

int 10h

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

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

int 21h

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

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

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

int 21h

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

GETCH endp

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

PUTCH proc ; процедура вывода на экран символа

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

mov DL,AL

int 21h

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

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

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

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

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

push CX

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

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

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

pop CX

CALL CLRF

RET

PUTCH 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

mov SI,0 ; начинаем с 0-го (первого) элемента

push AX

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

shr AX, 1

shr AX, 1

shr AX, 1

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

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

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

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

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

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

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

pop AX

RET

HEX endp

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

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

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

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

hextb db '0123456789ABCDEF'

hexdgt db 2 dup ('*')

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

def db ' - $'

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

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

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

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

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

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

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

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

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

Turbo Assembler Version 2.51 14/03/10 22:55:38 Page 1

lr4.ASM

1

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 8C DA mov DX,DS

15 000C 8E C2 mov ES,DX

16

17 000E BB 0000r mov BX,offset hextb

18 0011 B9 0014 mov CX,20

19 0014 B8 0041 mov AX,0041h

20 0017 trscd:

21 0017 E8 004C CALL HEX

22 001A 50 push AX

23 001B E8 001B CALL PUTCH

24 001E 58 pop AX

25 001F B4 00 mov AH,00

26 0021 40 inc AX

27 0022 E2 F3 loop trscd

28

29 0024 E8 0032 CALL CLRF

30

31

32

33

34

35 0027 E8 000A CALL GETCH

36

37 002A B8 0002 mov AX,02h

38 002D CD 10 int 10h

39

40 002F B8 4C00 mov AX,4C00h

41

42 0032 CD 21 int 21h

43

44 0034 GETCH proc

45 0034 B4 01 mov AH,01h

46 0036 CD 21 int 21h

47 0038 C3 RET

48 0039 GETCH endp

49

50 0039 PUTCH proc

51 0039 B4 02 mov AH,02h

52 003B 8A D0 mov DL,AL

53 003D CD 21 int 21h

54 003F B4 09 mov AH,09h

55 0041 BA 0012r mov DX,offset def

56 0044 CD 21 int 21h

57 0046 B4 40 mov AH,40h

58 0048 BB 0001 mov BX,1

59 004B 51 push CX

60 004C B9 0002 mov CX,2

61 004F BA 0010r mov DX,offset hexdgt

62 0052 CD 21 int 21h

63 0054 59 pop CX

64 0055 E8 0001 CALL CLRF

65 0058 C3 RET

66 0059 PUTCH endp

67

68 0059 CLRF proc

69 0059 B4 02 mov AH,02h

70 005B B2 0A mov DL,10

71 005D CD 21 int 21h

72 005F B4 02 mov AH,02h

73 0061 B2 0D mov DL,13

74 0063 CD 21 int 21h

75 0065 C3 RET

76 0066 CLRF endp

77

78 0066 HEX proc

79 0066 50 push AX

80 0067 BE 0000 mov SI,0

81 006A 50 push AX

82 006B D0 E8 shr AL, 1

83 006D D1 E8 shr AX, 1

84 006F D1 E8 shr AX, 1

85 0071 D1 E8 shr AX, 1

86 0073 D7 XLAT

87 0074 88 84 0010r mov hexdgt[SI],AL

88 0078 46 inc SI

89 0079 58 pop AX

90 007A 24 0F and AL, 00001111b

91 007C D7 XLAT

92 007D 88 84 0010r mov hexdgt[SI],AL

93 0081 58 pop AX

94 0082 C3 RET

95 0083 HEX endp

96

97 0083 prgr ends

98

99 0000 data segment

100

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

102 37 38 39 41 42 43 44+

103 45 46

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

105

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

107

108 0016 data ends

109

110 0000 stk segment stack

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

112 0100 stk ends

113

114 end begin

Symbol Name Type Value

??DATE Text "14/03/10"

??FILENAME Text "lr4 "

??TIME Text "22:55:38"

??VERSION Number 0205

@CPU Text 0101H

@CURSEG Text STK

@FILENAME Text LR4

@WORDSIZE Text 2

BEGIN Near PRGR:0000

CLRF Near PRGR:0059

DEF Byte DATA:0012

GETCH Near PRGR:0034

HEX Near PRGR:0066

HEXDGT Byte DATA:0010

HEXTB Byte DATA:0000

PUTCH Near PRGR:0039

TRSCD Near PRGR:0017

Groups & Segments Bit Size Align Combine Class

DATA 16 0016 Para none

PRGR 16 0083 Para none

STK 16 0100 Para Stack

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

A - 41

B - 42

C - 43

D - 44

E - 45

F - 46

G - 47

H - 48

I - 49

J - 4A

K - 4B

L - 4C

M - 4D

N - 4E

O - 4F

P - 50

Q - 51

R - 52

S - 53

T - 54

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

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