после деления числа результат поместился в 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
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
mov a,ax
Если тебе нужно вывести данное число на экран, то это делается в четыре действия! Все сразу, как в языках высокого уровня, вывести не получится.
Сначала необходимо вывести знак, если число в al инвертировано (так происходит, когда один из операндов - отрицательный) . Затем вывести целую часть, после запятую, ну и четвертое действие - это вывод остатка. А полностью все число ты в переменной хранить не сможешь!
Сначала необходимо вывести знак, если число в al инвертировано (так происходит, когда один из операндов - отрицательный) . Затем вывести целую часть, после запятую, ну и четвертое действие - это вывод остатка. А полностью все число ты в переменной хранить не сможешь!
Придется сначала преобразовать в десятичный вид: целая часть у Вас есть, а вот с частью после точки придется повозиться
Похожие вопросы
- Помогите разобраться с ассемблером
- Помогите написать на ассемблере програму для вычисления виражения y=(c-(d/2)+33 )/(2*a*a-1). c=5,d=6,a=3.
- Помогите решить задачку (ассемблер-тасм)
- Помогите с заданием по написанию программы на языке ассемблер, вычисляющую значение переменной R.
- Нужна программа на языке ассемблер, вычисляющую значение переменной R.
- Нужна программа на языке ассемблер, вычисляющую значение переменной R.
- Помогите по ассемблеру
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Ассемблер. помогите решить!!!