diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/dawdi/lab1/hello1.asm b/dawdi/lab1/hello1.asm new file mode 100755 index 0000000..ae8348c --- /dev/null +++ b/dawdi/lab1/hello1.asm @@ -0,0 +1,32 @@ +; HELLO1.ASM - упрощенная версия учебной программы лаб.раб. N1 +; по дисциплине "Архитектура компьютера" +; ***************************************************************** +; Назначение: Программа формирует и выводит на экран приветствие +; пользователя с помощью функции ДОС "Вывод строки" +; (номер 09 прерывание 21h), которая: +; - обеспечивает вывод на экран строки символов, +; заканчивающейся знаком "$"; +; - требует задания в регистре ah номера функции=09h, +; а в регистре dx - смещения адреса выводимой +; строки; +; - использует регистр ax и не сохраняет его +; содержимое. +; ****************************************************************** + + DOSSEG ; Задание сегментов под ДОС + .MODEL SMALL ; Модель памяти-SMALL(Малая) + .STACK 100h ; Отвести под Стек 256 байт + .DATA ; Начало сегмента данных +Greeting LABEL BYTE ; Текст приветствия + DB 'Вас приветствует ст.гр.1303 - Дауди И.Я.',13,10,'$' + .CODE ; Начало сегмента кода + mov ax, @data ; Загрузка в DS адреса начала + mov ds, ax ; сегмента данных + mov dx, OFFSET Greeting ; Загрузка в dx смещения + ; адреса текста приветствия +DisplayGreeting: + mov ah, 9 ; # функции ДОС печати строки + int 21h ; вывод на экран приветствия + mov ah, 4ch ; # функции ДОС завершения программы + int 21h ; завершение программы и выход в ДОС + END diff --git a/dawdi/lab1/hello2.asm b/dawdi/lab1/hello2.asm new file mode 100755 index 0000000..a8c0760 --- /dev/null +++ b/dawdi/lab1/hello2.asm @@ -0,0 +1,52 @@ +; HELLO2 - Учебная программа N2 лаб.раб.#1 по дисциплине "Архитектура компьютера" +; Программа использует процедуру для печати строки +; +; ТЕКСТ ПРОГРАММЫ + +EOFLine EQU '$' ; Определение символьной константы + ; "Конец строки" + +; Стек программы + +ASSUME CS:CODE, SS:AStack + +AStack SEGMENT STACK + DW 12 DUP('!') ; Отводится 12 слов памяти +AStack ENDS + +; Данные программы + +DATA SEGMENT + +; Директивы описания данных + +HELLO DB 'Hello Worlds!', 0AH, 0DH,EOFLine +GREETING DB 'Student from 4350 - $' +DATA ENDS + +; Код программы + +CODE SEGMENT +; Процедура печати строки +WriteMsg PROC NEAR + mov AH,9 + int 21h ; Вызов функции DOS по прерыванию + ret +WriteMsg ENDP + +; Головная процедура +Main PROC FAR + push DS ;\ Сохранение адреса начала PSP в стеке + sub AX,AX ; > для последующего восстановления по + push AX ;/ команде ret, завершающей процедуру. + mov AX,DATA ; Загрузка сегментного + mov DS,AX ; регистра данных. + mov DX, OFFSET HELLO ; Вывод на экран первой + call WriteMsg ; строки приветствия. + mov DX, OFFSET GREETING ; Вывод на экран второй + call WriteMsg ; строки приветствия. + ret ; Выход в DOS по команде, + ; находящейся в 1-ом слове PSP. +Main ENDP +CODE ENDS + END Main \ No newline at end of file diff --git a/dawdi/lab1/report.docx b/dawdi/lab1/report.docx new file mode 100755 index 0000000..46dde3c Binary files /dev/null and b/dawdi/lab1/report.docx differ diff --git a/dawdi/lab2/lr2.asm b/dawdi/lab2/lr2.asm new file mode 100644 index 0000000..f887456 --- /dev/null +++ b/dawdi/lab2/lr2.asm @@ -0,0 +1,86 @@ +; ╨Я╤А╨╛╨│╤А╨░╨╝╨╝╨░ ╨╕╨╖╤Г╤З╨╡╨╜╨╕╤П ╤А╨╡╨╢╨╕╨╝╨╛╨▓ ╨░╨┤╤А╨╡╤Б╨░╤Ж╨╕╨╕ ╨┐╤А╨╛╤Ж╨╡╤Б╤Б╨╛╤А╨░ IntelX86 +EOL EQU '$' +ind EQU 2 +n1 EQU 500 +n2 EQU -50 +; ╨б╤В╨╡╨║ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Л +AStack SEGMENT STACK +DW 12 DUP(?) +AStack ENDS +; ╨Ф╨░╨╜╨╜╤Л╨╡ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Л +DATA SEGMENT +; ╨Ф╨╕╤А╨╡╨║╤В╨╕╨▓╤Л ╨╛╨┐╨╕╤Б╨░╨╜╨╕╤П ╨┤╨░╨╜╨╜╤Л╤Е +mem1 DW 0 +mem2 DW 0 +mem3 DW 0 +vec1 DB 38,37,36,35,31,32,33,34 +vec2 DB 70,80,-70,-80,50,60,-50,-60 +matr DB-2,-1,5,6,-8,-7,3,4,-4,-3,7,8,-6,-5,1,2 +DATA ENDS +; ╨Ъ╨╛╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Л +CODE SEGMENT +ASSUME CS:CODE, DS:DATA, SS:AStack +; ╨У╨╛╨╗╨╛╨▓╨╜╨░╤П ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╨░ +Main PROC FAR +push DS +sub AX,AX +push AX +mov AX,DATA +mov DS,AX +; ╨Я╨а╨Ю╨Т╨Х╨а╨Ъ╨Р ╨а╨Х╨Ц╨Ш╨Ь╨Ю╨Т ╨Р╨Ф╨а╨Х╨б╨Р╨ж╨Ш╨Ш ╨Э╨Р ╨г╨а╨Ю╨Т╨Э╨Х ╨б╨Ь╨Х╨й╨Х╨Э╨Ш╨Щ +; ╨а╨╡╨│╨╕╤Б╤В╤А╨╛╨▓╨░╤П ╨░╨┤╤А╨╡╤Б╨░╤Ж╨╕╤П +mov ax,n1 +mov cx,ax +mov bl,EOL +mov bh,n2 +; ╨Я╤А╤П╨╝╨░╤П ╨░╨┤╤А╨╡╤Б╨░╤Ж╨╕╤П +mov mem2,n2 +mov bx,OFFSET vec1 +mov mem1,ax +; ╨Ъ╨╛╤Б╨▓╨╡╨╜╨╜╨░╤П ╨░╨┤╤А╨╡╤Б╨░╤Ж╨╕╤П +mov al,[bx] +; mov mem3,[bx] +; ╨С╨░╨╖╨╕╤А╨╛╨▓╨░╨╜╨╜╨░╤П ╨░╨┤╤А╨╡╤Б╨░╤Ж╨╕╤П + +; 7 + +mov al,[bx]+3 +mov cx,3[bx] +; ╨Ш╨╜╨┤╨╡╨║╤Б╨╜╨░╤П ╨░╨┤╤А╨╡╤Б╨░╤Ж╨╕╤П +mov di,ind +mov al,vec2[di] +; mov cx,vec2[di] +; ╨Р╨┤╤А╨╡╤Б╨░╤Ж╨╕╤П ╤Б ╨▒╨░╨╖╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡╨╝ ╨╕ ╨╕╨╜╨┤╨╡╨║╤Б╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡╨╝ +mov bx,3 +mov al,matr[bx][di] +; mov cx,matr[bx][di] +; mov ax,matr[bx*4][di] +; ╨Я╨а╨Ю╨Т╨Х╨а╨Ъ╨Р ╨а╨Х╨Ц╨Ш╨Ь╨Ю╨Т ╨Р╨Ф╨а╨Х╨б╨Р╨ж╨Ш╨Ш ╨б ╨г╨з╨Х╨в╨Ю╨Ь ╨б╨Х╨У╨Ь╨Х╨Э╨в╨Ю╨Т +; ╨Я╨╡╤А╨╡╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╡╨╜╨╕╨╡ ╤Б╨╡╨│╨╝╨╡╨╜╤В╨░ +; ------ ╨▓╨░╤А╨╕╨░╨╜╤В 1 +mov ax, SEG vec2 +mov es, ax +mov ax, es:[bx] +mov ax, 0 +; ------ ╨▓╨░╤А╨╕╨░╨╜╤В 2 +mov es, ax +push ds +pop es +mov cx, es:[bx-1] +xchg cx,ax +; ------ ╨▓╨░╤А╨╕╨░╨╜╤В 3 +mov di,ind +mov es:[bx+di],ax +; ------ ╨▓╨░╤А╨╕╨░╨╜╤В 4 +mov bp,sp +; mov ax,matr[bp+bx] +; mov ax,matr[bp+di+si] +; ╨Ш╤Б╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╨╜╨╕╨╡ ╤Б╨╡╨│╨╝╨╡╨╜╤В╨░ ╤Б╤В╨╡╨║╨░ +push mem1 +push mem2 +mov bp,sp +mov dx,[bp]+2 +ret 2 +Main ENDP +CODE ENDS +END Main \ No newline at end of file diff --git a/dawdi/lab2/report.odt b/dawdi/lab2/report.odt new file mode 100644 index 0000000..d20c1ca Binary files /dev/null and b/dawdi/lab2/report.odt differ diff --git a/dawdi/lab2/report.pdf b/dawdi/lab2/report.pdf new file mode 100644 index 0000000..743487d Binary files /dev/null and b/dawdi/lab2/report.pdf differ