Подсчет разности чисел в формате double IEEE 754 - Assembler

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Написал программу, которая должна считать разность двух чисел введеных в 16 системе счисления в формате double IEEE 754. Но программа считает не то, что нужно. Например: Вводим первое число (4024000000000000) = 10 Вводим второе число (4014000000000000) = 5 Как результат выводит 0 В чем проблема?
Листинг программы
  1. .model small
  2. .stack 512
  3. .386
  4. .data
  5. vvedite db 13,10,'Vvedite chislo.',13,10,'$'
  6. rezultat db 'Rezultat:$'
  7. z1 dd 0
  8. .code
  9. mov ax, @data
  10. mov ds, ax
  11. finit
  12. mov ah, 9
  13. lea dx, vvedite
  14. int 21h
  15. mov cx, 2
  16. chislo:
  17. push cx
  18. mov cx, 16
  19. mov ebx, 0
  20. schitivay:
  21. mov ah, 10h
  22. int 16h
  23. cmp al, '0'
  24. jl schitivay
  25. cmp al, '9'
  26. jle pish10
  27. cmp al,'A'
  28. jl schitivay
  29. cmp al,'F'
  30. jle pish16d
  31. cmp al, 'a'
  32. jl schitivay
  33. cmp al, 'f'
  34. jg schitivay
  35. pish16m:
  36. mov ah, 0eh
  37. int 10h
  38. sub al, 87
  39. mov ah, 0
  40. jmp koniec_petli
  41. pish16d:
  42. mov ah, 0eh
  43. int 10h
  44. sub al, 55
  45. jmp koniec_petli

Решение задачи: «Подсчет разности чисел в формате double IEEE 754»

textual
Листинг программы
  1. .model small
  2. .stack 512
  3. .386
  4. .data
  5. vvedite db 13,10,'Vvedite chislo.',13,10,'$'
  6. rezultat db 'Rezultat:$'
  7. z1 dd 0
  8. .code
  9.  
  10. mov ax, @data
  11. mov ds, ax
  12. finit
  13.  
  14. mov ah, 9
  15. lea dx, vvedite
  16. int 21h
  17.  
  18. mov cx, 2
  19.  
  20. chislo:
  21. push cx
  22.  
  23. mov cx, 16
  24. mov ebx, 0
  25.  
  26. schitivay:
  27. mov ah, 10h
  28. int 16h
  29. cmp al, '0'
  30. jl schitivay
  31.  
  32. cmp al, '9'
  33. jle pish10
  34.  
  35. cmp al,'A'
  36. jl schitivay
  37. cmp al,'F'
  38. jle pish16d
  39.  
  40. cmp al, 'a'
  41. jl schitivay
  42. cmp al, 'f'
  43. jg schitivay
  44.  
  45. pish16m:
  46. mov ah, 0eh
  47. int 10h
  48.  
  49. sub al, 87
  50. mov ah, 0
  51.  
  52. jmp koniec_petli
  53.  
  54. pish16d:
  55. mov ah, 0eh
  56. int 10h
  57.  
  58. sub al, 55
  59.  
  60. jmp koniec_petli
  61.  
  62.  
  63.  
  64. pish10:            
  65.    mov ah, 0eh    
  66.    int 10h        
  67.                  
  68.    sub al, '0'  
  69.    mov ah, 0    
  70.                  
  71. koniec_petli:    
  72.                  
  73.    shl ebx, 1    
  74.    shl ebx, 1    
  75.    shl ebx, 1    
  76.    shl ebx, 1    
  77.    sub bx, ax  
  78.                
  79.                
  80.    loop schitivay  
  81.                  
  82.    pop cx        
  83.    mov z1, ebx            
  84.    fld z1      
  85.                  
  86.    mov al, 13        
  87.    mov ah, 0eh  
  88.    int 10h      
  89.                  
  90.    mov al, 10        
  91.    mov ah, 0eh  
  92.    int 10h      
  93.                  
  94.    loop chislo
  95.                      
  96.    fsub        
  97.    fst z1      
  98.    mov ebx, z1
  99.                        
  100. lea dx, rezultat        
  101. mov ah, 09h            
  102. int 21h        
  103.                
  104. mov cx, 16    
  105. xor ax,ax      
  106.  _2:          
  107. rol ebx, 4    
  108. mov al, bl    
  109. and al, 00001111b      
  110.                
  111. cmp al, 9      
  112. ja bukva      
  113.                
  114. add al, '0'    
  115. jmp pish      
  116.                
  117. bukva:        
  118. add al, 55    
  119.                
  120. pish:          
  121. mov ah, 0eh    
  122. int 10h        
  123.                
  124. loop _2          
  125.                
  126. ;koniec        
  127. mov ah, 0      
  128. int 16h              
  129.                
  130.                
  131.                
  132.                            
  133.                
  134. mov ax,4c00h    
  135. int 21h        
  136. end            
  137.                
  138.                
  139. xor ax,ax      
  140.  _2:          
  141. mov al, bl    
  142. and al, 00001111b      
  143.                
  144. cmp al, 9      
  145. ja bukva    
  146.                
  147. add al, '0'    
  148. jmp pish    
  149.                
  150. bukva:        
  151. add al, 55    
  152.                
  153. pish:          
  154. mov ah, 0eh    
  155. int 10h        
  156.                
  157. loop _2

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы