Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Progr segment
- assume cs:Progr, ds:dane, ss:stosik
- start: mov ax,dane
- mov ds,ax
- mov ax,stosik
- mov ss,ax
- mov sp,offset szczyt
- mov dx,offset wiad3
- mov ah,09h
- int 21h
- mov dx,offset strmax
- mov ah,0Ah
- int 21h
- mov dx,offset czysc
- mov ah,09h
- int 21h ;W tej czesci kodu wyswietlamy lancuch znakow i wprowadzamy liczbe
- mov ax,0
- mov bh,0
- mov ch,0
- mov cl,strlen ;Ilosc powtorzen petli loop1 na podstawie dlugosci liczby np '23' petla powtorzy sie 2 razy, '456' petla powtorzy sie 3 razy
- mov di,offset string
- loop1: jcxz endf
- dec cx
- mov bl,ds:[di]
- sub bl,'0' ;Odejmujemy od wartosci znak '0' przez co sprawdzamy czy wartosc jest liczba
- jb blad1
- cmp bl,10 ;Ustawia flage CF
- jae blad1 ;Jesli CF=0, wtedy wykonuje skok do blad1 czyli podany ciag znakow nie jest liczba
- mov dx,10
- mul dx
- cmp dx,0 ;????Nie wiem czemu ustawia flage ZF=1
- jnz blad2 ;Skok do bledu2 gdy ZF=1 czyli liczba nie jest 16 bitowa
- add ax,bx
- jc blad2
- inc di
- jmp loop1 ;?????? Petla wykona sie max 6 razy
- blad1: mov dx,offset wiad1
- mov ah,09h
- int 21h
- mov ax,4C01h
- int 21h
- blad2: mov dx,offset wiad2
- mov ah,09h
- int 21h
- mov ax,4C01h
- int 21h ;Kominukaty bledu
- endf:
- mov bx,ax
- mov dx,offset wiad4
- mov ah,09h
- int 21h
- mov ax,bx
- mov bx,16
- push bx ;Wyswieletnie tekstu wiad4
- ncyfra: mov dx,0
- div bx ;?????A tu nie wiem co sie dzieje
- push dx
- cmp ax,0
- jz wypisz
- jmp ncyfra
- dodaj1: add dx,7
- jmp przerw
- dodaj2: add dx,'0'
- cmp dx,'9'
- jg dodaj1
- przerw: mov ah,02h
- int 21h
- wypisz: pop dx
- cmp dx,16
- jnge dodaj2
- mov ah,01h
- int 21h
- mov ax,4C00h
- int 21h
- Progr ends
- dane segment
- strmax db 0EFh ;Segment z danmi
- strlen db 0
- string db 0F0h dup(0)
- wiad1 db 'Wykryto zly znak$'
- wiad2 db 'Liczba jest wieksza niz 16 bitow$'
- wiad3 db 'Liczba dziesietna: $'
- wiad4 db 'Liczba heksadecymalna: $'
- czysc db 13,10,'$'
- dane ends
- stosik segment
- dw 100h dup(0)
- szczyt Label word
- stosik ends
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement