Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         assume cs:code1, ds:data
  2.         .286
  3.         .386
  4.        
  5. data    segment
  6.  
  7. cyfra1  db  0
  8.  
  9. cyfra2  db  0
  10.  
  11. komunikat_blad  db  "Wprowadzono niedozwolony znak$"
  12.  
  13.  
  14. data    ends
  15.  
  16. code1   segment
  17.  
  18. start1: mov     ax, seg top1
  19.         mov     ss, ax
  20.         mov     sp, offset top1 ;inicjalizacja stosu
  21.        
  22.        
  23.         mov     ah, 8
  24.         int     21h             ;wprowadzenie wartości z klawiatury
  25.        
  26.         mov     byte ptr[cyfra1],al ;przeniesienie pierwszej cyfry do pamięci
  27.        
  28.        
  29.         mov     ah, 8
  30.         int     21h             ;wprowadzenie drugiej cyfry
  31.        
  32.         mov     byte ptr[cyfra2],al ;przeniesienie drugiej cyfry do pamięci
  33.        
  34.         ;TEST START
  35.  
  36.         xor     dx,dx
  37.         mov     dl,cyfra1
  38.         mov     ah,2
  39.         int     21h
  40.        
  41.         xor     dx,dx
  42.         mov     dl,cyfra2
  43.         mov     ah,2
  44.         int     21h
  45.  
  46.  
  47.        
  48.         mov     ah,4ch
  49.         int     21h
  50.        
  51.         ;TEST KONIEC
  52.        
  53.         mov     al, byte ptr[cyfra1]    ;przetwarzanie pierwszej cyfry
  54.        
  55.         cmp     al, '0'
  56.         jl      blad           
  57.        
  58.         cmp     al, '9'        
  59.         jle     cyfra_1         ;sprawdzenie czy cyfra
  60.        
  61.         cmp     al, 'f'
  62.         jg      blad
  63.        
  64.         cmp     al, 'a'
  65.         jge     MalaLitera_1        ;sprawdzenie czy mala litera
  66.        
  67.         cmp     al, 'A'
  68.         jl      blad
  69.        
  70.         cmp     al, 'F'
  71.         jle     WielkaLitera_1  ;sprawdzenie czy wielka litera
  72.        
  73.  
  74.        
  75. dalej1:
  76.  
  77.  
  78.    
  79.         mov     al, byte ptr[cyfra2]    ;przetwarzanie drugiej cyfry
  80.        
  81.         cmp     al, '0'
  82.         jl      blad           
  83.        
  84.         cmp     al, '9'        
  85.         jle     cyfra           ;sprawdzenie czy cyfra
  86.        
  87.         cmp     al, 'f'
  88.         jg      blad
  89.        
  90.         cmp     al, 'a'
  91.         jge     MalaLitera      ;sprawdzenie czy mala litera
  92.        
  93.         cmp     al, 'A'
  94.         jl      blad
  95.        
  96.         cmp     al, 'F'
  97.         jle     WielkaLitera    ;sprawdzenie czy wielka litera
  98.        
  99.        
  100.        
  101. dalej2:    
  102.         ;WYPISYWANIE NA EKRAN
  103.        
  104.        
  105.         mov     al, 3
  106.         mov     ah, 0
  107.         int     10h             ;zmiana trybu vga
  108.        
  109.         mov     al, byte ptr[cyfra1]
  110.         and     al,01000000b
  111.         test    al,al
  112.         jz      dalej3
  113.        
  114.         mov     ax, 0b800h
  115.         mov     es, ax
  116.         mov     bx, 40*2 + 7*160    ;punkt (40,7)
  117.        
  118.        
  119.         mov     cx,5
  120. p1:     mov     byte ptr es:[bx], '#'
  121.         mov byte ptr es:[bx+1],00000111b
  122.         add     bx,2
  123.         loop p1
  124.        
  125.        
  126. dalej3:
  127.  
  128.         mov     al,cyfra1
  129.         and     al,00100000b
  130.         test    al,al
  131.         jz      dalej4
  132.        
  133.         mov     ax, 0b800h
  134.         mov     es, ax
  135.         mov     bx, 45*2 + 8*160    ;punkt (45,8)
  136.        
  137.        
  138.         mov     cx,3
  139. p2:     mov     byte ptr es:[bx], '#'
  140.         mov byte ptr es:[bx+1],00000111b
  141.         add     bx,160
  142.         loop p2
  143.        
  144. dalej4:
  145.        
  146.         mov     al,cyfra1
  147.         and     al,00010000b
  148.         test    al,al
  149.         jz      dalej5
  150.        
  151.         mov     ax, 0b800h
  152.         mov     es, ax
  153.         mov     bx, 45*2 + 12*160   ;punkt (45,12)
  154.        
  155.        
  156.         mov     cx,3
  157. p3:     mov     byte ptr es:[bx], '#'
  158.         mov byte ptr es:[bx+1],00000111b
  159.         add     bx,160
  160.         loop p3
  161.        
  162. dalej5:
  163.        
  164.         mov     al,cyfra1
  165.         and     al,00001000b
  166.         test    al,al
  167.         jz      dalej6
  168.        
  169.         mov     ax, 0b800h
  170.         mov     es, ax
  171.         mov     bx, 40*2 + 15*160   ;punkt (40,15)
  172.        
  173.        
  174.         mov     cx,5
  175. p4:     mov     byte ptr es:[bx], '#'
  176.         mov byte ptr es:[bx+1],00000111b
  177.         add     bx,2
  178.         loop p4
  179.        
  180.        
  181. dalej6:
  182.        
  183.         mov     al,cyfra1
  184.         and     al,00000100b
  185.         test    al,al
  186.         jz      dalej7
  187.        
  188.         mov     ax, 0b800h
  189.         mov     es, ax
  190.         mov     bx, 39*2 + 12*160   ;punkt (39,12)
  191.        
  192.        
  193.         mov     cx,3
  194. p5:     mov     byte ptr es:[bx], '#'
  195.         mov byte ptr es:[bx+1],00000111b
  196.         add     bx,160
  197.         loop    p5
  198.        
  199. dalej7:
  200.        
  201.         mov     al,cyfra1
  202.         and     al,00000010b
  203.         test    al,al
  204.         jz      dalej8
  205.        
  206.         mov     ax, 0b800h
  207.         mov     es, ax
  208.         mov     bx, 39*2 + 8*160    ;punkt (39,8)
  209.        
  210.        
  211.         mov     cx,3
  212. p6:     mov     byte ptr es:[bx], '#'
  213.         mov byte ptr es:[bx+1],00000111b
  214.         add     bx,160
  215.         loop    p6
  216.        
  217. dalej8:
  218.        
  219.         mov     al,cyfra1
  220.         and     al,00000001b
  221.         test    al,al
  222.         jz      koniec
  223.        
  224.         mov     ax, 0b800h
  225.         mov     es, ax
  226.         mov     bx, 40*2 + 11*160   ;punkt (40,11)
  227.        
  228.        
  229.         mov     cx,5
  230. p7:     mov     byte ptr es:[bx], '#'
  231.         mov byte ptr es:[bx+1],00000111b
  232.         add     bx,160
  233.         loop    p7
  234.        
  235.        
  236.         ;mov        ax, 0b800h
  237.         ;mov        es, ax
  238.         ;mov        bx, 20*2 + 5*160 ; punkt (20,5)
  239.        
  240.         ;mov        byte ptr es:[bx], 'X'
  241.         ;mov        byte ptr es:[bx+1],00000111b
  242.        
  243.         ;mov        ah,4ch
  244.         ;int        21h
  245. koniec:
  246.         mov     ah,4ch
  247.         int     21h
  248.        
  249. cyfra_1:
  250.         sub     al,'0'
  251.         shl     al,4
  252.         mov     byte ptr[cyfra1],al
  253.         jmp     dalej1
  254.        
  255. MalaLitera_1:
  256.         sub     al,'a'
  257.         shl     al,4
  258.         mov     byte ptr[cyfra1],al
  259.         jmp     dalej1
  260.        
  261. WielkaLitera_1:
  262.         sub     al,'A'
  263.         shl     al,4
  264.         mov     byte ptr[cyfra1],al
  265.         jmp     dalej1
  266.        
  267. cyfra:
  268.         sub     al,'0'
  269.         add     al,cyfra1
  270.         mov     byte ptr[cyfra1],al
  271.         jmp     dalej2
  272.        
  273. MalaLitera:
  274.         sub     al,'a'
  275.         add     al,cyfra1
  276.         mov     byte ptr[cyfra1],al
  277.         jmp     dalej2
  278.        
  279. WielkaLitera:
  280.         sub     al,'A'
  281.         add     al,cyfra1
  282.         mov     byte ptr[cyfra1],al
  283.         jmp     dalej2
  284.        
  285. blad:   mov     ax,seg komunikat_blad
  286.         mov     ss,ax
  287.         mov     sp,offset komunikat_blad
  288.         mov     ah,9
  289.         int     21h                         ;Wyświetlanie komunikatu błędu
  290.        
  291.         mov     ah,4ch
  292.         int     21h                         ;Zakończenie programu
  293.        
  294. code1   ends
  295.  
  296.  
  297.  
  298.  
  299. stos1   segment stack
  300.  
  301. top1    db  ?
  302.  
  303. stos1   ends
  304.  
  305. end start1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement