Подсчет разности чисел в формате double IEEE 754 - Assembler
Формулировка задачи:
Доброго времени суток. Написал программу, которая должна считать разность двух чисел введеных в 16 системе счисления в формате double IEEE 754. Но программа считает не то, что нужно.
Например: Вводим первое число (4024000000000000) = 10
Вводим второе число (4014000000000000) = 5
Как результат выводит 0
В чем проблема?
.model small .stack 512 .386 .data vvedite db 13,10,'Vvedite chislo.',13,10,'$' rezultat db 'Rezultat:$' z1 dd 0 .code mov ax, @data mov ds, ax finit mov ah, 9 lea dx, vvedite int 21h mov cx, 2 chislo: push cx mov cx, 16 mov ebx, 0 schitivay: mov ah, 10h int 16h cmp al, '0' jl schitivay cmp al, '9' jle pish10 cmp al,'A' jl schitivay cmp al,'F' jle pish16d cmp al, 'a' jl schitivay cmp al, 'f' jg schitivay pish16m: mov ah, 0eh int 10h sub al, 87 mov ah, 0 jmp koniec_petli pish16d: mov ah, 0eh int 10h sub al, 55 jmp koniec_petli
Решение задачи: «Подсчет разности чисел в формате double IEEE 754»
textual
Листинг программы
.model small .stack 512 .386 .data vvedite db 13,10,'Vvedite chislo.',13,10,'$' rezultat db 'Rezultat:$' z1 dd 0 .code mov ax, @data mov ds, ax finit mov ah, 9 lea dx, vvedite int 21h mov cx, 2 chislo: push cx mov cx, 16 mov ebx, 0 schitivay: mov ah, 10h int 16h cmp al, '0' jl schitivay cmp al, '9' jle pish10 cmp al,'A' jl schitivay cmp al,'F' jle pish16d cmp al, 'a' jl schitivay cmp al, 'f' jg schitivay pish16m: mov ah, 0eh int 10h sub al, 87 mov ah, 0 jmp koniec_petli pish16d: mov ah, 0eh int 10h sub al, 55 jmp koniec_petli pish10: mov ah, 0eh int 10h sub al, '0' mov ah, 0 koniec_petli: shl ebx, 1 shl ebx, 1 shl ebx, 1 shl ebx, 1 sub bx, ax loop schitivay pop cx mov z1, ebx fld z1 mov al, 13 mov ah, 0eh int 10h mov al, 10 mov ah, 0eh int 10h loop chislo fsub fst z1 mov ebx, z1 lea dx, rezultat mov ah, 09h int 21h mov cx, 16 xor ax,ax _2: rol ebx, 4 mov al, bl and al, 00001111b cmp al, 9 ja bukva add al, '0' jmp pish bukva: add al, 55 pish: mov ah, 0eh int 10h loop _2 ;koniec mov ah, 0 int 16h mov ax,4c00h int 21h end xor ax,ax _2: mov al, bl and al, 00001111b cmp al, 9 ja bukva add al, '0' jmp pish bukva: add al, 55 pish: mov ah, 0eh int 10h loop _2
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д