summaryrefslogtreecommitdiff
path: root/asvt/labs/lab2/files
diff options
context:
space:
mode:
Diffstat (limited to 'asvt/labs/lab2/files')
-rw-r--r--asvt/labs/lab2/files/task2/TASK2.EXEbin0 -> 827 bytes
-rw-r--r--asvt/labs/lab2/files/task2/TASK2.LST95
-rw-r--r--asvt/labs/lab2/files/task2/TASK2.MAP9
-rw-r--r--asvt/labs/lab2/files/task2/TASK2.OBJbin0 -> 237 bytes
-rw-r--r--asvt/labs/lab2/files/task2/task2.asm40
-rw-r--r--asvt/labs/lab2/files/task3/TASK3.COMbin0 -> 81 bytes
-rw-r--r--asvt/labs/lab2/files/task3/TASK3.LST76
-rw-r--r--asvt/labs/lab2/files/task3/TASK3.MAP7
-rw-r--r--asvt/labs/lab2/files/task3/TASK3.OBJbin0 -> 300 bytes
-rw-r--r--asvt/labs/lab2/files/task3/task3.asm37
10 files changed, 264 insertions, 0 deletions
diff --git a/asvt/labs/lab2/files/task2/TASK2.EXE b/asvt/labs/lab2/files/task2/TASK2.EXE
new file mode 100644
index 0000000..732c18d
--- /dev/null
+++ b/asvt/labs/lab2/files/task2/TASK2.EXE
Binary files differ
diff --git a/asvt/labs/lab2/files/task2/TASK2.LST b/asvt/labs/lab2/files/task2/TASK2.LST
new file mode 100644
index 0000000..a0271f0
--- /dev/null
+++ b/asvt/labs/lab2/files/task2/TASK2.LST
@@ -0,0 +1,95 @@
+Turbo Assembler Version 3.1 04/05/20 23:25:42 Page 1
+TASK2.ASM
+
+
+
+ 1 .286 ; Директива, позволяющая использовать +
+ 2 непривилегированные инструкции процессора 80286 и +
+ 3 инструкции арифметического сопроцессора 80287
+ 4 0000 .model small ; Определение памяти ближнего типа
+ 5 0000 .code ; Начало сегмента с кодом
+ 6 org 100h ; Смещение адресации на 100h байт
+ 7 0100 begin:
+ 8 0100 EB 1D 90 JMP start ; Безусловный переход к метке start
+ 9 0103 trans:
+ 10 0103 60 PUSHA ; Сохранение содержимого регистров в стек
+ 11 0104 33 C9 XOR cx,cx ; Обнуление регистра cx
+ 12 0106 isDiv:
+ 13 0106 33 D2 XOR dx,dx ; Обнуление регистра dx
+ 14 0108 F7 F3 DIV bx ; Деление значений регистров ax на bx
+ 15 010A 52 PUSH dx ; Помещение значение регистра dx в стек
+ 16 010B 41 INC cx ; Увеличение значения регистра cx на +
+ 17 единицу
+ 18 010C 0B C0 OR ax,ax ; Попарное сложение всех битов операндов
+ 19 010E 75 F6 JNZ isDiv ; Осуществление перехода, если значение +
+ 20 регистра ax не равно 0
+ 21 0110 isOut:
+ 22 0110 58 POP ax ; Помещение значения вершины стека в +
+ 23 регистр ax (при этом указатель стека уменьшается на +
+ 24 единицу)
+ 25 0111 3C 09 CMP al,9 ; Сравнение значения регистра al с числом 9
+ 26 0113 7E 02 JLE noHex ; Переход к метке noHex, если al <= 9
+ 27 0115 04 07 ADD al,7 ; Прибавление числа 7 к регистру al
+ 28 0117 noHex:
+ 29 0117 04 30 ADD al,30h ; Прибавление числа 30h к регистру al
+ 30 0119 CD 29 INT 29h ; Прерывание для вывода символа (Обычно, +
+ 31 вызов функции 0Eh прерывания 10h)
+ 32 011B E2 F3 LOOP isOut ; Вычитание из регистра cx единицы. Если +
+ 33 значение регистра cx не равно 0, то выполнить переход +
+ 34 на метку isOut
+ 35 011D 61 POPA ; Загрузка из стека значение всех +
+ 36 регистров
+ 37 011E C3 ret ; Возврат к точке вызова
+ 38 011F start:
+ 39 011F CD 11 INT 11h ; Запрос списка подключенного +
+ 40 оборудования. Результат помещается в регистр ax
+ 41 0121 BB 0002 MOV bx,2 ; Помещение в регистр bx числа 2
+ 42 0124 E8 FFDC CALL trans ; Вызов метки trans
+ 43 0127 B8 000A MOV ax,10 ; Помещение в регистр ax числа 10
+ 44 012A 8B D0 MOV dx,ax ; Помещение в регистр dx значение числа ax
+ 45 012C B8 0200 MOV ax,200h ; Помещение в регистр ax значения 200h
+ 46 012F CD 21 INT 21h ; Вызов функции DOS
+ 47 0131 CD 12 INT 12h ; Запрос размера физической памяти. +
+ 48 Результат помещается в регистр ax
+ 49 0133 E8 FFCD CALL trans ; Вызов метки trans
+ 50 0136 B8 4C00 MOV ax,4C00h; Помещение в регистр ax значения 4C00h +
+ 51 (функция DOS для завершения программы)
+ 52 0139 CD 21 INT 21h ; Вызов функции DOS
+ 53 END begin ; Окончание программы
+ Turbo Assembler Version 3.1 04/05/20 23:25:42 Page 2
+Symbol Table
+
+
+
+
+Symbol Name Type Value
+
+??DATE Text "04/05/20"
+??FILENAME Text "TASK2 "
+??TIME Text "23:25:42"
+??VERSION Number 030A
+@32BIT Text 0
+@CODE Text _TEXT
+@CODESIZE Text 0
+@CPU Text 0707H
+@CURSEG Text _TEXT
+@DATA Text DGROUP
+@DATASIZE Text 0
+@FILENAME Text TASK2
+@INTERFACE Text 00H
+@MODEL Text 2
+@STACK Text DGROUP
+@WORDSIZE Text 2
+BEGIN Near _TEXT:0100
+ISDIV Near _TEXT:0106
+ISOUT Near _TEXT:0110
+NOHEX Near _TEXT:0117
+START Near _TEXT:011F
+TRANS Near _TEXT:0103
+
+Groups & Segments Bit Size Align Combine Class
+
+DGROUP Group
+ _DATA 16 0000 Word Public DATA
+_TEXT 16 013B Word Public CODE
+ \ No newline at end of file
diff --git a/asvt/labs/lab2/files/task2/TASK2.MAP b/asvt/labs/lab2/files/task2/TASK2.MAP
new file mode 100644
index 0000000..e69d1f0
--- /dev/null
+++ b/asvt/labs/lab2/files/task2/TASK2.MAP
@@ -0,0 +1,9 @@
+
+ Start Stop Length Name Class
+
+ 00000H 0013AH 0013BH _TEXT CODE
+ 0013CH 0013CH 00000H _DATA DATA
+
+Program entry point at 0000:0100
+Warning: No stack
+
diff --git a/asvt/labs/lab2/files/task2/TASK2.OBJ b/asvt/labs/lab2/files/task2/TASK2.OBJ
new file mode 100644
index 0000000..cc943e5
--- /dev/null
+++ b/asvt/labs/lab2/files/task2/TASK2.OBJ
Binary files differ
diff --git a/asvt/labs/lab2/files/task2/task2.asm b/asvt/labs/lab2/files/task2/task2.asm
new file mode 100644
index 0000000..521a215
--- /dev/null
+++ b/asvt/labs/lab2/files/task2/task2.asm
@@ -0,0 +1,40 @@
+.286 ; Директива, позволяющая использовать непривилегированные инструкции процессора 80286 и инструкции арифметического сопроцессора 80287
+.model small ; Определение памяти ближнего типа
+.code ; Начало сегмента с кодом
+org 100h ; Смещение адресации на 100h байт
+begin:
+ JMP start ; Безусловный переход к метке start
+ trans:
+ PUSHA ; Сохранение содержимого регистров в стек
+ XOR cx,cx ; Обнуление регистра cx
+ isDiv:
+ XOR dx,dx ; Обнуление регистра dx
+ DIV bx ; Деление значений регистров ax на bx
+ PUSH dx ; Помещение значение регистра dx в стек
+ INC cx ; Увеличение значения регистра cx на единицу
+ OR ax,ax ; Попарное сложение всех битов операндов
+ JNZ isDiv ; Осуществление перехода, если значение регистра ax не равно 0
+ isOut:
+ POP ax ; Помещение значения вершины стека в регистр ax (при этом указатель стека уменьшается на единицу)
+ CMP al,9 ; Сравнение значения регистра al с числом 9
+ JLE noHex ; Переход к метке noHex, если al <= 9
+ ADD al,7 ; Прибавление числа 7 к регистру al
+ noHex:
+ ADD al,30h ; Прибавление числа 30h к регистру al
+ INT 29h ; Прерывание для вывода символа (Обычно, вызов функции 0Eh прерывания 10h)
+ LOOP isOut ; Вычитание из регистра cx единицы. Если значение регистра cx не равно 0, то выполнить переход на метку isOut
+ POPA ; Загрузка из стека значение всех регистров
+ ret ; Возврат к точке вызова
+ start:
+ INT 11h ; Запрос списка подключенного оборудования. Результат помещается в регистр ax
+ MOV bx,2 ; Помещение в регистр bx числа 2
+ CALL trans ; Вызов метки trans
+ MOV ax,10 ; Помещение в регистр ax числа 10
+ MOV dx,ax ; Помещение в регистр dx значение числа ax
+ MOV ax,200h ; Помещение в регистр ax значения 200h
+ INT 21h ; Вызов функции DOS
+ INT 12h ; Запрос размера физической памяти. Результат помещается в регистр ax
+ CALL trans ; Вызов метки trans
+ MOV ax,4C00h; Помещение в регистр ax значения 4C00h (функция DOS для завершения программы)
+ INT 21h ; Вызов функции DOS
+END begin ; Окончание программы
diff --git a/asvt/labs/lab2/files/task3/TASK3.COM b/asvt/labs/lab2/files/task3/TASK3.COM
new file mode 100644
index 0000000..90f8936
--- /dev/null
+++ b/asvt/labs/lab2/files/task3/TASK3.COM
Binary files differ
diff --git a/asvt/labs/lab2/files/task3/TASK3.LST b/asvt/labs/lab2/files/task3/TASK3.LST
new file mode 100644
index 0000000..e1b9ee3
--- /dev/null
+++ b/asvt/labs/lab2/files/task3/TASK3.LST
@@ -0,0 +1,76 @@
+Turbo Assembler Version 3.1 04/05/20 :01:30 Page 1
+TASK3.ASM
+
+
+
+ 1 .286
+ 2 0000 .model tiny
+ 3 0000 .data
+ 4 0000 ?? ?? 20 ?? ?? 20 ??+ string db ?,?,' ',?,?,' ',?,?,0Ah,0Dh,'$'
+ 5 ?? 0A 0D 24
+ 6
+ 7 000B .code
+ 8 org 100h
+ 9 0100 start:
+ 10 0100 B4 01 MOV ah,1
+ 11 0102 CD 1A INT 1Ah
+ 12 0104 3B DA CMP bx,dx
+ 13 0106 B4 02 MOV ah,2
+ 14 0108 CD 1A INT 1Ah
+ 15 010A B4 00 MOV ah,0
+ 16 010C 8A C5 MOV al,ch
+ 17 010E C1 C8 04 ROR ax,4
+ 18 0111 C0 EC 04 SHR ah,4
+ 19 0114 0D 3030 OR ax,'00'
+ 20 0117 A3 0000r MOV word ptr string,ax
+ 21 011A B4 00 MOV ah,0
+ 22 011C 8A C1 MOV al,cl
+ 23 011E C1 C8 04 ROR ax,4
+ 24 0121 C0 EC 04 SHR ah,4
+ 25 0124 0D 3030 OR ax,'00'
+ 26 0127 A3 0003r MOV word ptr string+3,ax
+ 27 012A B4 00 MOV ah,0
+ 28 012C 8A C6 MOV al,dh
+ 29 012E C1 C8 04 ROR ax,4
+ 30 0131 C0 EC 04 SHR ah,4
+ 31 0134 0D 3030 OR ax,'00'
+ 32 0137 A3 0006r MOV word ptr string+6,ax
+ 33 013A B4 09 MOV ah,9
+ 34 013C BA 0000r MOV dx,offset string
+ 35 013F CD 21 INT 21h
+ 36 0141 B8 4C00 MOV ax,4C00h
+ 37 0144 CD 21 INT 21h
+ 38 end start
+ Turbo Assembler Version 3.1 04/05/20 :01:30 Page 2
+Symbol Table
+
+
+
+
+Symbol Name Type Value
+
+??DATE Text "04/05/20"
+??FILENAME Text "TASK3 "
+??TIME Text "I5:01:29"
+??VERSION Number 030A
+@32BIT Text 0
+@CODE Text DGROUP
+@CODESIZE Text 0
+@CPU Text 0707H
+@CURSEG Text _TEXT
+@DATA Text DGROUP
+@DATASIZE Text 0
+@FILENAME Text TASK3
+@INTERFACE Text 00H
+@MODEL Text 1
+@STACK Text DGROUP
+@WORDSIZE Text 2
+START Near DGROUP:0100
+STRING Byte DGROUP:0000
+
+Groups & Segments Bit Size Align Combine Class
+
+DGROUP Group
+ _DATA 16 000B Word Public DATA
+ _TEXT 16 0146 Word Public CODE
+ \ No newline at end of file
diff --git a/asvt/labs/lab2/files/task3/TASK3.MAP b/asvt/labs/lab2/files/task3/TASK3.MAP
new file mode 100644
index 0000000..c8cf72e
--- /dev/null
+++ b/asvt/labs/lab2/files/task3/TASK3.MAP
@@ -0,0 +1,7 @@
+
+ Start Stop Length Name Class
+
+ 00000H 00145H 00146H _TEXT CODE
+ 00146H 00150H 0000BH _DATA DATA
+
+
diff --git a/asvt/labs/lab2/files/task3/TASK3.OBJ b/asvt/labs/lab2/files/task3/TASK3.OBJ
new file mode 100644
index 0000000..ac57693
--- /dev/null
+++ b/asvt/labs/lab2/files/task3/TASK3.OBJ
Binary files differ
diff --git a/asvt/labs/lab2/files/task3/task3.asm b/asvt/labs/lab2/files/task3/task3.asm
new file mode 100644
index 0000000..0ef9e70
--- /dev/null
+++ b/asvt/labs/lab2/files/task3/task3.asm
@@ -0,0 +1,37 @@
+.286
+.model tiny
+.data
+string db ?,?,' ',?,?,' ',?,?,0Ah,0Dh,'$'
+
+.code
+org 100h
+start:
+ MOV ah,1
+ INT 1Ah
+ CMP bx,dx
+ MOV ah,2
+ INT 1Ah
+ MOV ah,0
+ MOV al,ch
+ ROR ax,4
+ SHR ah,4
+ OR ax,'00'
+ MOV word ptr string,ax
+ MOV ah,0
+ MOV al,cl
+ ROR ax,4
+ SHR ah,4
+ OR ax,'00'
+ MOV word ptr string+3,ax
+ MOV ah,0
+ MOV al,dh
+ ROR ax,4
+ SHR ah,4
+ OR ax,'00'
+ MOV word ptr string+6,ax
+ MOV ah,9
+ MOV dx,offset string
+ INT 21h
+ MOV ax,4C00h
+ INT 21h
+end start