Загрузил leon6494

Laba 1

реклама
1. Цель работы
Практическое овладение навыками составления простейших программ на
языке Ассемблера и работы с программами TASM и TLINK.
2. Листинг программы hello_1
Файл: hello_1.asm
;Program Hello_1 - Ваша первая программа
Data SEGMENT
Greet DB 'Hello, My friends!',13,10,'$'
Data ENDS
Ourstack SEGMENT Stack
DB 100h DUP(?)
Ourstack ENDS
ASSUME CS:Code,DS:Data,SS:Ourstack
Code SEGMENT
Start:
mov AX,Data
mov DS,AX
mov AH,09h
mov DX,OFFSET Greet
int 21h
mov AL,0
mov AH,4Ch
int 21h
Code ENDS
END Start
;Открыть сегмент данных
;Определить строку
;символов с именем Greet
;Закрыть сегмент данных
;Открыть сегмент стека
;Отвести под стек 256 байт
;Закрыть сегмент стека
;Назначить сегментные
;регистры
;Открыть сегмент кодов
;Инициализировать
;сегментный регистр DS
;Вывести строку Greet
;на экран с помощью
;DOS
;Завершить программу
;с помощью
;DOS
;Закрыть сегмент кодов
;Конец иходного модуля
Файл: HELLO_1.OBJ
800d 000b 6865 6c6c 6f5f 312e 4153 4db5
8820 0000 001c 5475 7262 6f20 4173 7365
6d62 6c65 7220 2056 6572 7369 6f6e 2033
2e31 9a88 1300 40e9 b204 2456 0b68 656c
6c6f 5f31 2e41 534d 4e88 0300 40e9 4c96
0200 0068 8803 0040 a194 9606 0004 4441
5441 4698 0700 6015 0002 0101 e896 0a00
084f 5552 5354 4143 4bec 9807 0074 0001
0301 01e7 9606 0004 434f 4445 4598 0700
6012 0004 0101 e988 0400 40a2 0191 8805
0040 ea04 0045 8808 0040 e318 0006 002a
0588 0900 40e3 1900 0000 2400 0f88 0900
40e3 1a00 0000 2401 0d88 0b00 40e3 1b00
0000 2300 0000 0c88 0b00 40e3 1c00 0000
2300 0400 0788 0b00 40e3 1d00 0000 2300
0100 0988 0b00 40e3 1e00 0000 2300 0500
0488 0900 40e3 1f00 1200 1a08 f988 1400
40e8 000b 6865 6c6c 6f5f 312e 4153 4db2
0424 564e 9423 0000 030d 0000 000e 0003
000f 0005 0010 0007 0011 000a 0012 000c
0013 000e 0014 0010 007f 880f 0040 e605
4752 4545 541f 0000 0100 00a7 880f 0040
e605 5354 4152 5419 0000 0300 0094 a019
0001 0000 4865 6c6c 6f2c 204d 7920 6672
6965 6e64 7321 0d0a 24d9 a016 0003 0000
b800 008e d8b4 09ba 0000 cd21 b000 b44c
cd21 269c 0900 c801 5401 c408 5401 1c8a
0700 c100 0303 0000 a8
Файл: HELLO_1.LST
Turbo Assembler
Version 3.1
01/04/23 00:37:42
Page 1
hello_1.ASM
;Program Hello_1 -
Ваша первая программа
3 0000
Data SEGMENT
;Открыть сегмент
4
данных
1
2
5 0000 48 65 6C 6C 6F 2C
;Определить строку
20+ Greet DB 'Hello, My friends!',13,10,'$'
6
4D 79 20 66 72 69
65+
7
6E 64 73 21 0D 0A
24
8
;символов с
9
+
именем Greet
+
10 0015
;Закрыть сегмент +
Data ENDS
данных
11
12 0000
сегмент стека
Ourstack SEGMENT Stack
13 0000 0100*(??)
;Отвести под стек 256 +
DB 100h DUP(?)
байт
14
15 0100
сегмент
;Открыть
;Закрыть
Ourstack ENDS
+
стека
16
17
;Назначить сегментные
ASSUME CS:Code,DS:Data,SS:Ourstack
18
;регистры
19 0000
сегмент
;Открыть
Code SEGMENT
+
20
кодов
21 0000 B8 0000s
;Инициализировать
Start: mov AX,Data
22 0003 8E D8
;сегментный
+
23
mov DS,AX
регистр DS
24 0005 B4 09
;Вывести строку +
25
mov AH,09h
Greet
26 0007 BA 0000r
экран с помощью
27 000A CD 21
int 21h
28 000C B0 00
;Завершить
+
29
;DOS
mov AL,0
программу
30 000E B4 4C
;с помощью
mov AH,4Ch
31 0010 CD 21
32 0012
;Закрыть сегмент +
;на
mov DX,OFFSET Greet
int 21h
Code ENDS
;DOS
кодов
33
34
;Конец иходного +
END Start
модуля
35
Файл: HELLO_1.MAP
Start Stop Length Name
Class
00000H 00014H 00015H DATA
00020H 0011FH 00100H OURSTACK
00120H 00131H 00012H CODE
Program entry point at 0012:0000
Файл: HELLO_1.EXE
d:\SUAI\HELLO_1.EXE
on x64 Home Edition Version 10.0 (build 22000)
No file version information available
Creation Date
: 04/01/2023 00:37:43
Last Modif. Date
: 04/01/2023 00:37:43
Last Access Date
: 04/01/2023 01:09:43
FileSize
: 1292 bytes ( 1.262 KB, 0.001 MB )
Рис.1 - Вывод программы HELLO_1.EXE
3. Листинг программы hello_2
Файл: hello_2.asm
;Program Hello_2 - Ваша вторая программа
Data SEGMENT
Greet DB 'Hello, My friends!',13,10,'$'
Greet2 DB 'My group IST-41',13,10,'$'
Data ENDS
Ourstack SEGMENT Stack
DB 100h DUP(?)
Ourstack ENDS
ASSUME CS:Code,DS:Data,SS:Ourstack
Code SEGMENT
Start:
mov AX,Data
mov DS,AX
mov AH,09h
mov DX,OFFSET Greet
int 21h
mov AH,09h
mov DX,OFFSET Greet2
int 21h
mov AL,0
mov AH,4Ch
int 21h
Code ENDS
END Start
;Открыть сегмент данных
;Определить строку
;символов с именем Greet
;и именем Greet2
;Закрыть сегмент данных
;Открыть сегмент стека
;Отвести под стек 256 байт
;Закрыть сегмент стека
;Назначить сегментные
;регистры
;Открыть сегмент кодов
;Инициализировать
;сегментный регистр DS
;Вывести строку Greet
;на экран с помощью
;DOS
;Вывести строку Greet2
;на экран с помощью
;DOS
;Завершить программу
;с помощью
;DOS
;Закрыть сегмент кодов
;Конец иходного модуля
Файл: HELLO_2.OBJ
800d 000b 6865 6c6c 6f5f 322e 4153 4db4
8820 0000 001c 5475 7262 6f20 4173 7365
6d62 6c65 7220 2056 6572 7369 6f6e 2033
2e31 9a88 1300 40e9 8805 2456 0b68 656c
6c6f 5f32 2e41 534d 7688 0300 40e9 4c96
0200 0068 8803 0040 a194 9606 0004 4441
5441 4698 0700 6027 0002 0101 d696 0a00
084f 5552 5354 4143 4bec 9807 0074 0001
0301 01e7 9606 0004 434f 4445 4598 0700
6019 0004 0101 e288 0400 40a2 0191 8805
0040 ea04 0045 8808 0040 e318 0006 002a
0588 0900 40e3 1900 0000 2400 0f88 0900
40e3 1a00 0000 2401 0d88 0b00 40e3 1b00
0000 2300 0000 0c88 0b00 40e3 1c00 0000
2300 0400 0788 0b00 40e3 1d00 0000 2300
0100 0988 0b00 40e3 1e00 0000 2300 0500
0488 0900 40e3 1f00 1200 1a08 f988 0900
40e3 2000 0f00 1a08 fb88 1400 40e8 000b
6865 6c6c 6f5f 322e 4153 4d88 0524 5676
942f 0000 030e 0000 000f 0003 0010 0005
0011 0007 0012 000a 0013 000c 0014 000e
0015 0011 0016 0013 0017 0015 0018 0017
00e6 880f 0040 e605 4752 4545 541f 0000
0100 00a7 8810 0040 e606 4752 4545 5432
2000 0001 1500 5d88 0f00 40e6 0553 5441
5254 1900 0003 0000 94a0 2b00 0100 0048
656c 6c6f 2c20 4d79 2066 7269 656e 6473
210d 0a24 4d79 2067 726f 7570 2049 5354
2d34 310d 0a24 d7a0 1d00 0300 00b8 0000
8ed8 b409 ba00 00cd 21b4 09ba 1500 cd21
b000 b44c cd21 a59c 0d00 c801 5401 c408
5401 c40f 5401 f08a 0700 c100 0303 0000
a8
Файл: HELLO_2.LST
Turbo Assembler Version 3.1
01/04/23 00:44:26
Page 1
hello_2.ASM
1
;Program Hello_2 -
Ваша вторая программа
2
3
0000
;Открыть сегмент
4
Data SEGMENT
+
данных
5
0000 48 65 6C 6C 6F 2C
;Определить строку
20+ Greet DB 'Hello, My friends!',13,10,'$'
6
4D 79 20 66 72 69
65+
7
6E 64 73 21 0D 0A
24
8
0015 4D 79 20 67 72 6F
;символов с именем Greet
9
70 20 49 53 54 2D
10
31 0D 0A 24
75+ Greet2 DB
'My group IST-41',13,10,'$'
34+
11
;и именем Greet2
12
0027
;Закрыть сегмент +
Data ENDS
данных
13
14
0000
;Открыть сегмент стека
Ourstack SEGMENT Stack
15
0000 0100*(??)
;Отвести под стек 256 +
DB 100h DUP(?)
байт
16
17
0100
;Закрыть сегмент
Ourstack ENDS
+
стека
18
19
;Назначить сегментные
ASSUME CS:Code,DS:Data,SS:Ourstack
20
;регистры
21
0000
;Открыть сегмент
Code SEGMENT
+
кодов
22
23
0000 B8 0000s
;Инициализировать
24
0003 8E D8
;сегментный
mov DS,AX
+
регистр DS
25
26
Start: mov AX,Data
0005 B4 09
;Вывести строку +
27
28
0007 BA 0000r
;на экран с помощью
mov AH,09h
Greet
mov DX,OFFSET Greet
29
000A CD 21
30
000C B4 09
;Вывести строку +
int 21h
;DOS
mov AH,09h
31
Greet2
32
000E BA 0015r
;на экран с помощью
33
mov DX,OFFSET Greet2
0011 CD 21
int 21h
34
0013 B0 00
;Завершить
+
;DOS
mov AL,0
программу
35
36
0015 B4 4C
;с помощью
37
0017 CD 21
38
0019
;Закрыть сегмент +
mov AH,4Ch
int 21h
Code ENDS
кодов
39
40
;Конец иходного +
END Start
модуля
41
Файл: HELLO_2.MAP
Start Stop Length Name
Class
00000H 00026H 00027H DATA
00030H 0012FH 00100H OURSTACK
00130H 00148H 00019H CODE
Program entry point at 0013:0000
Файл: HELLO_2.EXE
d:\SUAI\HELLO_2.EXE
on x64 Home Edition Version 10.0 (build 22000)
No file version information available
Creation Date
: 04/01/2023 00:44:27
Last Modif. Date
: 04/01/2023 00:44:27
Last Access Date
: 04/01/2023 01:23:39
FileSize
: 1344 bytes ( 1.313 KB, 0.001 MB )
;DOS
Рис.2 - Вывод программы HELLO_2.EXE
4. Листинг созданного командного файла *.bat
Файл: run.bat
tasm/z/zi/n %1 %1 %1
tlink/v %1
Скачать