Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model tiny
  2. .code
  3. .386
  4. org 100h
  5.  
  6. start:
  7.   ; start attributes
  8.   mov bx, 001fh
  9.   mov ah, 0fh
  10.   int 10h
  11.   mov byte ptr columns_count, ah
  12.   mov byte ptr current_page,  bh
  13.   mov al, 20h
  14.   call background
  15.   mov dh, 04h
  16.   call top_border
  17.   mov al, 186
  18.   mov dh, 05h
  19.   dec dl
  20.   call side_border
  21.   mov dh, 05h
  22.   call place_col
  23.   call side_border
  24.   call bot_border
  25.   call place_col
  26.   inc dl
  27.   inc dl
  28.   mov dh, 05h
  29.   mov cx, 1
  30.   call ascii_table
  31.   wait_input:
  32.   xor ax, ax
  33.   int 16h
  34.   mov ax, 0B800h
  35.   xor di, di
  36.   mov cx, 25*80
  37.   mov es, ax
  38.   mov ax, 720h
  39.   rep stosw
  40.   ret
  41.  
  42. ascii_table proc
  43.   xor al, al
  44.   write_loop:
  45.   call write
  46.   inc dl
  47.   inc al
  48.   call check_div
  49.   jne write_loop
  50.   inc dh
  51.   call place_col
  52.   inc dl
  53.   inc dl
  54.   cmp dh, 15h
  55.   je wait_input
  56.   jmp write_loop
  57.   ret
  58. endp ascii_table
  59.  
  60. bot_border proc
  61.   call place_col
  62.   mov cx, 01h
  63.   mov al, 200
  64.   call write
  65.   mov cx, 33
  66.   mov al, 205
  67.   call write
  68.   mov cx, 01h
  69.   mov al, 188
  70.   call write
  71.   ret
  72. endp bot_border
  73.  
  74. top_border proc
  75.   call place_col
  76.   mov cx, 01h
  77.   mov al, 201
  78.   call write
  79.   mov cx, 33
  80.   mov al, 205
  81.   call write
  82.   mov cx, 01h
  83.   mov al, 187
  84.   call write
  85.   ret
  86. endp top_border
  87.  
  88. side_border proc
  89.   mov cx, 16
  90.   puts:
  91.     call put
  92.     loop puts
  93.   ret
  94. endp side_border
  95.  
  96. place_col proc
  97.   mov dl, [columns_count]
  98.   sub dl, 35
  99.   shr dl, 1
  100.   ret
  101. endp place_col
  102.  
  103. write proc
  104.   mov ah, 02h
  105.   int 10h
  106.   mov ah, 09h
  107.   int 10h
  108.   add dx, cx
  109.   ret
  110. endp write
  111.  
  112. put proc
  113.   push cx
  114.   mov cx, 1
  115.   call write
  116.   dec dx
  117.   inc dh
  118.   pop cx
  119.   ret
  120. endp put
  121.  
  122. background proc
  123.   mov bh, [current_page]
  124.   mov cl, [columns_count]
  125.   xor dx, dx
  126.   draw:
  127.     call write
  128.     cmp dx, 2500h
  129.     jne draw
  130.   ret
  131. endp background
  132.  
  133. check_div proc
  134.   push ax
  135.   push cx
  136.     xor ah, ah
  137.     mov ch, 16
  138.     div ch
  139.     cmp ah, 0
  140.   pop cx
  141.   pop ax
  142.   ret
  143. endp check_div
  144.  
  145. columns_count db ?
  146. current_page  db ?
  147.  
  148. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement