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/lab3/mydump.asm | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 sem2/lab3/mydump.asm (limited to 'sem2/lab3/mydump.asm') diff --git a/sem2/lab3/mydump.asm b/sem2/lab3/mydump.asm new file mode 100644 index 0000000..490283b --- /dev/null +++ b/sem2/lab3/mydump.asm @@ -0,0 +1,92 @@ +; Макрос для вывода одного символа из дампа +PrintWord macro w +local l1,l2,printByte + + push cx + + mov cx,2 + mov bh,w + mov al,bh + shr al,04 + + ; Переводим байт в соответствующий символ по таблице ASCII + printByte: + cmp al,09h + jbe l1 + add al,37h + jmp l2 + l1: + add al,30h + l2: + mov es:[si],ax + mov al,bh + and al,00001111b + add si,2 + loop printByte + + add di,01h + pop cx +endm + + +.model small +.stack 100h +.data + +screenArr dw 1920 dup (0) + +.code +.486 + +start: + mov ax,@DATA + mov ds,ax + + ; Записываем в регистр es адрес начала видеопамяти + mov ax,0b800h + mov es,ax + + ; Обнуляем счётчики + mov si,0 + mov di,0 + + ; Устанавливаем атрибут выводимых символов (белые символы, чёрный фон) + mov ah,7h + + ; Вычисляем размер программы + mov cx,offset exit + sub cx,offset start + + +; Очистим экран +clearScreen: + PUSH cx + PUSH si + + MOV cx,4000 ; 80 * 25 * 2 + + clearScr: + MOV es:[si],0000h + INC si + LOOP clearScr + + POP si + POP cx + + +; Выводим значения дампа памяти +printDump: + mov al,cs:[di] + PrintWord al +loop printDump + +; Приостанавливаем программу для того, чтобы прочитать дамп +input: + MOV ah,07h + INT 21h + +exit: + mov ax,4C00h + int 21h + +END start -- cgit v1.2.3