Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > В чем проблема (переполнение деления)


Автор: ciget 2.9.2007, 21:56
Почему код 
Код

.model small
.stack 100h
.data
    ten        dw 10
    string    db 5 dup (?)
.code
start:
    mov ah,2ah
    int 21h
    mov dl, al
    xor ax, ax
    mov al, dl
    mov bx, 7
    mov ax, 7
    div bx
    mov dl, ah
    mov ah,02h
    add dl,30h
    int 21h
    mov ah,4ch
    int 21h
end start

Вызывает ошибку - переполнение деления
Огромное спасибо

Автор: sgi1981 3.9.2007, 01:45
Если в регистре dx будет беззнаковое значение равное или больше 7 - будет переполнение деления.
Мне неизвестно, что было в регистре al после первой инструкции int 21h.
Мне неизвестно, что было в регистре dh после первой инструкции int 21h.
Регистр dh - старший байт регистра dx, и он не участвовал в приведенной последовательности инструкий до операции деления, но в него могли записать значение какие-нибудь другие подпрограммы.

Автор: xseroxas 24.9.2007, 16:10
Код

.model small
.stack 100h
.data
.code
start :
mov ax,@data
mov ds,ax

mov bx,10
mov ax,1123

div bx

add dl,30h

mov ah,02h
int 21h

mov ax,4c00h
int 21h

end start
  У меня то самое в debugere dx=0003 после деленияб что нитак????

Автор: dumb 24.9.2007, 16:48
Цитата(xseroxas @  24.9.2007,  17:10 Найти цитируемый пост)
что нитак?
после деления в dx помещается остаток от деления. и, в данном случае(div reg16), перед делением dx нужно обнулять.

Автор: xseroxas 24.9.2007, 16:50
спасиба smile забыл обнулит

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)