Вычислить: D = (A*B)-С; E = (C/B)+A - Assembler

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

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

A (integer), B (integer), C (longint). Вычислить: D = (A*B)-С; E = (C/B)+A.

Решение задачи: «Вычислить: D = (A*B)-С; E = (C/B)+A»

textual
Листинг программы
.model small
 
.stack 100h
 
.data
 
        A       dw      1234
        B       dw      -5678
        C       dd      -75386
 
        D       dd      ?
        E       dw      ?
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        mov     ax,     A
        imul    word ptr B
        sub     ax,     word ptr C
        sbb     dx,     word ptr C+2
        mov     word ptr D,     ax
        mov     word ptr D+2,   dx
 
        mov     ax,     word ptr C
        mov     dx,     word ptr C+2
        idiv    word ptr B
        add     ax,     A
        mov     E,      ax
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

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

  1. Устанавливаем сегмент данных на сегмент стека. .model small .stack 100h
  2. Определяем переменные. .data A dw 1234 B dw -5678 C dd -75386 D dd ? E dw ?
  3. Код программы. .code main proc mov ax, @data mov ds, ax
  4. Вычисляем D = (A*B)-C. mov ax, A imul word ptr B sub ax, word ptr C sbb dx, word ptr C+2 mov word ptr D, ax mov word ptr D+2, dx
  5. Вычисляем E = (C/B)+A. mov ax, C mov dx, C+2 idiv word ptr B add ax, A mov E, ax
  6. Завершаем программу. mov ax, 4C00h int 21h main endp end

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


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

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

10   голосов , оценка 4.1 из 5
Похожие ответы