Арифметическое выражение - Assembler

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

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

Есть выражение X = A/B + C - D*E + K, где A - 4-байтовое; B,C - 2-байтовые; D,E - однобайтовые, К - константа 616h. Прошу подсказать где я ошибся.
dosseg
.model small
.stack 100h
.data
K equ 616h
A dd 12345678h
B dw 5678h
C dw 7654h
D db 10h
E db 77h
X dd 00h
R1 dw 00h
R2 dw 00h
.code
start:
  mov ax, @data
  mov ds, ax
  ; A/B
  mov ax, word ptr[A]
  mov dx, word ptr[A+2]
  div B
  mov R1, ax
  ;D*E
  xor ax, ax
  mov al, D
  mul E
  mov R2, ax
  ; C2-R2
  mov ax, C
  sbb ax, R2
  adc ax, K
  add ax, R1
  mov word ptr[X], ax
  mov ah, 4ch
  int 21h
  end start

Решение задачи: «Арифметическое выражение»

textual
Листинг программы
;A/B
mov ax,word ptr[A]
mov dx,word ptr[A+2]
idiv B
mov R1,ax
    
;D*E
mov al,D
imul E
mov R2,ax
    
;A/B+C
xor dx,dx
mov ax,R1
add ax,C
adc dx,0
    
;(A/B+C)-D*E
sub ax,R2
sbb dx,0
    
;(A/B+C)-D*E+K
add ax,K
adc dx,0
    
mov word ptr[X],ax
mov word ptr[X+2],dx

Объяснение кода листинга программы

  1. A и B — в коде это переменные, которые содержат числовые значения. Значение переменной A используется в операциях деления и сложения, а значение переменной B используется в операциях деления и вычитания.
  2. D и E — это также переменные, которые содержат числовые значения. Значение переменной D используется в операциях умножения и сложения, а значение переменной E используется в операциях умножения и вычитания.
  3. C — это константа, которая также представляет собой числовое значение. Она используется в операциях сложения и вычитания.
  4. K — это еще одна константа, которая также представляет собой числовое значение. Она используется в операциях сложения и вычитания.
  5. X — это переменная, которая используется для хранения результата вычислений. Значение переменной X представляет собой числовое значение.
  6. В коде используются следующие арифметические операции: деление (idiv), умножение (imul), сложение (add) и вычитание (sub).
  7. Порядок выполнения операций в коде следующий: сначала выполняются операции в скобках, затем операции умножения, затем операции деления, а затем операции сложения и вычитания.
  8. Код выполняет следующие действия:
    • Вычисляет значение выражения A/B.
    • Вычисляет значение выражения D*E.
    • Вычисляет значение выражения (A/B+C).
    • Вычисляет значение выражения (A/B+C)-D*E.
    • Вычисляет значение выражения (A/B+C)-D*E+K.
    • Сохраняет результат вычислений в переменной X.
  9. В целом, код выполняет последовательность арифметических операций для вычисления значения выражения (A/B+C)-D*E+K и сохраняет результат в переменной X.

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

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