Advertisement
slaza

Untitled

Dec 11th, 2018
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; PointerIntegerAdd (procedura koju uvozi objektni fajl "program.obj" za pristup nizovima)
  2. public __PIA
  3.  
  4. extern _prekidnaRutina : far ptr
  5. extern _glavnaFunkcija : far ptr
  6.  
  7. RAM_SIZE_IN_PAR equ 0x1000
  8.  
  9. ivtRam segment 'IVTRAM'
  10.     dd 256 dup(_prekidnaRutina)
  11. ivtRam ends
  12.  
  13. startup segment 'STARTUP'
  14.     lab_start:
  15.         jmp far ptr pocetak
  16.     lab_end:
  17.         db (16 - (lab_end - lab_start)) dup(0)
  18. startup ends
  19.  
  20. text segment 'CODE'
  21.     pocetak:
  22.         mov ax, stackStart
  23.         mov ss, ax
  24.        
  25.         mov bx, RAM_SIZE_IN_PAR
  26.         cmp bx, ax
  27.        
  28.     mali_ram:
  29.         jbe mali_ram
  30.        
  31.         sub bx, ax  ;vel u PAR
  32.         test bx, 0xf000
  33.         jnz max_sp
  34.        
  35.         mov cl, 4
  36.         shl bx, cl  ;vel u B
  37.        
  38.         mov sp, bx
  39.        
  40.         jmp inic_IVT_transfer
  41.     max_sp:
  42.         mov sp, 0xfffe
  43.        
  44.     inic_IVT_transfer:
  45.         mov ax, 0
  46.        
  47.         mov si, ax
  48.         mov di, ax
  49.    
  50.         mov ax, ivtRam
  51.         mov ds, ax
  52.    
  53.         mov ax, ivtRom
  54.         mov es, ax
  55.        
  56.         mov bx, dataRom
  57.         sub bx, ax  ;vel u PAR
  58.        
  59.         mov cl, 3
  60.         shl bx, cl  ;vel u W
  61.        
  62.         mov cx, bx
  63.        
  64.         jcxz inic_DATA_transfer
  65.     IVT_transfer:
  66.         mov ax, es:[si]
  67.         mov ds:[di], ax
  68.        
  69.         add si, 2
  70.         add di, 2
  71.        
  72.         loop IVT_transfer
  73.        
  74.     inic_DATA_transfer:
  75.         mov ax, 0
  76.        
  77.         mov si, 0
  78.         mov di, 0
  79.        
  80.         mov ax, dataRam
  81.         mov ds, ax
  82.        
  83.         mov ax, dataRom
  84.         mov es, ax
  85.        
  86.         mov bx, dataRomEnd
  87.         sub bx, ax  ;vel u PAR
  88.         mov cl, 3
  89.         shl bx, cl  ;vel u W
  90.        
  91.         mov cx, bx
  92.        
  93.         jcxz gl_prog
  94.     DATA_transfer:
  95.         mov ax, es:[si]
  96.         mov ds:[di], ax
  97.        
  98.         add si, 2
  99.         add di, 2
  100.        
  101.         loop DATA_transfer
  102.        
  103.     gl_prog:
  104.         call _glavnaFunkcija
  105.     inf:
  106.         jmp inf
  107.        
  108.     __PIA proc far
  109.             add AX, BX
  110.             retf
  111.     __PIA endp
  112.  
  113. text ends
  114. ; ----------------------------------
  115.  
  116. ivtRom segment 'IVTROM'
  117. ivtRom ends
  118.  
  119. dataRomEnd segment 'DATAROMEND'
  120. dataRomEnd ends
  121.  
  122. stackStart segment 'STACKSTART'
  123. stackStart ends
  124.  
  125. dataRom segment 'DATAROM'
  126. dataRom ends
  127.  
  128. dataRam segment 'DATARAM'
  129. dataRam ends
  130.  
  131. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement