SHARE
TWEET

Untitled

alexx876 Dec 1st, 2018 156 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. prnstr macro msg
  2.         mov ah, 09h
  3.         lea dx, msg
  4.         int 21h
  5.         endm
  6.  
  7. data segment
  8.         buf1 db "Enter a decimal number : $"
  9.         buf2 db 0ah, "Invalid Decimal Number...$"
  10.         buf3 db 0ah, "Equivalent octal number is : $"
  11.         buf4 db 6
  12.              db 0
  13.              db 6 dup(0)
  14.         multiplier db 0ah
  15. data ends
  16.  
  17. code segment
  18.         assume cs:code, ds:data
  19. start :
  20.         mov ax, data
  21.         mov ds, ax
  22.         mov es, ax
  23.        
  24.        
  25.         Print PROC
  26.             prnstr buf1
  27.             jmp nx
  28.         ret
  29.         Print ENDP
  30.  
  31.         call Print
  32.  
  33.  
  34.         nx:
  35.        
  36.    
  37.         mov ah, 0ah
  38.         lea dx, buf4
  39.         int 21h
  40.  
  41.         mov si, offset buf4 + 2
  42.         mov cl, byte ptr [si-1]
  43.         mov ch, 00h
  44. subtract :
  45.         mov al, byte ptr [si]
  46.         cmp al, 30h
  47.         jnb cont1
  48.         prnstr buf2
  49.         jmp stop
  50. cont1 :
  51.         cmp al, 3ah
  52.         jb cont2
  53.         prnstr buf2
  54.         jmp stop
  55. cont2 :
  56.         sub al, 30h
  57.         mov byte ptr [si], al
  58.  
  59.         inc si
  60.         loop subtract
  61.  
  62.         mov si, offset buf4 + 2
  63.         mov cl, byte ptr [si-1]
  64.         mov ch, 00h
  65.         mov ax, 0000h
  66.        
  67.        
  68.  
  69.  
  70.  
  71. calc :
  72.         mul multiplier
  73.         mov bl, byte ptr [si]
  74.         mov bh, 00h
  75.         add ax, bx
  76.         inc si
  77.         loop calc
  78.         mov si, offset buf4 + 2
  79.         mov bx, ax
  80.         mov dx, 0000h
  81.         mov ax, 8000h
  82.  
  83. convert :
  84.         mov cx, 0000h
  85. conv :
  86.         cmp bx, ax
  87.         jb cont3
  88.         sub bx, ax
  89.         inc cx
  90.         jmp conv
  91. cont3 :
  92.         add cl, 30h
  93.         mov byte ptr [si], cl
  94.         inc si
  95.         mov cx, 0008h
  96.         div cx
  97.         cmp ax, 0000h
  98.         jnz convert
  99.  
  100.         mov byte ptr [si], '$'
  101.         prnstr buf3
  102.         prnstr buf4+2
  103. stop :
  104.         mov ax, 4c00h
  105.         int 21h
  106. code ends
  107.         end start
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top