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.LST | 95 ++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 asvt/labs/lab2/files/task2/TASK2.LST (limited to 'asvt/labs/lab2/files/task2/TASK2.LST') 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 -- cgit v1.2.3