From 693d8b180c690601ce44d640352b0d44151edb76 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 15 Apr 2020 15:02:38 +0400 Subject: =?UTF-8?q?*=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B8?= =?UTF-8?q?=D1=81=D1=85=D0=BE=D0=B4=D0=BD=D0=B8=D0=BA=D0=B8=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=B0=D1=81=D0=B2=D1=82=20*=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B8=D0=BB=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D1=8B=20=D0=BF=D0=BE=20=D0=B0=D1=81=D0=B2?= =?UTF-8?q?=D1=82=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=83=D1=8E=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asvt/labs/lab2/files/task2/TASK2.EXE | Bin 0 -> 827 bytes asvt/labs/lab2/files/task2/TASK2.LST | 95 +++++++++++++++++++++++++++++++++++ asvt/labs/lab2/files/task2/TASK2.MAP | 9 ++++ asvt/labs/lab2/files/task2/TASK2.OBJ | Bin 0 -> 237 bytes asvt/labs/lab2/files/task2/task2.asm | 40 +++++++++++++++ asvt/labs/lab2/files/task3/TASK3.COM | Bin 0 -> 81 bytes asvt/labs/lab2/files/task3/TASK3.LST | 76 ++++++++++++++++++++++++++++ asvt/labs/lab2/files/task3/TASK3.MAP | 7 +++ asvt/labs/lab2/files/task3/TASK3.OBJ | Bin 0 -> 300 bytes asvt/labs/lab2/files/task3/task3.asm | 37 ++++++++++++++ 10 files changed, 264 insertions(+) create mode 100644 asvt/labs/lab2/files/task2/TASK2.EXE create mode 100644 asvt/labs/lab2/files/task2/TASK2.LST create mode 100644 asvt/labs/lab2/files/task2/TASK2.MAP create mode 100644 asvt/labs/lab2/files/task2/TASK2.OBJ create mode 100644 asvt/labs/lab2/files/task2/task2.asm create mode 100644 asvt/labs/lab2/files/task3/TASK3.COM create mode 100644 asvt/labs/lab2/files/task3/TASK3.LST create mode 100644 asvt/labs/lab2/files/task3/TASK3.MAP create mode 100644 asvt/labs/lab2/files/task3/TASK3.OBJ create mode 100644 asvt/labs/lab2/files/task3/task3.asm (limited to 'asvt/labs/lab2/files') 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 Binary files /dev/null and b/asvt/labs/lab2/files/task2/TASK2.EXE 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 Binary files /dev/null and b/asvt/labs/lab2/files/task2/TASK2.OBJ 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 Binary files /dev/null and b/asvt/labs/lab2/files/task3/TASK3.COM 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 Binary files /dev/null and b/asvt/labs/lab2/files/task3/TASK3.OBJ 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 -- cgit v1.2.3