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/lab5/task.asm | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 sem2/lab5/task.asm (limited to 'sem2/lab5/task.asm') 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 -- cgit v1.2.3