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

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

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

title word  ; z=(x-y)*((x+y)/2)
 
dat1 segment
 
x dw 8000
y dw 6000
c dw 2
z dw ?
 
dat1 endS

cod1 segment
 
assume cs:cod1, ds:dat1
 
start1: mov ax, dat1
                                 mov ds, ax
                                 xor ax, ax

                                 mov ax, x
                                 sub ax, y   ;x-y
                                 mov bx, ax  ;x-y

                                 mov ax, x
                                 add ax, y  ; x+y
                                 mov dx,0

                                 div c; ((x+y)/2)
                                 mul bx; (x-y)*((x+y)/2)
                                 mov z, ax
                                 mov z+2, dx

                                 mov ah,4Ch
 
                                 int 21h
                                       cod1 endS
 
                                       end Start1
Я сделал для dw, помогите пожалуйста переделать под db, зарание спасибо!

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

textual
Листинг программы
title word  ;z=(x-y)*((x+y)/2)
 
dat1 segment
    x db 8
    y db 6
    c db 2
    z dw ? 
dat1 endS
 
stk1 segment
    db 256 dup(?)
stk1 ends
                                     
cod1 segment
assume cs:cod1,ds:dat1,ss:stk1
start: 
    mov ax,dat1
    mov ds,ax
 
    mov al,x
    sub al,y    ;x-y
    mov bl,al   ;x-y
 
    mov al,x
    add al,y    ;x+y
    cbw         
 
    idiv c      ;(x+y)/2
    
    imul bl     ;(x-y)*((x+y)/2)
    
    mov byte ptr [z],al
    mov byte ptr [z+2],ah
       
 
    mov ah,4Ch
    int 21h
cod1 endS                              
end start

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


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

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

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