Advertisement
opsftw

Basic Notepad - 8086ASM

Aug 11th, 2013
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. include emu8086.inc
  2. ORG 100h
  3. CLEAR MACRO
  4.         push    ax
  5.         push    ds      
  6.         push    bx      
  7.         push    cx      
  8.         push    di
  9.         mov     ax, 40h
  10.         mov     ds, ax
  11.         mov     ah, 06h
  12.         mov     al, 0
  13.         mov     bh, 0000_0111b
  14.         mov     ch, 0
  15.         mov     cl, 0
  16.         mov     di, 84h
  17.         mov     dh, [di]
  18.         mov     di, 4ah
  19.         mov     dl, [di]
  20.         dec     dl      
  21.         int     10h
  22.         pop     di      
  23.         pop     cx      
  24.         pop     bx      
  25.         pop     ds      
  26.         pop     ax      
  27. ENDM
  28. WKEY MACRO
  29.     MOV ah, 7
  30.     INT 21h
  31. ENDM
  32. PUTS_DB MACRO string
  33.     PUSH SI
  34.     LEA SI,string              
  35.     CALL PRINT_STRING
  36.     POP SI
  37. ENDM
  38. ENDL MACRO
  39.     PUSH ax
  40.     PUSH bx
  41.     PUSH dx
  42.     MOV ah,03h
  43.     MOV bh,0
  44.     INT 10h
  45.         PUSH ax
  46.         PUSH bx
  47.         PUSH dx
  48.         MOV ah,2
  49.         MOV dl,0
  50.         ADD dh,1
  51.         INT 10h
  52.         POP ax
  53.         POP bx
  54.         POP cx      
  55.     POP ax
  56.     POP bx
  57.     POP dx
  58. ENDM
  59. UP MACRO
  60.     PUSH ax
  61.     PUSH bx
  62.     PUSH dx
  63.     MOV ah,03h
  64.     MOV bh,0
  65.     INT 10h
  66.         PUSH ax
  67.         PUSH bx
  68.         PUSH dx
  69.         MOV ah,2
  70.         SUB dh,1
  71.         CMP dh,-1
  72.         JZ skip_up
  73.         INT 10h  
  74.         skip_up:
  75.         POP ax
  76.         POP bx
  77.         POP cx      
  78.     POP ax
  79.     POP bx
  80.     POP dx
  81. ENDM  
  82. LEFT MACRO
  83.     PUSH ax
  84.     PUSH bx
  85.     PUSH dx
  86.     MOV ah,03h
  87.     MOV bh,0
  88.     INT 10h
  89.         PUSH ax
  90.         PUSH bx
  91.         PUSH dx
  92.         MOV ah,2
  93.         SUB dl,1
  94.         CMP dl,-1
  95.         JZ skip_left
  96.         INT 10h    
  97.         skip_left:
  98.         POP ax
  99.         POP bx
  100.         POP cx      
  101.     POP ax
  102.     POP bx
  103.     POP dx
  104. ENDM
  105. RIGHT MACRO
  106.     PUSH ax
  107.     PUSH bx
  108.     PUSH dx
  109.     MOV ah,03h
  110.     MOV bh,0
  111.     INT 10h
  112.         PUSH ax
  113.         PUSH bx
  114.         PUSH dx
  115.         MOV ah,2
  116.         ADD dl,1
  117.         INT 10h
  118.         POP ax
  119.         POP bx
  120.         POP cx      
  121.     POP ax
  122.     POP bx
  123.     POP dx
  124. ENDM
  125. DOWN MACRO
  126.     PUSH ax
  127.     PUSH bx
  128.     PUSH dx
  129.     MOV ah,03h
  130.     MOV bh,0
  131.     INT 10h
  132.         PUSH ax
  133.         PUSH bx
  134.         PUSH dx
  135.         MOV ah,2
  136.         ADD dh,1
  137.         INT 10h
  138.         POP ax
  139.         POP bx
  140.         POP cx      
  141.     POP ax
  142.     POP bx
  143.     POP dx
  144. ENDM
  145.  
  146. ;user input
  147. JMP while
  148. while:
  149.     mov ah,0
  150.     int 16h
  151.     CMP ah,48h
  152.     JZ uppy
  153.     CMP ah,4Bh
  154.     JZ lefty
  155.     CMP ah,50h
  156.     JZ downy
  157.     CMP ah,4Dh
  158.     JZ righty
  159.     PUTC al
  160.     CMP al,0Dh
  161.     JZ NEXTLINE
  162.     CMP al,08h
  163.     JZ BACKSPACE
  164.     CMP al,11h
  165.     JZ QUIT
  166. JMP while
  167. BACKSPACE:
  168.         PUTC ' '
  169.         PUTC 08h
  170.         JMP while
  171. NEXTLINE:
  172.         ENDL
  173.         JMP while
  174. uppy:
  175.         UP
  176.         JMP while
  177. lefty:
  178.         LEFT
  179.         JMP while
  180. downy:  
  181.         DOWN
  182.         JMP while
  183. righty:
  184.         RIGHT
  185.         JMP while
  186. ;Variales
  187. bye DB 'Come back and see us soon!',0
  188. key DB '{press any key to quit}',0
  189.  
  190. ;Defines
  191. DEFINE_PRINT_STRING
  192.  
  193. ;Return controll
  194. QUIT:
  195. CLEAR
  196. GOTOXY 0,0
  197. PUTS_DB bye
  198. ENDL
  199. ENDL
  200. PUTS_DB key
  201. WKEY      
  202. RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement