Advertisement
qtinio

siup asm

May 17th, 2019
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. dane SEGMENT ;segment danych
  2. tekstx db 0dh, 0ah,"Benc x: ", "$"
  3. tekstx0 db 0dh, 0ah,"Benc x0: ", "$"
  4. tekstdx db 0dh, 0ah,"Benc delta x to: ", "$"
  5. tekstfx db 0dh, 0ah,"Benc f(x0) to: ", "$"
  6. tekstfpx db 0dh, 0ah,"Benc f'(x0) to: ", "$"
  7. tekstdxfpx db 0dh, 0ah,"Benc dx*f'(x0) to: ", "$"
  8. tekstw db 0dh, 0ah,"Siup f(x0 + delta x) = ", "$"
  9. tenter db 0dh, 0ah, "$"
  10. nowa db 0dh, 0ah,"odwrocona macierz: ", "$"
  11. minus db "-", "$"
  12. spacja db " ", "$"
  13. x db 0
  14. x0 db 0
  15. deltax db 0
  16. fprimx db 0
  17. fx db 0
  18. fxfxp db 0
  19. wynik db 0
  20. dane ENDS
  21.  
  22. rozkazy SEGMENT 'CODE' use16 ;segment rozkazu
  23. ASSUME cs:rozkazy, ds:dane
  24.  
  25. startuj: mov ax, SEG dane
  26. mov ds, ax
  27.  
  28. czytaj:
  29. mov dx, offset tekstx ;tekst 11
  30. call WCZYTAJ
  31. add [x], al
  32.  
  33. mov dx, offset tekstx0 ;tekst 11
  34. call WCZYTAJ
  35. add [x0], al
  36.  
  37. licz:
  38. mov al, [x] ;mnozenie a11 a21
  39. mov bl, [x0]
  40. sub al, bl
  41. add [deltax], al
  42. mov dx, offset tekstdx ;tekst 11
  43. call WYSWIETL_T
  44. call WYSWIETL
  45.  
  46. mov al, [x0] ;f(x)
  47. mul al
  48. add [fx], al
  49. mov dx, offset tekstfx ;tekst 11
  50. call WYSWIETL_T
  51. call WYSWIETL
  52.  
  53. mov al, [x0] ;f'(x)
  54. mov bl, 2
  55. mul bl
  56. add [fprimx], al
  57. mov dx, offset tekstfpx ;tekst 11
  58. call WYSWIETL_T
  59. call WYSWIETL
  60.  
  61. mov al, [deltax] ;deltax * f'(x)
  62. mul [fprimx]
  63. add [fxfxp], al
  64. mov dx, offset tekstdxfpx ;tekst 11
  65. call WYSWIETL_T
  66. call WYSWIETL
  67.  
  68. mov al, [fx] ;deltax * f'(x)
  69. add al, [fxfxp]
  70. add [wynik], al
  71. mov dx, offset tekstw ;tekst 11
  72. call WYSWIETL_T
  73. call WYSWIETL
  74.  
  75.  
  76. koniec:
  77. mov ah, 4CH
  78. int 21H
  79.  
  80. NOWALINIA PROC near
  81. mov ah, 09h ;nowa linia
  82. mov dx, offset tenter
  83. int 21h
  84. ret
  85. NOWALINIA ENDP
  86.  
  87. WCZYTAJ PROC near
  88. mov ah, 09h ;wyswietlanie
  89. int 21h
  90. mov ah, 01h ;czytanie znaku
  91. int 21h
  92. cmp al, "k" ;koniec gdy nacięto "k"
  93. jz koniec
  94. sub al, 48 ;znak do inta
  95. ret
  96. WCZYTAJ ENDP
  97.  
  98. WYSWIETL_T PROC near
  99. mov ah, 09h
  100. int 21h
  101. ret
  102. WYSWIETL_T ENDP
  103.  
  104. WYSWIETL PROC near
  105. mov ah, 0
  106. mov cx, 0 ;licznik cyfr
  107. mov bx, 10 ;dzielnik
  108. p1: mov dx, 0 ;zerowanie starszej części dzielnej
  109. div bx ;dzielenie przez 10 – iloraz w AX, reszta w DX
  110. add dx, 30H ;zamiana reszty na kod ASCII
  111. push dx ;zapisanie cyfry na stosie
  112. inc cx ;inkrementacja licznika cyfr
  113. cmp ax, 0 ;porównanie uzyskanego ilorazu
  114. jnz p1 ;skok gdy iloraz jest różny od zera
  115. p2: pop dx ;pobranie kodu ASCII kolejnej cyfry
  116. mov ah, 2
  117. int 21H ;wyświetlenie cyfry na ekranie
  118. loop p2 ; sterowanie pętlą wyświetlania
  119. ret
  120.  
  121. wys:
  122. call NOWALINIA
  123. mov ah, 02h ;WYSWIETLenie wybiku mnozenia
  124. add al, 48
  125. mov dl, al
  126. int 21h
  127. ret
  128. WYSWIETL ENDP
  129.  
  130. rozkazy ENDS
  131.  
  132. stosik SEGMENT stack
  133. dw 128 dup(?)
  134. stosik ENDS
  135.  
  136. END startuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement