Обнуляются переменные - Assembler

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

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

Есть код на ассемблере, вычисляющий (b*2+c/25)/(a+a/b-1) a-aaaS, b-bbbS, c-cccS, dddS-значение выражения Если a=6,b=3,c=50 программа выводит dddS=1,znam=7,chis=0 вместо chis=8 Если a=0,b=-1,c=-25 программа выводит znam=-1, и chis=0,dddS=0 вместо chis=-3,dddS=3 Как я понял это не связано с невереными вычислениями, переменные просто обнуляются.
.MODEL Large,C
    .data
    Extrn   aaaS:word,bbbS:word,cccS:word,dddS:dword,chis:dword,znam:dword
    dop dw ?
    .code
    .386
    Public  ASM_SW
ASM_SW   proc    far
 
    mov ax,2                     ;Вычисление числителя
    imul bbbS
    mov word ptr chis,ax
    mov word ptr chis+2,dx
    mov ax,cccS
    cwd
    mov dop,25
    idiv dop
    cwd
    add word ptr chis,ax
    adc word ptr chis+2,dx
 
    mov ax,aaaS               ;Вычисление знаменателя
    cwd
    mov word ptr znam,ax
    mov word ptr znam+2,dx
    mov ax,bbbS
    mov dop,ax
    mov ax,aaaS
    cwd
    idiv dop
    cwd
    add word ptr znam,ax
    adc word ptr znam+2,dx
    sub word ptr znam,1
 
    mov ax,word ptr chis    ;Деление числителя на знаменатель
    mov dx,word ptr chis+2
    cdq
    idiv znam
    mov dddS,eax
 
    ret
ASM_SW  endp
    end

Решение задачи: «Обнуляются переменные»

textual
Листинг программы
mov dddS,eax

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


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

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

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