Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
001.doc
Скачиваний:
1
Добавлен:
12.11.2019
Размер:
275.97 Кб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]