Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. data segment
  2. data ends
  3.  
  4. code segment
  5. ; выводит число из регистра AX на экран
  6. ; входные данные:
  7. ; ax - число для отображения
  8. ; cx - система счисления (не больше 10)
  9. Show_AX proc
  10.         push    ax
  11.         push    bx
  12.         push    cx
  13.         push    dx
  14.         push    di
  15.  
  16.         ;mov     cx, 10          ; cx - основание системы счисления
  17.         xor     di, di          ; di - кол. цифр в числе
  18.  
  19. @@Conv:
  20.         xor     dx, dx
  21.         div     cx              ; dl = num mod 10
  22.         add     dl, '0'         ; перевод в символьный формат
  23.         inc     di
  24.         push    dx              ; складываем в стэк
  25.         or      ax, ax
  26.         jnz     @@Conv
  27.         ; выводим из стэка на экран
  28. @@Show:
  29.         pop     dx              ; dl = очередной символ
  30.         mov     ah, 2           ; ah - функция вывода символа на экран
  31.         int     21h
  32.         dec     di              ; повторяем пока di<>0
  33.         jnz     @@Show
  34.  
  35.         pop     di
  36.         pop     dx
  37.         pop     cx
  38.         pop     bx
  39.         pop     ax
  40.         ret
  41. Show_AX endp
  42.  
  43. start:
  44.     mov ax, 0 ;Функция 00h предназначена для выяснения, загружен ли в память
  45.     int 33h ;драйвер мыши. Если эта функция возвращает AX = 0, то драйвер
  46.     test ax, ax;отсутствует. Если драйвер загружен, то AX = 0FFFFh , а в
  47.     jz exit; регистре BX - число кнопок мыши
  48.     mov ax, 0Ch ; реакция на события от мыши
  49.     push cs
  50.     pop es
  51.     mov cx, 000001b ; [mid_off, mid_on, right_off, right_on, left_off, left_on, movement]
  52.     mov dx, offset mouse
  53.     int 33h
  54.     mov ax, 1 ; Функция 01h включает изображение курсора мыши на экране.
  55.     int 33h
  56.    
  57.     x dword 0
  58.    
  59. main_loop:
  60.     jmp main_loop
  61.    
  62. mouse:
  63.     ;mov ax, 3
  64.     ;int 33h
  65.     ;на выходе в bx - состояние кнопок 0,1,2 биты - левая, правая, средняя кнопка соответственно
  66.     ;cx - x координата
  67.     ;dx - y координата
  68.     ;cmp dx, 100
  69.     ;jg show_cursor
  70.     ;jnge hide_cursor
  71.     ;mov dl, '+'
  72.     ;mov ah, 2h
  73.     ;int 21h
  74.     ;add x, 1
  75.     ;push x
  76.     ;pop ax
  77.     mov eax, x
  78.    
  79.     mov ax, 1 ; поместим отображаемое число в ax
  80.     mov cx, 10 ;основание системы счисления выводимого числа
  81.     call Show_AX
  82.     ;nop
  83.    
  84. ;show_cursor:
  85.     ;mov ax, 1
  86.     ;int 33h
  87.     ;jmp mouse
  88.    
  89. ;hide_cursor:
  90.     ;mov ax, 2
  91.     ;int 33h
  92.    
  93. exit:
  94.     retf
  95.    
  96. code ends
  97. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement