Advertisement
Talar97

[AK] Konwersja DEC -> BIN, HEX

Jan 4th, 2019
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Progr           segment
  2.                 assume  cs:Progr, ds:dane, ss:stosik
  3.  
  4. start:          mov ax,dane
  5.                 mov ds,ax
  6.                 mov ax,stosik
  7.                 mov ss,ax
  8.                 mov sp, offset szczyt
  9.  
  10.                 jmp wprowadz
  11.  
  12. blad:           mov ah, 09H
  13.                 lea dx, error
  14.                 int 21H
  15.                 jmp start
  16.  
  17. ustawRej:       mov ax, 0H
  18.                 mov bx, 0H
  19.                 mov cx, 0H
  20.                 mov dx, 0H
  21.                 mov cl, ile
  22.                 ret
  23.  
  24. bladOvfl:       mov ah, 09H
  25.                 lea dx, errOvfl
  26.                 int 21H
  27.                 jmp start
  28.  
  29. wprowadz:       mov ah, 09H ;wyswietlanie tekstu
  30.                 lea dx,welcome
  31.                 INT 21H
  32.  
  33.                 mov ah, 0AH ;wprowadzanie znakow z klawiatury
  34.                 lea dx, max
  35.                 int 21H
  36.  
  37.                 call ustawRej
  38.                 cmp cl,0
  39.                     je wprowadz
  40.  
  41. czyLiczby:      mov al, tab[bx]
  42.                 sub al, 30H
  43.                 cmp al, 9
  44.                     jg blad
  45.                 cmp al, 0
  46.                     jl blad
  47.                 inc bx
  48.                 loop czyLiczby
  49.  
  50.                 call ustawRej
  51.                 dec cl
  52. sprZakres:      mov al, tab[bx]
  53.                 sub al, 30H
  54.                 mov ah, 0H
  55.                 add dx, ax
  56.                 jc blad
  57.                 cmp cl, 0
  58.                 je wyswietlDec
  59.                 mov ax, 10D
  60.                 mul dx
  61.                 jo bladOvfl
  62.                 mov dx, ax
  63.                 inc bx
  64.                 dec cl
  65.                 jmp sprZakres
  66.  
  67. wyswietlDec:    mov wynik, dx
  68.                 mov ah, 09H
  69.                 lea dx, txtDec
  70.                 int 21H
  71.                 call ustawRej
  72.  
  73. decWart:        mov ah, 02H
  74.                 mov dl, tab[bx]
  75.                 int 21H
  76.                 inc bx
  77.                 loop decWart
  78.  
  79. wyswietlHex:    mov ah, 09H
  80.                 lea dx, txtHex
  81.                 int 21H
  82.                 call ustawRej
  83.                 mov cl, 16D
  84.  
  85. hexWart:        sub cl, 4
  86.                 mov ax, wynik
  87.                 shr ax, cl
  88.                 and ax, 000Fh
  89.                 mov bx, ax
  90.                 mov ah, 02H
  91.                 mov dl, wartHex[bx]
  92.                 int 21H
  93.                 cmp cl, 0
  94.                 je wyswietlBin
  95.                 jmp hexWart
  96.  
  97. wyswietlBin:    mov ah, 09H
  98.                 lea dx, txtBin
  99.                 int 21H
  100.                 call ustawRej
  101.                 mov cx, wynik
  102.  
  103. binWart:        cmp bx, 16D
  104.                 je zakonczenie
  105.                 shl cx, 1
  106.                 inc bx
  107.                 jc jeden
  108.                 jnc zero
  109.  
  110. jeden:          mov ah, 02H
  111.                 mov dl, '1'
  112.                 int 21H
  113.                 jmp binWart
  114.  
  115. zero:           mov ah, 02H
  116.                 mov dl, '0'
  117.                 int 21H
  118.                 jmp binWart
  119.  
  120. zakonczenie:    mov ah,4CH ; rozkaz exit
  121.                 mov al,00H ; 00 - exit code, normal termination
  122.                 int 21H
  123.  
  124. Progr           ends
  125.  
  126. dane            segment
  127.                 welcome db 10,13,'Wprowadz liczbe <0:65535>:','$'
  128.                 errOvfl db 10,13,'Liczba spoza zakresu.',10,13,'$'
  129.                 error db 10,13,'Nieoczekiwany blad.',10,13,'$'
  130.                 wartHex db '0123456789ABCDEF','$'
  131.                 txtDec db 10,13,'DEC: ','$'
  132.                 txtHex db 10,13,'HEX: ','$'
  133.                 txtBin db 10,13,'BIN: ','$'
  134.  
  135.                 max db 6
  136.                 ile db ?
  137.                 tab db 6 dup(0)
  138.  
  139.                 wynik dw 0
  140. dane            ends
  141.  
  142. stosik          segment
  143.                 dw    100h dup(0)
  144. szczyt          Label word
  145. stosik          ends
  146. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement