Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model tiny
- .code
- org 100h
- main:
- ;; аргументы нормер режима 01 02 07, номер страницы
- ;; в нем выводить
- ; считали аргументы
- ;mov si, 82h
- ;mov cx, 1
- ;mov di, offset our_vm
- ;rep movsb
- ;mov cx, 1
- ;mov si, 84h
- ;mov di, offset our_ap
- ;rep movsb
- mov al, cs:[82h]
- ;xor ah, ah
- sub al, '0'
- mov [our_vm], al
- mov al, cs:[84h]
- ;xor ah, ah
- sub al, '0'
- mov [our_ap], al
- ; узнали, сколько колонок надо отступить
- mov al, 1
- mov bl, cs:[82h]
- ;xor bh, bh
- sub bl, '0'
- call get_column
- ; поменяли режим на новый, старый запомнили
- mov ah, 0fh
- int 10h
- mov [old_vm], al
- mov [old_ap], bh
- xor ax, ax
- mov al, [our_vm]
- push ax
- mov al, [our_ap]
- push ax
- call change_vm
- ;32, 4 - начальные координаты курсора
- mov bh, [our_ap]
- mov cx, 10h
- l:
- push ax
- push bx
- mov al, 1
- mov bl, cs:[82h]
- ;xor bh, bh
- sub bl, '0'
- call get_column
- pop bx
- pop ax
- push cx
- mov cx, 10h
- l_2:
- ; установили курсор
- mov ah, 02h
- mov dh, row
- mov dl, column
- int 10h
- ; выводим символ
- mov ah, 09h
- mov al, symb
- mov bl, 02h
- push cx
- mov cx, 01h
- int 10h
- pop cx
- inc symb
- inc column
- inc dh
- loop l_2
- ;inc column
- pop cx
- ; xchg cx, dx
- inc row
- loop l
- xor ax, ax
- int 16h ; Ждет нажатия клавиши
- xor ax, ax
- mov al, old_vm
- push ax
- mov al, old_ap
- push ax
- call change_vm
- ret
- get_column proc
- cmp al, bl
- jz get1vm
- jmp get_other_vm
- get1vm:
- mov column, 12
- jmp pass
- get_other_vm:
- mov column, 32
- pass:
- ret
- get_column endp
- change_vm proc
- push bp
- mov bp, sp
- push ax
- mov ah, 00h
- mov al, [bp+6] ;vm
- int 10h
- mov ah, 05h
- mov al, [bp+4] ;ap
- int 10h
- pop ax
- pop bp
- ret 4
- change_vm endp
- our_vm db ?
- our_ap db ?
- old_vm db ?
- old_ap db ?
- column db ?
- row db 4
- symb db 00h
- buffer db ?
- end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement