Работа с большими числами - Assembler (223762)

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

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

Написала программу, с маленькими числами работает. Подскажите, пожалуйста, как сделать, чтобы с большими числами работала.
Листинг программы
  1. text segment 'code'
  2. assume cs:text, ds:data
  3. myproc proc
  4. mov ax, data
  5. mov ds, ax
  6. lea dx, str1
  7. mov ah, 09h
  8. int 21h
  9.  
  10. mov ax,138
  11. imul x
  12. mov bx,dx
  13. mov cx,ax
  14. mov ax,k
  15. imul z
  16. add ax,cx
  17. mov cx,ax
  18. mov ax,k
  19. mov bx,z
  20. sub ax,bx
  21. mov bx,ax
  22. mov ax,cx
  23. idiv bx
  24. mov bx,ax
  25. mov ax,x
  26. imul x
  27. sub bx,ax
  28. mov ax,bx
  29.  
  30. call outp
  31. mov y, ax
  32. lea dx, str2
  33. mov ah, 09h
  34. int 21h
  35. mov ax, 4c00h
  36. int 21h
  37. myproc endp
  38. outp proc
  39. push ax
  40. push cx
  41. push dx
  42. push bx
  43. xor cx,cx
  44. mov bx, 000Ah
  45. cont: xor dx, dx
  46. div bx
  47. push dx
  48. inc cx
  49. or ax, ax
  50. jnz cont
  51. mov ah, 02h
  52. next:
  53. pop dx
  54. add dl, 30h
  55. int 21h
  56. loop next
  57. pop bx
  58. pop dx
  59. pop cx
  60. pop ax
  61. ret
  62. outp endp
  63. text ends
  64. data segment
  65. x dw 10
  66. k dw 4400
  67. z dw 4000
  68. y dw ?
  69. str1 db 'reschenie y=(138x+k*z)/(k-z)-x*x', 0Ah, 0Dh, '$'
  70. str2 db 0Ah, 0Dh, 'rechenie zakoncheno', 0Ah, 0Dh, '$'
  71. data ends
  72. stack1 segment para stack 'stack'
  73. db 128 dup (?)
  74. stack1 ends
  75. end myproc

Решение задачи: «Работа с большими числами»

textual
Листинг программы
  1. ;fasm code....
  2. format MZ
  3. org  100h
  4. jmp  start
  5.  
  6. str1  db   13,10,' X=10, K=4400, Z=4000'
  7.       db   13,10,' Y=(138x+k*z)/(k-z)-x*x'
  8.       db   13,10,' -------------------------'
  9.       db   13,10,' Result: $'
  10.  
  11. X     dd   10
  12. K     dd   4400
  13. Z     dd   4000
  14.  
  15. start:  mov   ah,9          ; мессага
  16.         mov   dx,str1       ;
  17.         int   21h           ;
  18.  
  19.         mov   ebx,[X]       ;
  20.         imul  ebx,ebx       ;
  21.         mov   eax,[K]       ;
  22.         sub   eax,[Z]       ;
  23.         sub   eax,ebx       ;
  24.         push  eax           ; запомним правую часть
  25.  
  26.         mov   ebx,[K]       ;
  27.         imul  ebx,[Z]       ;
  28.         mov   eax,138       ;
  29.         imul  eax,[X]       ;
  30.         add   eax,ebx       ;
  31.  
  32.         pop   ebx           ;
  33.         xor   edx,edx       ;
  34.         div   ebx           ; результат в EAX:EDX
  35.  
  36.         push  edx           ; запомним остаток
  37.         mov   ebx,10        ; система счисления
  38.         call  hex2asc       ; выводим EAX на экран! (целое)
  39.         mov   al,'.'        ; разделитель..
  40.         int   29h           ;
  41.         pop   eax           ; выводим EDX на экран! (остаток)
  42.         call  hex2asc       ;
  43.  
  44. exit:   xor   ax,ax         ;
  45.         int   16h           ;
  46.         mov   ax,4c00h      ;
  47.         int   21h           ; выход!
  48. ;-----------------------------------------------------
  49. hex2asc:                 ; Функция переводит числа в символы
  50.    pushad                ; Вход:  EАХ = число, EBX = система счисления
  51.    xor   ecx,ecx         ; Выход: на экране
  52. isDiv:                   ;
  53.    xor   edx,edx         ;
  54.    div   ebx             ;
  55.    push  edx             ;
  56.    inc   ecx             ;
  57.    or    eax,eax         ;
  58.    jnz   isDiv           ;
  59. isOut:                   ;
  60.    pop   eax             ;
  61.    cmp   al,9            ;
  62.    jle   noHex           ;
  63.    add   al,7            ;
  64. noHex:                   ;
  65.    add   al,30h          ;
  66.    int   29h             ;
  67.    loop  isOut           ;
  68.    popad                 ;
  69. ret                      ;

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


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

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

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

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

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

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