Уравнение на ассемблере z=(x-y)*((x+y)/2) - Assembler

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

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

Листинг программы
  1. title word ; z=(x-y)*((x+y)/2)
  2. dat1 segment
  3. x dw 8000
  4. y dw 6000
  5. c dw 2
  6. z dw ?
  7. dat1 endS
  8.  
  9. cod1 segment
  10. assume cs:cod1, ds:dat1
  11. start1: mov ax, dat1
  12. mov ds, ax
  13. xor ax, ax
  14.  
  15. mov ax, x
  16. sub ax, y ;x-y
  17. mov bx, ax ;x-y
  18.  
  19. mov ax, x
  20. add ax, y ; x+y
  21. mov dx,0
  22.  
  23. div c; ((x+y)/2)
  24. mul bx; (x-y)*((x+y)/2)
  25. mov z, ax
  26. mov z+2, dx
  27.  
  28. mov ah,4Ch
  29. int 21h
  30. cod1 endS
  31. end Start1
Я сделал для dw, помогите пожалуйста переделать под db, зарание спасибо!

Решение задачи: «Уравнение на ассемблере z=(x-y)*((x+y)/2)»

textual
Листинг программы
  1. title word  ;z=(x-y)*((x+y)/2)
  2.  
  3. dat1 segment
  4.     x db 8
  5.     y db 6
  6.     c db 2
  7.     z dw ?
  8. dat1 endS
  9.  
  10. stk1 segment
  11.     db 256 dup(?)
  12. stk1 ends
  13.                                      
  14. cod1 segment
  15. assume cs:cod1,ds:dat1,ss:stk1
  16. start:
  17.     mov ax,dat1
  18.     mov ds,ax
  19.  
  20.     mov al,x
  21.     sub al,y    ;x-y
  22.     mov bl,al   ;x-y
  23.  
  24.     mov al,x
  25.     add al,y    ;x+y
  26.     cbw        
  27.  
  28.     idiv c      ;(x+y)/2
  29.    
  30.     imul bl     ;(x-y)*((x+y)/2)
  31.    
  32.     mov byte ptr [z],al
  33.     mov byte ptr [z+2],ah
  34.        
  35.  
  36.     mov ah,4Ch
  37.     int 21h
  38. cod1 endS                              
  39. end start

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


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

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

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

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

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

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