Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- assume cs:code1, ds:data
- .286
- .386
- data segment
- cyfra1 db 0
- cyfra2 db 0
- komunikat_blad db "Wprowadzono niedozwolony znak$"
- data ends
- code1 segment
- start1: mov ax, seg top1
- mov ss, ax
- mov sp, offset top1 ;inicjalizacja stosu
- mov ah, 8
- int 21h ;wprowadzenie wartości z klawiatury
- mov byte ptr[cyfra1],al ;przeniesienie pierwszej cyfry do pamięci
- mov ah, 8
- int 21h ;wprowadzenie drugiej cyfry
- mov byte ptr[cyfra2],al ;przeniesienie drugiej cyfry do pamięci
- ;TEST START
- xor dx,dx
- mov dl,cyfra1
- mov ah,2
- int 21h
- xor dx,dx
- mov dl,cyfra2
- mov ah,2
- int 21h
- mov ah,4ch
- int 21h
- ;TEST KONIEC
- mov al, byte ptr[cyfra1] ;przetwarzanie pierwszej cyfry
- cmp al, '0'
- jl blad
- cmp al, '9'
- jle cyfra_1 ;sprawdzenie czy cyfra
- cmp al, 'f'
- jg blad
- cmp al, 'a'
- jge MalaLitera_1 ;sprawdzenie czy mala litera
- cmp al, 'A'
- jl blad
- cmp al, 'F'
- jle WielkaLitera_1 ;sprawdzenie czy wielka litera
- dalej1:
- mov al, byte ptr[cyfra2] ;przetwarzanie drugiej cyfry
- cmp al, '0'
- jl blad
- cmp al, '9'
- jle cyfra ;sprawdzenie czy cyfra
- cmp al, 'f'
- jg blad
- cmp al, 'a'
- jge MalaLitera ;sprawdzenie czy mala litera
- cmp al, 'A'
- jl blad
- cmp al, 'F'
- jle WielkaLitera ;sprawdzenie czy wielka litera
- dalej2:
- ;WYPISYWANIE NA EKRAN
- mov al, 3
- mov ah, 0
- int 10h ;zmiana trybu vga
- mov al, byte ptr[cyfra1]
- and al,01000000b
- test al,al
- jz dalej3
- mov ax, 0b800h
- mov es, ax
- mov bx, 40*2 + 7*160 ;punkt (40,7)
- mov cx,5
- p1: mov byte ptr es:[bx], '#'
- mov byte ptr es:[bx+1],00000111b
- add bx,2
- loop p1
- dalej3:
- mov al,cyfra1
- and al,00100000b
- test al,al
- jz dalej4
- mov ax, 0b800h
- mov es, ax
- mov bx, 45*2 + 8*160 ;punkt (45,8)
- mov cx,3
- p2: mov byte ptr es:[bx], '#'
- mov byte ptr es:[bx+1],00000111b
- add bx,160
- loop p2
- dalej4:
- mov al,cyfra1
- and al,00010000b
- test al,al
- jz dalej5
- mov ax, 0b800h
- mov es, ax
- mov bx, 45*2 + 12*160 ;punkt (45,12)
- mov cx,3
- p3: mov byte ptr es:[bx], '#'
- mov byte ptr es:[bx+1],00000111b
- add bx,160
- loop p3
- dalej5:
- mov al,cyfra1
- and al,00001000b
- test al,al
- jz dalej6
- mov ax, 0b800h
- mov es, ax
- mov bx, 40*2 + 15*160 ;punkt (40,15)
- mov cx,5
- p4: mov byte ptr es:[bx], '#'
- mov byte ptr es:[bx+1],00000111b
- add bx,2
- loop p4
- dalej6:
- mov al,cyfra1
- and al,00000100b
- test al,al
- jz dalej7
- mov ax, 0b800h
- mov es, ax
- mov bx, 39*2 + 12*160 ;punkt (39,12)
- mov cx,3
- p5: mov byte ptr es:[bx], '#'
- mov byte ptr es:[bx+1],00000111b
- add bx,160
- loop p5
- dalej7:
- mov al,cyfra1
- and al,00000010b
- test al,al
- jz dalej8
- mov ax, 0b800h
- mov es, ax
- mov bx, 39*2 + 8*160 ;punkt (39,8)
- mov cx,3
- p6: mov byte ptr es:[bx], '#'
- mov byte ptr es:[bx+1],00000111b
- add bx,160
- loop p6
- dalej8:
- mov al,cyfra1
- and al,00000001b
- test al,al
- jz koniec
- mov ax, 0b800h
- mov es, ax
- mov bx, 40*2 + 11*160 ;punkt (40,11)
- mov cx,5
- p7: mov byte ptr es:[bx], '#'
- mov byte ptr es:[bx+1],00000111b
- add bx,160
- loop p7
- ;mov ax, 0b800h
- ;mov es, ax
- ;mov bx, 20*2 + 5*160 ; punkt (20,5)
- ;mov byte ptr es:[bx], 'X'
- ;mov byte ptr es:[bx+1],00000111b
- ;mov ah,4ch
- ;int 21h
- koniec:
- mov ah,4ch
- int 21h
- cyfra_1:
- sub al,'0'
- shl al,4
- mov byte ptr[cyfra1],al
- jmp dalej1
- MalaLitera_1:
- sub al,'a'
- shl al,4
- mov byte ptr[cyfra1],al
- jmp dalej1
- WielkaLitera_1:
- sub al,'A'
- shl al,4
- mov byte ptr[cyfra1],al
- jmp dalej1
- cyfra:
- sub al,'0'
- add al,cyfra1
- mov byte ptr[cyfra1],al
- jmp dalej2
- MalaLitera:
- sub al,'a'
- add al,cyfra1
- mov byte ptr[cyfra1],al
- jmp dalej2
- WielkaLitera:
- sub al,'A'
- add al,cyfra1
- mov byte ptr[cyfra1],al
- jmp dalej2
- blad: mov ax,seg komunikat_blad
- mov ss,ax
- mov sp,offset komunikat_blad
- mov ah,9
- int 21h ;Wyświetlanie komunikatu błędu
- mov ah,4ch
- int 21h ;Zakończenie programu
- code1 ends
- stos1 segment stack
- top1 db ?
- stos1 ends
- end start1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement