СП - ЛР 3 (1075948)
Текст из файла
Согласовано: Гапанюк Ю.Е. "__"_____________2010 г. | Утверждаю: Большаков С.А. "__"_____________2010 г. |
Лабораторная работа №3 по курсу
Системное программирование
"Вывод трёх символов"
6
(количество листов)
с дополнительными требованиям
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-41 | ________________ |
Сидякин А.А. | "14" марта 2010 г. |
Москва - 2010
__________________________________________________________
Цель лабораторной работы:
Разработать и отладить программу на языке Ассемблер для вывода на экран трех первых заглавных латинских букв (A,B,C), на трех отдельных строках дисплея подряд
Исходный текст программы:
; Лабораторная работа №3
;===============================================================================
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 ; прерывание BIOS по управлению дисплеем
mov DL,symb1 ; помещение в регистр DL адреса переменной
CALL PUTCH ; вызов процедуры
CALL CLRF
mov DL,symb2
CALL PUTCH
CALL CLRF
mov DL,symb3
CALL PUTCH
CALL CLRF
mov AH,09h ; функция DOS вывода на экран строки
mov DX,offset msg ; адреса строки содержится в DX
int 21h ; прерывание, вызывающее DOS
CALL GETCH
mov AX,02h
int 10h
mov AH,4Ch ; функция 4Ch завершения программы
mov AL,0 ; код 0 успешного завершения
int 21h
; ------------------------------------------------------------------------------
GETCH proc ; процедура ввода символа
mov AH,01h ; функция DOS ожидания символа из стандартного ввода
int 21h
RET ; выход из процедуры
GETCH endp
; ------------------------------------------------------------------------------
PUTCH proc ; процедура вывода на экран символа
mov AH,02h ; функция DOS вывода на экран символа
int 21h
RET
PUTCH endp
; ------------------------------------------------------------------------------
CLRF proc ; процедура переноса строки и возврата каретки
mov AH,02h
mov DL, 10
int 21h
mov DL, 13
int 21h
RET
CLRF endp
; ------------------------------------------------------------------------------
prgr ends ; конец сегмента команд
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
data segment ; начало сегмента данных
symb1 db 65 ; объявление и инициализация переменной
symb2 db 66
symb3 db 67
msg db 'Press any key to exit... $'
data ends ; конец сегмента данных
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
stk segment stack ; начало сегмента стека
db 256 dup (0) ; резервирование 256 байт для стека
stk ends ; конец сегмента стека
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
end begin ; конец текста программы, установка точки входа
;===============================================================================
Листинг программы:
Turbo Assembler Version 2.51 13/03/10 23:16:35 Page 1
lr3.ASM
1
2
3 0000 prgr segment
4 assume CS:prgr, DS:data
6 0000 B8 0000s begin: mov AX,data
7
8 0003 8E D8 mov DS,AX
9
10 0005 B8 0002 mov AX,02h
11 0008 CD 10 int 10h
12
13 000A 8A 16 0000r mov DL,symb1
14 000E E8 0031 CALL PUTCH
15 0011 E8 0033 CALL CLRF
16 0014 8A 16 0001r mov DL,symb2
17 0018 E8 0027 CALL PUTCH
18 001B E8 0029 CALL CLRF
19 001E 8A 16 0002r mov DL,symb3
20 0022 E8 001D CALL PUTCH
21 0025 E8 001F CALL CLRF
22 0028 B4 09 mov AH,09h
23 002A BA 0003r mov DX,offset msg
24 002D CD 21 int 21h
25 002F E8 000B CALL GETCH
26
27 0032 B8 0002 mov AX,02h
28 0035 CD 10 int 10h
29
30 0037 B4 4C mov AH,4Ch
31 0039 B0 00 mov AL,0
32 003B CD 21 int 21h
33
34 003D GETCH proc
35 003D B4 01 mov AH,01h
36 003F CD 21 int 21h
37 0041 C3 RET
38 0042 GETCH endp
39
40 0042 PUTCH proc
41 0042 B4 02 mov AH,02h
42 0044 CD 21 int 21h
43 0046 C3 RET
44 0047 PUTCH endp
45
46 0047 CLRF proc
47 0047 B4 02 mov AH,02h
48 0049 B2 0A mov DL, 10
49 004B CD 21 int 21h
50 004D B2 0D mov DL, 13
51 004F CD 21 int 21h
52 0051 C3 RET
53 0052 CLRF endp
54
55 0052 prgr ends
56
57 0000 data segment
58 0000 41 symb1 db 65
59 0001 42 symb2 db 66
60 0002 43 symb3 db 67
61 0003 50 72 65 73 73 20 61+ msg db 'Press any key to exit... $'
62 6E 79 20 6B 65 79 20+
63 74 6F 20 65 78 69 74+
64 2E 2E 2E 20 24
65 001D data ends
66
67 0000 stk segment stack
68 0000 0100*(00) db 256 dup (0)
69 0100 stk ends
70
71 end begin
Symbol Name Type Value
??DATE Text "13/03/10"
??FILENAME Text "lr3 "
??TIME Text "23:16:35"
??VERSION Number 0205
@CPU Text 0101H
@CURSEG Text STK
@FILENAME Text LR3
@WORDSIZE Text 2
BEGIN Near PRGR:0000
CLRF Near PRGR:0047
GETCH Near PRGR:003D
MSG Byte DATA:0003
PUTCH Near PRGR:0042
SYMB1 Byte DATA:0000
SYMB2 Byte DATA:0001
SYMB3 Byte DATA:0002
Groups & Segments Bit Size Align Combine Class
DATA 16 001D Para none
PRGR 16 0052 Para none
STK 16 0100 Para Stack
Результат работы программы:
A
B
C
Press any key to exit...
Блок-схема программы:
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.