Загрузка данных
Turbo Assembler Version 4.1 09/24/26 14:37:55 Page 1
Prog_4.asm
LAB2_2 KORNEEV VV
1 TITLE LAB2_2 KORNEEV VV
2
3 0000 .model small
4 0000 .stack 512
5
6 0000 .data
7 0000 12 den DB 18
8 0001 4321 qwer DW 4321h
9 0003 000C mes DW 12
10 0005 0C*(13) Mas_1 DB 12 dup(19)
11 0011 14*(????) Mas_2 DW 20 dup(?)
12 0039 4B 6F 72 6E 65 65 76+ stroka DB 'Korneev', '$'
13 24
14
15 0041 .code
16 0000 start:
17 ; настраиваем сегмент данных
18 0000 B8 0000s mov ax, @data
19 0003 8E D8 mov ds, ax ; особый случай mov: напрямую в сегментный +
20 регистр число писать нельзя, только через ax
21
22 ; год в di
23 0005 BF 07D6 mov di, 07D6h
24
25 ; грузим переменные в регистры
26 0008 A0 0000r mov al, den
27 000B 8B 0E 0003r mov cx, mes
28 000F A1 0003r mov ax, mes
29 0012 8E C0 mov es, ax ; тут тоже особый случай mov: из памяти в es +
30 сразу не закинуть, делаем через регистр
31
32 ; закидываем в стек den и mes
33 0014 32 E4 xor ah, ah ; обнуляем ah, чтобы протолкнуть байт den как +
34 слово (стек ест только по 16 бит)
35 0016 A0 0000r mov al, den
36 0019 50 push ax
37 001A A1 0003r mov ax, mes
38 001D 50 push ax
39
40 ; меняем qwer и mes местами
41 001E A1 0001r mov ax, qwer ; особенность mov: нельзя гонять данные из +
42 памяти в память, берем ax как посредник
43 0021 87 06 0003r xchg ax, mes
44 0025 A3 0001r mov qwer, ax
45
46 ; адрес den в si
47 0028 BE 0000r lea si, den
48
49 ; копируем ds в es через стек (напрямую mov es, ds нельзя)
50 002B 1E push ds
51 002C 07 pop es
52
53 ; достаем из стека в обратном порядке (LIFO)
54 002D 5A pop dx ; сюда падает mes
55 002E 59 pop cx ; сюда падает den
56
57 ; вывод фамилии
Turbo Assembler Version 4.1 09/24/26 14:37:55 Page 2
Prog_4.asm
LAB2_2 KORNEEV VV
58 002F B4 09 mov ah, 09h
59 0031 BA 0039r lea dx, stroka
60 0034 CD 21 int 21h
61
62 ; выход в DOS
63 0036 B8 4C00 mov ax, 4c00h
64 0039 CD 21 int 21h
65
66 end start
Turbo Assembler Version 4.1 09/24/26 14:37:55 Page 3
Symbol Table
LAB2_2 KORNEEV VV
Symbol Name Type Value
??DATE Text "09/24/26"
??FILENAME Text "Prog_4 "
??TIME Text "14:37:55"
??VERSION Number 040A
@32BIT Text 0
@CODE Text _TEXT
@CODESIZE Text 0
@CPU Text 0101H
@CURSEG Text _TEXT
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text PROG_4
@INTERFACE Text 000H
@MODEL Text 2
@STACK Text DGROUP
@WORDSIZE Text 2
DEN Byte DGROUP:0000
MAS_1 Byte DGROUP:0005
MAS_2 Word DGROUP:0011
MES Word DGROUP:0003
QWER Word DGROUP:0001
START Near _TEXT:0000
STROKA Byte DGROUP:0039
Groups & Segments Bit Size Align Combine Class
DGROUP Group
STACK 16 0200 Para Stack STACK
_DATA 16 0041 Word Public DATA
_TEXT 16 003B Word Public CODE