summaryrefslogtreecommitdiff
path: root/asvt/labs/lab2/files/task2/TASK2.LST
diff options
context:
space:
mode:
Diffstat (limited to 'asvt/labs/lab2/files/task2/TASK2.LST')
-rw-r--r--asvt/labs/lab2/files/task2/TASK2.LST95
1 files changed, 95 insertions, 0 deletions
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