В результате последовательного выполнения этапов получены исходный объектный и отлаженный загрузочный модули. На рисунке 2 показаны процессы разработки программы в среде TASM.
Рисунок 2 - Этапы разработки первой программы на ассемблере в среде DOS. Трансляция, компиляция и отладка программы в среде DOS
На рисунке 3 представлено окно DOS в результате последовательного выполнения команд.
Рисунок 3 – Окно DOS после выполнения программы
Выводы
1. Изучили цепочечные команды в языке Assembler;
2. Разработана программа на ассемблере содержащая цепочечные команды и выполняющая замену некоторых символов с использованием стандартного пакета Turbo Assembler.
Список использованной литературы
1. Рудаков П.И., Финогенов К.Г. Программирование на языке Ассемблера IBMPC. Обнинск: Принтер, 1999.
2. Юров В., Хорошенко С. Ассемблер. Учебный курс. СПб: Питер, 2006.
ПРИЛОЖЕНИЕ
Листинг программы
Turbo Assembler Version 4.1 18/05/12 12:01:58 Page 1
prog5.asm
1 0000.model small
2 0000.stack 256
3 0000.data
4 0000 0A 0D 53 69 6D 76 6F+ f db 0ah,0dh,"Simvol naiden","$"
5 6C 20 6E 61 69 64 65+
6 6E 24
7 0010 0A 0D 53 69 6D 76 6F+ nw db 0ah,0dh,"Simvol ne naiden","$"
8 6C 20 6E 65 20 6E 61+
9 69 64 65 6E 24
10 0023 0A 0D 49 73 63 68 6F+ mes1 db 0ah,0dh,"Ischodnaia stroka:","$"
11 64 6E 61 69 61 20 73+
12 74 72 6F 6B 61 3A 24
13 0038 15 00 15*(24) stq db 21,0,21 dup("$")
14 004F 0A 0D 24 db 0ah,0dh,'$'
15 0052 0A 0D 56 76 65 64 69+ mes2 db 0ah,0dh,"Vvedite simvol, na kotorii sleduet zamenit simvol 1"
16 74 65 20 73 69 6D 76+
17 6F 6C 2C 20 6E 61 20+
18 6B 6F 74 6F 72 69 69+
19 20 73 6C 65 64 75 65+
20 74 20 7A 61 6D 65 6E+
21 69 74 20 73 69 6D 76+
22 6F 6C 20 31
23 0087 0A 0D 24 db 0ah,0dh,'$'
24 008A 0A 0D 4E 6F 76 61 69+ mes3 db 0ah,0dh,'Novaia stroka: ','$'
25 61 20 73 74 72 6F 6B+
26 61 3A 20 24
27 009C 0A 0D 56 76 65 64 69+ mes6 db 0ah,0dh,'Vvedite simvol 1: ','$'
28 74 65 20 73 69 6D 76+
29 6F 6C 20 31 3A 20 24
30;db 0ah,0dh,'$'
31 00B1 0A 0D 44 6C 69 61 20+ mes7 db 0ah,0dh,'Dlia zavershenia najmi ENTER.','$'
32 7A 61 76 65 72 73 68+
33 65 6E 69 61 20 6E 61+
34 6A 6D 69 20 45 4E 54+
35 45 52 2E 24
36 00D1 2A mes4 db 6 ("$")
37;mes5 db 3 ("$"
38 00D2.code
39 assume ds:@data,es:@data
40 0000 main:
41 0000 B8 0000s mov ax,@data
42 0003 8E D8 mov ds,ax
43 0005 8E C0 mov es,ax
44 0007 B4 09 mov ah,09h
45 0009 BA 0023r lea dx,mes1
46 000C CD 21 int 21h
47 000E B4 0A mov ah,0ah
48 0010 BA 0038r lea dx,stq
49 0013 CD 21 int 21h
50 0015 B4 09 mov ah,09h
51 0017 BA 009Cr lea dx,mes6
52 001A CD 21 int 21h
53 001C B4 01 mov ah,01h
54 001E CD 21 int 21h
55 0020 FC cld
56 0021 BF 0038r lea di,stq
57 0024 B9 0016 mov cx,22
_Turbo Assembler Version 4.1 18/05/12 12:01:58 Page 2
prog5.asm
58 0027 BD 0001 mov bp,01h
59 002A F2> AE repne scas stq
60 002C 74 14 je found
61 002E failed:
62 002E B4 09 mov ah,09h
63 0030 BA 0010r lea dx,nw
64 0033 CD 21 int 21h
65 0035 BA 00D1r lea dx,mes4
66 0038 B4 0A mov ah,0ah
67 003A CD 21 int 21h
68 003C B9 0008 mov cx,8
69 003F EB 24 90 jmp exit
70 0042 found:
71 0042 4F dec di
72 0043 F2> AE repne scas stq
73 0045 50 push ax
74 0046 83 FD 01 cmp bp,01h
75 0049 75 0D jne m1
76 004B B4 09 mov ah,09h
77 004D BA 0052r lea dx,mes2
78 0050 CD 21 int 21h
79 0052 B4 01 mov ah,01h
80 0054 CD 21 int 21h
81 0056 8A D8 mov bl,al
82 0058 m1:
83 0058 8A C3 mov al,bl
84 005A 4F dec di
85 005B FC cld
86 005C AA stos stq
87 005D 47 inc di
88 005E 58 pop ax
89 005F 45 inc bp
90 0060 83 F9 00 cmp cx,0
91 0063 75 DD jne found
92 0065 exit:
93 0065 83 F9 08 cmp cx,8
94 0068 74 0F je m2
95 006A B4 09 mov ah,09h
96 006C BA 008Ar lea dx,mes3
97 006F CD 21 int 21h
98 0071 BA 0038r lea dx,stq
99 0074 83 C2 02 add dx,2
100 0077 CD 21 int 21h
101 0079 m2:
102 0079 B4 09 mov ah,09h
103 007B BA 00B1r lea dx,mes7
104 007E CD 21 int 21h
105 0080 BA 00D1r lea dx,mes4
106 0083 B4 0A mov ah,0ah
107 0085 CD 21 int 21h
108 0087 B8 4C00 mov ax,4c00h
109 008A CD 21 int 21h
110 end main
_Turbo Assembler Version 4.1 18/05/12 12:01:58 Page 3
Symbol Table
Symbol Name Type Value Cref (defined at #)
??DATE Text "18/05/12"
??FILENAME Text "prog5 "
??TIME Text "12:01:58"
??VERSION Number 040A
@32BIT Text 0 #1
@CODE Text _TEXT #1 #1 #38
@CODESIZE Text 0 #1
@CPU Text 0101H
@CURSEG Text _TEXT #3 #38
@DATA Text DGROUP #1 39 39 41
@DATASIZE Text 0 #1
@FILENAME Text PROG5
@INTERFACE Text 000H #1
@MODEL Text 2 #1
@STACK Text DGROUP #1
@WORDSIZE Text 2 #3 #38
EXIT Near _TEXT:0065 69 #92
F Byte DGROUP:0000 #4
FAILED Near _TEXT:002E #61
FOUND Near _TEXT:0042 60 #70 91
M1 Near _TEXT:0058 75 #82
M2 Near _TEXT:0079 94 #101
MAIN Near _TEXT:0000 #40 110
MES1 Byte DGROUP:0023 #10 45
MES2 Byte DGROUP:0052 #15 77
MES3 Byte DGROUP:008A #24 96
MES4 Byte DGROUP:00D1 #36 65 105
MES6 Byte DGROUP:009C #27 51
MES7 Byte DGROUP:00B1 #31 103
NW Byte DGROUP:0010 #7 63
STQ Byte DGROUP:0038 #13 48 56 59 72 86 98
Groups & Segments Bit Size Align Combine Class Cref (defined at #)
DGROUP Group #1 1 39 39 41
STACK 16 0100 Para Stack STACK #2
_DATA 16 00D2 Word Public DATA #1 #3
_TEXT 16 008C Word Public CODE #1 1 #38 38
_