Уравнение на ассемблере 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Решение задачи: «Уравнение на ассемблере 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