Другие языки программирования и технологии

Помогите с Переменными Ассемблер

после деления числа результат поместился в ax, а остаток в dx.
как присвоить переменной (а например) число со заками после запятой, для вывода на экран
Чтобы присвоить переменной результат деления одного числа на другое, включая дробную часть, проще всего использовать сопроцессор:

fild x
fidiv y
fstp a

Но такое представление совершенно не готово для вывода на экран.
Для вывода на экран нужно не присвоить переменной значение, а создать целый массив с кодами символов - представлением числа.
Если в переменной, предназначенной для вывода на экран записано число с плавающей запятой, полученное сопроцессором, то для получения его символьного представления опять же проще всего использовать сопроцессор.

Но можно обойтись только целочисленным делением без привлечения сопроцессора, если совместить получение символьного представления числа с делением:

.model small
.stack 100h

.data
x dw 13
y dw -7
a db 80 dup (?)

.code
N92295247:
    mov bp,@data
    mov ds,bp
    mov es,bp

    lea di,a
    mov ax,y
    cwd
    xor ax,dx
    sub ax,dx
    mov si,ax
    mov bx,dx
    mov ax,x
    cwd
    xor ax,dx
    sub ax,dx
    xor dx,bx
    jns Positive
    mov byte ptr [di],'-'
    inc di
Positive:
    xor dx,dx
    div si
    push dx
    xor cx,cx
    mov bx,10
IntDivLoop:
    xor dx,dx
    div bx
    or dl,'0'
    push dx
    inc cx
    test ax,ax
    jnz IntDivLoop
IntSaveLoop:
    pop ax
    stosb
    loop IntSaveLoop
    pop cx
    jcxz Print
    mov ax,cx
    mov byte ptr [di],'.'
    inc di
    mov cx,bx
FracMulLoop:
    mul bx
    div si
    or al,'0'
    stosb
    test dx,dx
    jz Print
    mov ax,dx
    loop FracMulLoop
Print:
    mov byte ptr [di],'$'
    mov ah,9
    lea dx,a
    int 21h

    mov ah,7
    int 21h
    mov ah,4Ch
    int 21h
    end N92295247
SB
Sinan Beyaz
51 590
Лучший ответ
mov a,ax
Алик Алиев
Алик Алиев
11 198
Если тебе нужно вывести данное число на экран, то это делается в четыре действия! Все сразу, как в языках высокого уровня, вывести не получится.
Сначала необходимо вывести знак, если число в al инвертировано (так происходит, когда один из операндов - отрицательный) . Затем вывести целую часть, после запятую, ну и четвертое действие - это вывод остатка. А полностью все число ты в переменной хранить не сможешь!
Придется сначала преобразовать в десятичный вид: целая часть у Вас есть, а вот с частью после точки придется повозиться