summaryrefslogtreecommitdiff
path: root/sem2/lab5/task.asm
diff options
context:
space:
mode:
Diffstat (limited to 'sem2/lab5/task.asm')
-rw-r--r--sem2/lab5/task.asm114
1 files changed, 114 insertions, 0 deletions
diff --git a/sem2/lab5/task.asm b/sem2/lab5/task.asm
new file mode 100644
index 0000000..e99eb6d
--- /dev/null
+++ b/sem2/lab5/task.asm
@@ -0,0 +1,114 @@
+.model small
+.data
+old_9 dd 0
+mesg db "To exit press ESC! $"
+mes2 db "Pressed$"
+mess DB "GG$"
+B_UP equ 72 ; вверх
+B_DN equ 80 ; вниз
+B_BS equ 75 ; влево
+B_FWD equ 77 ; вправо
+minAdress DB 0
+step DB 1 ;КОЛИЧЕСТВО СЧИТЫВАЕМЫХ БАЙТ
+tmp DB 4 dup (0)
+
+.stack 100h
+.code
+
+pInitTmp PROC ;инициализация TMP из BX
+ MOV cx, 0004h ; счеткчик выполняем 4 раза
+ MOV si, 0000h ; индекс масcисва - i
+
+ mLoop:
+ PUSH cx
+
+ MOV cl, 04h
+ MOV tmp[si], bl
+ ; сдвиги итераций
+ SHL tmp[si], cl ;сдвиг вправа
+ SHR tmp[si], cl
+ SHR bx, cl
+
+ POP cx ;извлечение счётчика заносим в стек
+ INC si
+ LOOP mLoop
+
+ RET
+pInitTmp ENDP
+
+pPrintTmp PROC ;вывод TMP
+ MOV cx, 0004h; начинаем с 3 4 раза и до нуля выводим этот массив
+ MOV si, 0003h
+
+ mLoop0:
+ MOV dl, tmp[si]
+ DEC si
+ CALL pPrintNum
+ LOOP mLoop0
+
+ MOV dl, 20h
+ CALL pPrintCh
+
+ RET
+pPrintTmp ENDP
+
+pPrintNum PROC ;показывает 1 16-ричный разряд из DL ;
+ ADD dl, 30h ;
+ CMP dl, 3Ah ;
+
+ JL metka
+ ADD dl, 07h ;
+
+ metka:
+ MOV ah, 02h
+ INT 21h
+
+ RET
+pPrintNum ENDP
+
+pPrintCh PROC ;show CHAR
+ MOV ah, 02h
+ INT 21h
+
+ RET
+pPrintCh ENDP
+
+pPrintStr PROC ;показывает STRING
+ MOV ah, 09h
+ INT 21h
+ MOV dl, 0Ah
+ CALL pPrintCh
+
+ RET
+pPrintStr ENDP
+
+pDIByte PROC ;показывает BH
+ mov bx, [cs:di]
+ XCHG bl, bh ; xchg = swap
+ CALL pInitTmp
+ MOV cx, 0002h ;каждый из 4 элементов массива это одна из стрелочек
+ MOV si, 0003h
+
+ mLoop4:
+ MOV dl, tmp[si]
+ DEC si
+ CALL pPrintNum
+ LOOP mLoop4
+
+ INC di
+ MOV dl, 20h
+ CALL pPrintCh
+
+ RET
+pDIByte ENDP
+
+start:
+my9 proc far
+
+ push ax
+ push bx
+ push es
+ push si
+ in al,60h ;Проверяем не нажата ли клавиша UP
+ ADD al, 00h
+END start \ No newline at end of file