Logo 
Search:

Assembly Language Articles

Submit Article
Home » Articles » Assembly Language » Homework HelpRSS Feeds

program to convert decimal to octal digits from 0-9999

Posted By: Mitko Mutarow     Category: Assembly Language     Views: 11714

i saw thread about converting decimal to octal in assembly but it works fine from 0-2559.At 2560 it returns 000000 and after that the program gives strange results.I will post the code from the other thread if anyone can find where the things goes wrong.

;This is the program from the other thread.It works fine but from 2560-9999 it returns properly convertet the ;last 3 numbers only 


prnstr macro msg
        mov ah, 09h
        lea dx, msg
        int 21h
        endm

data segment
        buf1 db "Vuvedete desetichno chislo: $"
        buf2 db 0ah, "Nevalidno chislo...$"
        buf3 db 0ah, "Chisloto v osmichna broina sistema e : $"
        buf4 db 6
             db 0
             db 6 dup(0)
        multiplier db 0ah
data ends

code segment
        assume cs:code, ds:data
start :
        mov ax, data
        mov ds, ax
        mov es, ax

        prnstr buf1

        mov ah, 0ah
        lea dx, buf4
        int 21h

        mov si, offset buf4 + 2
        mov cl, byte ptr [si-1]
        mov ch, 00h
subtract :
        mov al, byte ptr [si]
        cmp al, 30h
        jnb cont1
        prnstr buf2
        jmp stop
cont1 :
        cmp al, 3ah
        jb cont2
        prnstr buf2
        jmp stop
cont2 :
        sub al, 30h
        mov byte ptr [si], al

        inc si
        loop subtract

        mov si, offset buf4 + 2
        mov cl, byte ptr [si-1]
        mov ch, 00h
        mov ax, 0000h
calc :
        mul multiplier
        mov bl, byte ptr [si]
        mov bh, 00h
        add ax, bx
        inc si
        loop calc

        mov si, offset buf4 + 2
        mov bx, ax
        mov dx, 0000h
        mov ax, 8000h
convert :
        mov cx, 0000h
conv :
        cmp bx, ax
        jb cont3
        sub bx, ax
        inc cx
        jmp conv
cont3 :
        add cl, 30h
        mov byte ptr [si], cl
        inc si
        mov cx, 0008h
        div cx
        cmp ax, 0000h
        jnz convert

        mov byte ptr [si], '$'
        prnstr buf3
        prnstr buf4+2
stop :
        mov ax, 4c00h
        int 21h
code ends
        end start
  
Share: 


Didn't find what you were looking for? Find more on program to convert decimal to octal digits from 0-9999 Or get search suggestion and latest updates.

Mitko Mutarow
Mitko Mutarow author of program to convert decimal to octal digits from 0-9999 is from Sofia, Bulgaria.
 
View All Articles

 

Other Interesting Articles in Assembly Language:


 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
No Comment Found, Be the First to post comment!