СПО_Лабораторная_№5

реклама
Федеральное агентство по образованию
ГОУ ВПО
«Российский химико-технологический университет
имени Д.И. Менделеева»
Новомосковский институт (филиал)
Кафедра ВТИТ
Предмет «Системное программное обеспечение»
Лабораторная работа №5
Студент: Кривогуз А.Н.
Группа: АС-08-02
Преподаватель: Силин В.В.
Выполнение:
Защита:
Новомосковск 2010
Цель работы:
Ввести с клавиатуры строку символов. Длина строки не менее 20 символов,
содержащую латиницу, кириллицу, символы, знаки. Нечетные варианты
преобразуют прописные латинские в строчные латинские, четные варианты
наоборот. Все остальные варианты оставить без изменений.
Листинг:
1
;laba 5
2 0000
CSEG segment
3
assume CS:CSEG, DS:CSEG, SS:CSEG, ES: CSEG
4
org 100h
5 0100
Begin:
6 0100 E8 0031
call ClrScr
; очистка экрана
7 0103 8D 2E 0164r
lea bp, Message
8 0107 E8 0042
call PrintS
; вывод строки в указанную позицию
9
10
;преобразование символов из прописных в строчные
11 010A 8D 36 0164r
lea si, Message
; загрузить адрес строки
12 010E B9 000D
mov cx, 13
; количество повторений
13 0111 8A 1C
lab: mov bl, byte ptr [si] ; присваиваем регистру bl значение si
14 0113 B2 41
mov dl, 'A'
; в dl первый символ для сравнения
15 0115 3A DA
sim: cmp bl, dl
; сравниваем символ из строки с
16
прописным символом таблицы
17 0117 74 09
jz
preobr
; если символы равны, то переход на
18
метку preobr
19 0119 FE C2
inc dl
; переход к следующему символу таблицы
20 011B 80 FA 5B
cmp dl, 'Z'+1
; сравнение значения dx с символом
21
после Z
22 011E 74 07
jz
next
; если символ равен символу после Z, то
23
переходим к следующему символу строки
24 0120 EB F3
jmp sim
25 0122 80 C3 20
preobr: add bl, 32
; преобразование из прописного в строчный
26 0125 88 1C
mov byte ptr [si], bl
; сохранение измененного символа
27 0127 46
next: inc si
; переход к следующему символу строки
28 0128 E2 E7
loop lab
; переходим по метке
29
30 012A B4 09
mov ah, 09
31 012C 8D 16 0164r
lea dx, Message
32 0130 CD 21
int 21h
33 0132 CD 20
int 20h
34
35
; процедуры
36
37
;процедура очистки экрана
38 0134
ClrScr
proc
39 0134 50
push ax
40 0135 53
push bx
41 0136 51
push cx
42 0137 52
push dx
43 0138 B4 06
mov ah, 6
;прокрутка экрана вверх
44 013A B0 00
mov al, 0
;0-заполняет весь экран пробелами
45 013C B9 0000
mov cx, 0
;верхний левый угол 0,0
46 013F B6 18
mov dh, 24 ;номер строки нижнего правого угла
47 0141 B2 4F
mov dl, 79
;номер столбца нижнего правого угла
48 0143 B7 07
mov bh, 7
;атрибут экрана черно-белый
49 0145 CD 10
int
10h
50 0147 5A
pop dx
51 0148 59
pop cx
52 0149 5B
pop
bx
53 014A 58
pop
ax
54 014B C3
Ret
55 014C
ClrScr EndP
56
; процедура установки курсора в 6 строку 19 столбец
57 014C
PrintS
proc
58 014C 50
push ax
59 014D 53
push bx
60 014E 51
push cx
61 014F 52
push dx
62 0150 B4 13
mov ah, 13h
;вывести строку символов
63 0152 B0 00
mov al, 0
;режим вывода
64 0154 B9 000D
mov cx, 13
;число выводимых символов
65 0157 B3 0F
mov bl, 0Fh
;цвет выводимых символов (белый на
черном фоне)
66 0159 B6 06
mov dh, 6
;номер строки
67 015B B2 13
mov dl, 19
;номер столбца
68 015D CD 10
int
10h
69 015F 5A
pop dx
70 0160 59
pop
cx
71 0161 5B
pop bx
72 0162 58
pop ax
73 0163 C3
Ret
74 0164
PrintS EndP
75
76
; данные
77 0164 48 65 4C 4C 6F 2C 20 +
Message db 'HeLLo, WOrLD!$'
78
57 4F 72 4C 44 21 24
79
80 0172
CSEG ends
81
end Begin
Скачать