Quantcast
Channel: intel-Based Assembly Language idiv - Stack Overflow
Viewing all articles
Browse latest Browse all 4

intel-Based Assembly Language idiv

$
0
0

I'm trying to get idiv working properly and I've read you put what you want to dividesuch as 25 and then in ebx you put what you want to divide by such as 5 then you do

idiv ebx

which then puts EAX = 5 and then EDX = 0.

However it doesn't do that in my program the input I do is 100000000

output:

Kilobytes: 100000000

Megabytes: 1869375819

Was wondering what am I doing wrong here?

%include "asm_io.inc";; initialized data is put in the .data segment;segment .dataprompt db "Please enter the number of bytes:", 0param db "1 = Calculate it in kilobytes", 0Ah, "2 = Calculate it in megabytes", 10, 0output db "Kilobytes: %d", 0Ah, "MegaBytes: %d", 10, 0;;segment .bss;input resd 1input2 resd 1choice resd 1;; code is put in the .text segment;segment .text    global  asm_mainextern printfasm_main:    enter   0,0                  pusha    mov eax, prompt    call print_string    call read_int    mov [input], eax    mov [input2], eax    sub esp, 10h    push dword [output]    push dword [input2]    push dword [input]    mov eax, param    call print_string    call read_int    cmp eax, 1    je kilobyte; Jump if eax is equal to 1    cmp eax, 2    je megabyte; Jump if eax equal to 2kilobyte:    pop eax             ; Pop input into eax    cdq                 mov ebx, 1024       ; Put 1024 into ebx    idiv ebx             ; EAX = 100000000/1024 = 97656    mov [input], eax    ; Move 97656 into var=input    push dword [input]  ; Put into stack    jmp megabytemegabyte:    pop eax             ; Pop input into eax    cdq             mov ebx, 1048576    ; Put 1048576 into ebx    idiv ebx             ; EAX = 100000000/1024 = 95    mov [input2], eax   ; Move 95 into var=input        push dword [input]  ; Put into stack    jmp printOutprintOut:    mov dword [esp], output    call printf    add esp, 4 * 3    add esp, 10h    popa    mov     eax, 0                leave                         ret

UPDATE

Well I put in xor edx, edx but I am still getting the same output as before. I've looked into my ebook and other sites and it says same thing so I am really unsure of what I am doing wrong. As well tried the idiv route with no luck.


Viewing all articles
Browse latest Browse all 4

Latest Images

Trending Articles





Latest Images