Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dane SEGMENT ;segment danych
- tekstx db 0dh, 0ah,"Benc x: ", "$"
- tekstx0 db 0dh, 0ah,"Benc x0: ", "$"
- tekstdx db 0dh, 0ah,"Benc delta x to: ", "$"
- tekstfx db 0dh, 0ah,"Benc f(x0) to: ", "$"
- tekstfpx db 0dh, 0ah,"Benc f'(x0) to: ", "$"
- tekstdxfpx db 0dh, 0ah,"Benc dx*f'(x0) to: ", "$"
- tekstw db 0dh, 0ah,"Siup f(x0 + delta x) = ", "$"
- tenter db 0dh, 0ah, "$"
- nowa db 0dh, 0ah,"odwrocona macierz: ", "$"
- minus db "-", "$"
- spacja db " ", "$"
- x db 0
- x0 db 0
- deltax db 0
- fprimx db 0
- fx db 0
- fxfxp db 0
- wynik db 0
- dane ENDS
- rozkazy SEGMENT 'CODE' use16 ;segment rozkazu
- ASSUME cs:rozkazy, ds:dane
- startuj: mov ax, SEG dane
- mov ds, ax
- czytaj:
- mov dx, offset tekstx ;tekst 11
- call WCZYTAJ
- add [x], al
- mov dx, offset tekstx0 ;tekst 11
- call WCZYTAJ
- add [x0], al
- licz:
- mov al, [x] ;mnozenie a11 a21
- mov bl, [x0]
- sub al, bl
- add [deltax], al
- mov dx, offset tekstdx ;tekst 11
- call WYSWIETL_T
- call WYSWIETL
- mov al, [x0] ;f(x)
- mul al
- add [fx], al
- mov dx, offset tekstfx ;tekst 11
- call WYSWIETL_T
- call WYSWIETL
- mov al, [x0] ;f'(x)
- mov bl, 2
- mul bl
- add [fprimx], al
- mov dx, offset tekstfpx ;tekst 11
- call WYSWIETL_T
- call WYSWIETL
- mov al, [deltax] ;deltax * f'(x)
- mul [fprimx]
- add [fxfxp], al
- mov dx, offset tekstdxfpx ;tekst 11
- call WYSWIETL_T
- call WYSWIETL
- mov al, [fx] ;deltax * f'(x)
- add al, [fxfxp]
- add [wynik], al
- mov dx, offset tekstw ;tekst 11
- call WYSWIETL_T
- call WYSWIETL
- koniec:
- mov ah, 4CH
- int 21H
- NOWALINIA PROC near
- mov ah, 09h ;nowa linia
- mov dx, offset tenter
- int 21h
- ret
- NOWALINIA ENDP
- WCZYTAJ PROC near
- mov ah, 09h ;wyswietlanie
- int 21h
- mov ah, 01h ;czytanie znaku
- int 21h
- cmp al, "k" ;koniec gdy nacięto "k"
- jz koniec
- sub al, 48 ;znak do inta
- ret
- WCZYTAJ ENDP
- WYSWIETL_T PROC near
- mov ah, 09h
- int 21h
- ret
- WYSWIETL_T ENDP
- WYSWIETL PROC near
- mov ah, 0
- mov cx, 0 ;licznik cyfr
- mov bx, 10 ;dzielnik
- p1: mov dx, 0 ;zerowanie starszej części dzielnej
- div bx ;dzielenie przez 10 – iloraz w AX, reszta w DX
- add dx, 30H ;zamiana reszty na kod ASCII
- push dx ;zapisanie cyfry na stosie
- inc cx ;inkrementacja licznika cyfr
- cmp ax, 0 ;porównanie uzyskanego ilorazu
- jnz p1 ;skok gdy iloraz jest różny od zera
- p2: pop dx ;pobranie kodu ASCII kolejnej cyfry
- mov ah, 2
- int 21H ;wyświetlenie cyfry na ekranie
- loop p2 ; sterowanie pętlą wyświetlania
- ret
- wys:
- call NOWALINIA
- mov ah, 02h ;WYSWIETLenie wybiku mnozenia
- add al, 48
- mov dl, al
- int 21h
- ret
- WYSWIETL ENDP
- rozkazy ENDS
- stosik SEGMENT stack
- dw 128 dup(?)
- stosik ENDS
- END startuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement