- •"Снимки" сеанса командной строки с результатами выполнения программ.
- •Тема 2: изучение электронного справочника и отладчика программ.
- •Глава 2. Выполнение программ.
- •Тема 2. Работа с экраном и клавиатурой.
- •В качестве необходимых для самостоятельного изучения разделов предлагается [4]:
- •В качестве необходимых для самостоятельного изучения разделов предлагается [4]:
- •Дополнительная.
- •Приложение а
- •1.Текст программы
- •2.Файл протокол компиляции данной программы
- •Приложение б.
2.Файл протокол компиляции данной программы
Turbo Assembler Version 4.1 14/06/05 19:35:50 Page 1
ascii.ASM
1 ; Выводит на экран все ASCII-символы
2
3 0000 .model tiny
4 0000 .code
5 org 100h ; Начало COM-файла
6 0100 start:
7 0100 B8 0003 mov ax,0003h
8 0103 CD 10 int 10h ; Видеорежим 3 (очистка экрана и установка курсора в 0,0)
9 0105 BA 0000 mov dx,0 ; DH и DL будут использоваться для хранения положения
10 ; курсора. Начальное положение - 0,0
11 0108 BE 0100 mov si,256 ; SI будет счетчиком цикла
12 010B B0 00 mov al,0 ; Первый символ - с кодом 00h
13 010D B4 09 mov ah,9 ; Номер видеофункции "вывод символа с атрибутом"
14 010F B9 0001 mov cx,1 ; Выводится один символ за раз
15 0112 B3 1F mov bl,00011111b ; атрибут символа - белый на синем
16 0114 cloop:
17 0114 CD 10 int 10h ; Вывести символ на экран
18
19 0116 50 push ax ; Сохранить текущий символ и номер функции
20 0117 B4 02 mov ah,2 ; Номер видеофункции 2 - изменить положение курсора
21 0119 FE C2 inc dl ; Увеличить текущий столбец на 1
22 011B CD 10 int 10h ; Переместить курсор
23 011D B8 0920 mov ax,0920h ; AH = 09, AL = 20h (ASCII-код пробела)
24 0120 CD 10 int 10h ; Вывести пробел
25 0122 B4 02 mov ah,2 ; Номер видеофункции 2
26 0124 FE C2 inc dl ; Увеличить столбец на 1
27 0126 CD 10 int 10h ; Переместить курсор
28 0128 58 pop ax ; Восстановить номер функции в ah и текущий символ в al
29
30 0129 FE C0 inc al ; Увеличить AL на 1 - следующий символ
31 012B A8 0F test al,0Fh ; Если AL не кратен 16,
32 012D 75 0A jnz continue_loop ; продолжить цикл,
33
34 012F 50 push ax ; иначе сохранить номер функции и текущий символ
35 0130 B4 02 mov ah,2 ; Номер видеофункции 2
36 0132 FE C6 inc dh ; Увеличить номер строки на 1
37 0134 B2 00 mov dl,0 ; Столбец = 0
38 0136 CD 10 int 10h ; Установить курсор на начало следующей строки
39 0138 58 pop ax ; Восстановить номер видеофункции и текущий символ
40
41 0139 continue_loop:
42 0139 4E dec si ; Уменьшить SI на 1, если он не стал нулем - продолжить
43 013A 75 D8 jnz cloop ; CX используется внутри цикла, так что нельзя
44 ; использовать команду LOOP для его организации
45
46 013C B4 0C mov ah,0Ch ; Очистка буфера клавиатуры
47 013E B0 01 mov al,1
48 0140 CD 21 int 21h
49
50 0142 B4 08 mov ah,08h ; Приглашение на ввод символа
51 0144 CD 21 int 21h
52
53 0146 B8 0003 mov ax,0003h
54 0149 CD 10 int 10h ; Видеорежим 3 (очистка экрана и установка курсора в 0,0)
55
56
57 014B C3 ret ; Завершение COM-файла
Turbo Assembler Version 4.1 14/06/05 19:35:50 Page 2
ascii.ASM
58 end start
Turbo Assembler Version 4.1 14/06/05 19:35:50 Page 3
Symbol Table
Symbol Name Type Value
??DATE Text "14/06/05"
??FILENAME Text "ascii "
??TIME Text "19:35:50"
??VERSION Number 040A
@32BIT Text 0
@CODE Text DGROUP
@CODESIZE Text 0
@CPU Text 0101H
@CURSEG Text _TEXT
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text ASCII
@INTERFACE Text 000H
@MODEL Text 1
@STACK Text DGROUP
@WORDSIZE Text 2
CLOOP Near DGROUP:0114
CONTINUE_LOOP Near DGROUP:0139
START Near DGROUP:0100
Groups & Segments Bit Size Align Combine Class
DGROUP Group
_DATA 16 0000 Word Public DATA
_TEXT 16 014C Word Public CODE