From 143f34d941f32e0808fc9344d4c4126ff530d64a Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 22 Oct 2020 21:03:24 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D1=81=D0=B5=D0=BC=D0=B5=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sem2/lab2/lab2_guschin.pdf | Bin 0 -> 88793 bytes sem2/lab2/task2/task2.asm | 40 ++++++++++++++++++++++++++++++++++++++++ sem2/lab2/task3/run.bat | 3 +++ sem2/lab2/task3/task3.asm | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 sem2/lab2/lab2_guschin.pdf create mode 100644 sem2/lab2/task2/task2.asm create mode 100644 sem2/lab2/task3/run.bat create mode 100644 sem2/lab2/task3/task3.asm (limited to 'sem2/lab2') diff --git a/sem2/lab2/lab2_guschin.pdf b/sem2/lab2/lab2_guschin.pdf new file mode 100644 index 0000000..7d91eb5 Binary files /dev/null and b/sem2/lab2/lab2_guschin.pdf differ diff --git a/sem2/lab2/task2/task2.asm b/sem2/lab2/task2/task2.asm new file mode 100644 index 0000000..521a215 --- /dev/null +++ b/sem2/lab2/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/sem2/lab2/task3/run.bat b/sem2/lab2/task3/run.bat new file mode 100644 index 0000000..1297bac --- /dev/null +++ b/sem2/lab2/task3/run.bat @@ -0,0 +1,3 @@ +C:\TASM.EXE %1 +C:\TLINK.EXE %1 +%1 diff --git a/sem2/lab2/task3/task3.asm b/sem2/lab2/task3/task3.asm new file mode 100644 index 0000000..0ef9e70 --- /dev/null +++ b/sem2/lab2/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